क्या ओआरओपी के साथ आधुनिक फोरट्रान का उपयोग करने वाले ओपन-सोर्स वैज्ञानिक पुस्तकालय हैं?


14

मैंने एक विशेष PDE सिस्टम को हल करने के लिए फोरट्रान प्रोग्राम को कोड करने पर (तरल प्रवाह / दहन का वर्णन करते हुए) पिछले कुछ महीने बिताए हैं। मैंने नवीनतम-मानक फोरट्रान का उपयोग करने का प्रयास किया और नए ओआरओपी कैपबिलिटीज़ आधुनिक फोरट्रान के पास हैं। मैं अपने दम पर काम कर रहा हूं और मेरे पास कोई फोरट्रान गुरु नहीं है जो सवाल पूछने के लिए मेरे पास है, इसलिए मेरे लिए सीखने का एक शानदार तरीका अन्य पुस्तकालयों / सॉल्वरों को देखना होगा जो आधुनिक फोरट्रान का उपयोग करते हैं।

दुर्भाग्य से सभी फोरट्रान पुस्तकालयों से लगता है कि बहुत पुराने फोर्ट्रान, फोर्ट्रान 90 टॉप में लिखा गया है। इसलिए मुझे क्लास-डिज़ाइन और खुद से बातचीत के माध्यम से सोचना पड़ा। और मैं बिल्कुल भी सर्टिफिकेट में नहीं हूं कि मैंने इसे सही किया, खासकर अगर कोई पहले से नजरिए से देखता है। लेकिन शायद मैंने कुछ याद किया है और आधुनिक वैज्ञानिक पैकेज लिखे गए हैं यदि फोरट्रान और ओओपी का उपयोग कर रहे हैं?

वहाँ बहुत सारे अच्छे C ++ लाइब्रेरीज़ हैं जिनसे (OpenFOAM, deal.II और अधिक) और पायथन लाइब्रेरीज़ से भी सीख सकते हैं। उन भाषाओं में सामान्य रूप से एक बड़ा समुदाय होता है। अगर मैं उदाहरण के लिए सीखना चाहता हूं तो क्या फोरट्रान को छोड़ना और भाषा को बदलना बेहतर है?


जैक, ऐसा लगता है कि आपकी टिप्पणी बहुत बड़ी थी: "(इस टिप्पणी के बाकी हिस्सों को लंबाई की आवश्यकता को पूरा करना है।")। यह मेरे भीतर आशा जगाता है, इसलिए कृपया इसे संपादित करें ताकि हर कोई इसे पढ़ सके: डी।
तीये की

2
क्षमा करें, मेरी टिप्पणी भ्रामक थी, क्योंकि मैं आपके अंतिम प्रश्न का उत्तर दे रहा था। मेरा मतलब है कि, यदि आप पूर्णरूपेण पुस्तकालयों से उदाहरण के द्वारा आधुनिक OOP सीखना चाहते हैं, तो C ++ जाने का रास्ता है। माफ़ करना; मुझे किसी भी ओपन सोर्स बेस्ट-ब्रीड मॉडर्न फोरट्रान लाइब्रेरी की जानकारी नहीं है।
जैक पॉल्सन

6
मैं चेतावनी दूंगा कि C ++ पहले से ही वस्तु अभिविन्यास का एक मुड़ अवतार है, और कई पुस्तकालय आगे इसका दुरुपयोग करते हैं (किसी भी भाषा के लिए सच है)। मैं सहमत हूं कि फोरट्रान से आगे देखना महत्वपूर्ण है, लेकिन सी ++ से आगे भी देखना महत्वपूर्ण है। कई अलग-अलग प्रकार की भाषाओं में अवधारणाओं को व्यक्त करना सीखना (वस्तु-उन्मुख, सामान्य और कार्यात्मक; स्थिर और गतिशील) इसके लायक होगा भले ही आप अपने "वास्तविक" काम के लिए सी जैसी सरल भाषा में वापस आएं।
जेड ब्राउन

जवाबों:


10

आधुनिक सीएफडी कोड हैं जिन्हें आप देख सकते हैं। उदाहरण के लिए ...

