2010-09-22 13 views
6

से वैज्ञानिक सिमुलेशन पद्धति को लागू करते समय सर्वोत्तम प्रथाएं मैं सी/सी ++ में कुछ नए सिमुलेशन पैकेज को विकसित करने के बारे में सोच रहा हूं। खरोंच से शुरू करते समय आपको क्या लगता है कि सबसे अच्छा अभ्यास होगा? क्या आप कुछ ग्रंथसूची की सिफारिश कर सकते हैं?वैज्ञानिक सिमुलेशन (भौतिकी) के क्षेत्र में स्क्रैच

धन्यवाद

Numerical recipes: the art of scientific computing साथ

उत्तर

3

यहां कुछ पढ़ने की सूची है। सुनिश्चित नहीं है कि यह आपके लिए बहुत बुनियादी है:

Writing Scientific Software: मूलभूत 'सी ++ में प्रोग्राम सीखना' या जो भी हो, पर एक अच्छा अनुवर्ती।

Parallel Scientific Computing in C++ and MPI: यदि आप अपने आवेदन को समानांतर करने की योजना नहीं बना रहे हैं, तो आपको होना चाहिए।

Engineering and Scientific C++: एक अच्छा, डोमेन-विशिष्ट, सी ++ में प्रोग्रामिंग के लिए परिचय। भाषा विवरण में थोड़ा सा दिनांक है, लेकिन समग्र दृष्टिकोण वृद्ध नहीं है।

मेरा सुझाव है कि आप प्रश्नों के SO उत्तरों के माध्यम से पढ़ते हैं जैसे कि 'मुझे एक बड़ा सी ++ प्रोग्राम कैसे डिजाइन करना चाहिए?' अन्य पुस्तकों पर सलाह के लिए जो ब्याज की हो सकती हैं।

सर्वोत्तम प्रथाओं के रूप में, यहां कुछ सुझाव दिए गए हैं।

  • जैसा कि मैंने ऊपर लिखा है, आप शुरू से योजना बना होना चाहिए एक समानांतर कार्यक्रम विकसित करने के लिए: एक बार फिर, मैं अपने प्रारंभिक बिंदु के बारे में सुनिश्चित इसलिए इस में से कुछ भी बुनियादी हो सकता है नहीं कर रहा हूँ। यदि क्लस्टर पर संदेश-पासिंग आपके कप का कप नहीं है, तो कम से कम एक बहु-कोर डेस्कटॉप के लिए साझा मेमोरी प्रोग्रामिंग पर विचार करें। OpenMP जांच के लायक है।
  • अपने आप को मौजूदा काम से परिचित बनाएं। BOOST पुस्तकालय शायद आवश्यक हैं। जबकि मैं आपकी खुद की रोलिंग के इरादे की सराहना करता हूं, मौजूदा अच्छी तरह से स्थापित संख्यात्मक पुस्तकालयों जैसे कि बीएलएएस और लैपैक को अनदेखा न करें, जो आपको Netlib पर मिलेगा। आपके विकास प्लेटफ़ॉर्म और टूलसेट के आधार पर आप उन्हें पहले ही इंस्टॉल कर सकते हैं।
  • यदि आप एक वैज्ञानिक पृष्ठभूमि से आ रहे हैं, तो आप सॉफ्टवेयर इंजीनियरिंग में अपने ज्ञान और कौशल में सुधार करना चाह सकते हैं। मामले जैसे: स्रोत कोड नियंत्रण; परिक्षण; कोड प्रोफाइलिंग और अनुकूलन; आपके कंपाइलर क्या कर सकते हैं के बारे में गहरा ज्ञान। मेरे अनुभव में कई कम्प्यूटेशनल वैज्ञानिकों के पास इन सभी चीजों में कमजोर पृष्ठभूमि है।
  • आपको वास्तव में कोडिंग के रूप में अपने कार्यक्रम को डिजाइन करने और परीक्षण करने के लिए जितना अधिक समय खर्च करने की योजना बनाना चाहिए। कोडिंग शुरू करने से पहले भी अपने आप पर काम करना आवश्यक है कि कार्रवाई की अच्छी योजना हो। शुरुआत में हर विवरण में इसे पूरा करने का कोई कारण नहीं है, लेकिन मानचित्र के बिना क्षेत्र में प्रवेश न करें।
  • आप भौतिक दुनिया के पहलू पर चुप हैं जो आप अनुकरण करना चाहते हैं। भौतिक सिमुलेशन के सभी प्रकारों में बहुत सारी पूर्व कला है, यदि आप थोड़ा अधिक विशिष्ट थे तो कुछ और विशिष्ट सुझाव प्रदान करने में सक्षम हो सकते हैं।
+0

हाय। आपके सहायक और व्यापक उत्तर के लिए बहुत बहुत धन्यवाद। आपके आखिरी बिंदु के बारे में, विचार कुछ नए आणविक गतिशीलता कोड विकसित करना है। यहां कुछ सलाह है? धन्यवाद – flow

+0

परमाणु गतिशीलता मेरे केन से परे है, लेकिन मुझे लगता है कि विकिपीडिया लेख में सॉफ़्टवेयर के कुछ पॉइंटर्स हैं। अगर आपको निरीक्षण के लिए ओपन सोर्स कोड नहीं मिल रहा है, तो मैं बहुत आश्चर्यचकित हूं, और साहित्य व्यापक है। –

1

प्रारंभ। एक सुंदर व्यापक टोम। हालांकि, दो चीजों को ध्यान में रखें:

  • इसमें सी ++ और फोरट्रान 90 कोड नमूने दोनों शामिल हैं।
  • का उपयोग करके अपने प्रोजेक्ट में कोड नमूने में से किसी भी का उपयोग करें, हालांकि - AFAIK वे कॉपीराइट किए गए हैं और उन्हें अलग से पुन: उपयोग के लिए लाइसेंस प्राप्त होना चाहिए।

फिर भी, यदि आपको शैक्षिक उद्देश्यों के लिए इसकी आवश्यकता है, तो यह पुस्तक अत्यधिक अनुशंसित पढ़ाई है।

+0

ठीक है, अगर आप ऐसा करने के लिए लाइसेंस के लिए भुगतान करते हैं तो निश्चित रूप से आप संख्यात्मक व्यंजनों से कोड का उपयोग कर सकते हैं। ऐसा लाइसेंस महंगा नहीं है। –

संबंधित मुद्दे