तरलता : सामान्य उद्देश्य सीएफडी (एफई) कोड को गुणा करता है; यहां तक ​​कि पूरी तरह से असंरचित एएमआर भी

WRF : NCAR से अगली पीढ़ी के संख्यात्मक मॉडल मौसम की भविष्यवाणी प्रणाली

कोड सैटर्न : सामान्य उद्देश्य सीएफडी (एफवी) कोड; विकिपीडिया पर सूचीबद्ध कुछ विशेषताएं

संरचनात्मक विश्लेषण के लिए समान आधुनिक फोरट्रान कोड हैं।

लेकिन व्यापक कंपाइलर समर्थन की कमी के कारण वे पूर्ण F2003 क्षमताओं का उपयोग नहीं कर सकते हैं। अधिकांश नए कंपाइलर F2003 के बड़े हिस्सों का समर्थन करते हैं (ACM SIGPLAN फोरट्रान फ़ोरम पेपर्स देखें) लेकिन इसके लिए एक व्यापक उपयोगकर्ता आधार होने में समय लगता है। उदाहरण के लिए स्थिर डेबियन में GCC 4.4.5 है इसलिए आमतौर पर आपको अपने उपयोगकर्ताओं से कुछ भी बेहतर होने की उम्मीद नहीं करनी चाहिए (यानी, 4.5 / 4.6 / 4.7)।

जब F2003 संकलक व्यापक हो जाते हैं, तो आप F2003 क्षमताओं का उपयोग करने वाले lib / कोड देखेंगे।

अभी के लिए आप इस पुस्तक को डेमियन रूसन द्वारा देख सकते हैं कि ओओपी क्षमताओं का उपयोग कैसे करें।


यह सही है, F2003 हाल ही में पकड़ रहा है (अपनी खुद की लाइब्रेरी के लिए मैंने अधिकतम पोर्टेबिलिटी के लिए F95 के साथ छड़ी करने का फैसला किया है)। हम जल्द ही F2003 या यहां तक ​​कि F2008 में लिखे गए अधिक कोड देखेंगे।
ओंडे

बहुत अच्छी बात है। मुझे उम्मीद है कि हम आने वाले वर्षों में अधिक नए मानक कोड देखेंगे।
tiam

डेमियन रूसन फोरट्रिलिनो पर काम करता है , जो ट्रिलिनो प्रोजेक्ट के लिए एक आधुनिक फोरट्रान इंटरफ़ेस है ।
जेरेमी कोज़डन

7

यदि आप उदाहरण से सीखना चाहते हैं, तो मैं एक प्रोग्रामिंग चेस्टोमैथी साइट rosettacode की सिफारिश करूंगा । वहाँ आप कई उदाहरण समस्याओं को तुलनात्मक रूप से कुछ अलग-अलग भाषाओं में लिख सकते हैं।

हो सकता है कि आपके लिए और भी दिलचस्प फोरट्रान विकी होगा , और यहाँ फोरट्रान में ओओपी पर एक खंड है जो उपयोगी हो सकता है।

फोर्टन ठीक कर रहा है - चलो इस पर हार मत मानो!


मुझे फोरट्रान खुद पसंद हैं :)। मुझे पता है कि विकि वेबसाइट, Matcalds पुस्तकें बहुत अच्छी होने के साथ-साथ PGI के ट्यूटोरियल भी हैं। लेकिन कुछ वास्तविक सामग्री देखकर अच्छा लगेगा!
तीये की

डॉल्फिन सीएफडी कोड की कोडिंग शैली वास्तव में व्यापक और "आधुनिक फोरट्रान साक्षर" है। वहाँ आप कुछ डेटा संरचनाओं जैसे लिंक की गई सूचियों आदि के उदाहरण पा सकते हैं जो जानकारीपूर्ण हो सकती हैं, और अगर मुझे सही याद है तो थोड़ा बहुत ओओपी।
जॉन्‍ट्रा वोल्‍टा

4

मैं @JackPoulson की टिप्पणी से सहमत हूं। मुझे आधुनिक फोरट्रान में लिखे गए किसी भी ओपन सोर्स लाइब्रेरी की जानकारी नहीं है। तो उदाहरण के लिए सीखने के लिए C ++ पर स्विच करने की आवश्यकता के बारे में आपके विशिष्ट प्रश्न का उत्तर एक दुर्भाग्यपूर्ण है "हाँ।" लेकिन, स्पष्ट होने के लिए, मुझे पता है कि कम से कम एक पुस्तकालय मौजूद है जो लगभग विशेष रूप से आधुनिक फोरट्रान में ओओपी की ओर एक आँख से लिखा गया था, इसलिए यह संभव है (और सार्थक)। यह पुस्तकालय खुला स्रोत नहीं है, हालांकि, इसलिए यह आपको अपने सीखने के लक्ष्य को प्राप्त करने में मदद नहीं करेगा।

हालांकि, आप जो पहले से ही पूरा कर चुके हैं उसे फेंकने के लिए अनिच्छुक होने की संभावना है। यदि आप अभी भी इसके लिए फोरट्रान का पीछा करने में रुचि रखते हैं और विकास के विशिष्ट प्रश्न हैं, तो मैं आपको उन्हें StackOverflow पर पूछने के लिए प्रोत्साहित करूँगा। वहाँ कुछ उच्च कुशल फोरट्रान डेवलपर्स सक्रिय हैं जो मदद करने के लिए खुश हैं।


3

मैं इस एक पर थोड़ी देर कर रहा हूं, लेकिन आपके पास समानांतर रेखीय बीजगणित पुस्तकालय PSBLAS के संस्करण 3 पर एक नज़र होनी चाहिए , जो विरासत और बहुरूपता जैसे आधुनिक फोरट्रान सुविधाओं का पूरा लाभ उठाती है। यहां एक पेपर भी है जहां उन्होंने अपने पुराने संस्करणों के साथ उस संस्करण के प्रदर्शन की तुलना की, जो F90 / F95 से चिपका हुआ है। आश्चर्यजनक रूप से, गति अंतर कुल मिलाकर नगण्य था।


1

मुझे नहीं पता कि यह किस फोर्ट्रान बोली में लिखा गया है, लेकिन विलियम मिशेल का PHAML कोड है जो कि एक सामान्य उद्देश्य फोरट्रान FEM कोड है।

मैं यह स्वीकार करूंगा कि मैं फोरट्रान बनाम सी ++ की चर्चा में निष्पक्ष नहीं हूं, लेकिन मैं यह बताना चाहता हूं कि आप एक आधुनिक फोरट्रान-आधारित एफईएम कोड खोजने में कठिनाई करते हैं, जबकि एक ही समय में बहुत सारे सी ++ आधारित कोडों को ढूंढना बताता है। एक पूरे विचार के रूप में समुदाय में से कुछ जाने का रास्ता है। आप जिस भाषा को पसंद करते हैं और जिस भाषा से परिचित हैं, उसमें अपना खुद का कोड बनाने की कोशिश में बेशक कुछ भी गलत नहीं है, लेकिन आपका संक्षिप्त सर्वेक्षण आपको पहले ही दिखाता है कि आप एक द्वीप का निर्माण कर रहे हैं। आप इसे ध्यान में रखना चाह सकते हैं।


-1

वहाँ ffr इंजीनियरिंग द्वारा खुला स्रोत फोरट्रान पुस्तकालय है जो oop 2003 सुविधाओं का उपयोग करता है


1
SciComp में आपका स्वागत है! आपका उत्तर वास्तव में उपयोगी नहीं है क्योंकि आप यह वर्णन नहीं करते हैं कि) forDat क्या करता है और b) जो OOP forDat सुविधाओं का उपयोग करता है। आप यहां एक अवसर भी याद कर रहे हैं, क्योंकि forDat के डेवलपर (जिसे आपको प्रकट करना चाहिए, वैसे, scicomp.stackexchange.com/help/behavior देखें ), आप यह भी उल्लेख कर सकते हैं कि forDat अपनी सुविधाओं का उपयोग क्यों कर रहा है।
क्रिश्चियन क्लैसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.