फोरट्रान में एक ऑक्ट्री कोड


10

मैं वैज्ञानिक कंप्यूटिंग में नया हूँ। मैं एक फोरट्रान (अधिमानतः f90) एक ऑक्ट्री के कार्यान्वयन की तलाश में हूं।

मेरी समस्या के लिए एक ऑक्ट्री की आवश्यकता होती है जो मेरे डोमेन को तब तक विभाजित करती है जब तक कि कुछ एन कणों (या स्रोतों से अधिक नहीं होता है जहां मुझे घनत्व मूल्य पता होता है जिसे किसी बॉक्स में समीकरण को लाप्लास समीकरण को हल करने के लिए एक अभिन्न समीकरण विधि में प्लग किया जा सकता है)।

सभी मैं पा सकता था यह C ++ कार्यान्वयन था । मैं जानना चाहता हूं कि क्या पहले से मौजूद फोरट्रान लाइब्रेरी हैं जिनका मैं उपयोग कर सकता हूं।

इसके अलावा, फोरट्रान में ऑक्ट्री कार्यान्वयन पर अच्छे पेपर की सिफारिश की जा सकती है ताकि कम्प्यूटेशनल बॉक्स पर तेजी से अभिन्न समीकरण विधियों को लागू करना आसान हो जाए, सराहना की जाएगी!


BoxLib का प्रयास करें। मैनुअल के अनुसार शुद्ध फोरट्रान 90 संस्करण है। Ccse.lbl.gov/BoxLib/BoxLibUsersGuide.pdf
stali

जवाबों:


9

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

Iso_c_binding का उपयोग करने की जानकारी के लिए, मैंने यहाँ कुछ जानकारी लिखी है:

http://fortran90.org/src/best-practices.html#interfacing-with-c

यह विशेष जानकारी सी। से फोरट्रान को बुलाने के लिए है। मैं देख सकता हूं कि मुझे इसे अपडेट करना चाहिए। यहाँ मेरा कोड है जहाँ मैं सी + लाइब्रेरी को फोरट्रान से कहता हूं, पहला लिंक सरल सी ड्राइवर है, दूसरा लिंक एक फोरट्रान इंटरफ़ेस है, और फिर मैं इसे किसी अन्य फोरट्रान सबरूटीन की तरह कहता हूं:

https://github.com/certik/hfsolver/blob/master/src/qc_libint.cpp

https://github.com/certik/hfsolver/blob/master/src/qc.f90


6

आप फोरट्रान का उपयोग करने के लिए बहुत तैयार हैं। ऑक्ट्रेसेस, जब कुशलता से लागू किए जाते हैं, बल्कि जटिल डेटा संरचनाएं होती हैं और जैसे, प्रोग्रामिंग भाषाओं के लिए बेहतर अनुकूल होती हैं, जिनके लिए इसके लिए अधिक समर्थन होता है, जैसे कि C / C ++। C / C ++ में बहुत उच्च गुणवत्ता वाले कार्यान्वयन हैं जो आप उपयोग कर सकते हैं।


आपके उत्तर के लिए धन्यवाद! लेकिन, मैं जिस तेजी से अभिन्न तरीके का उपयोग कर रहा हूं वह फोरट्रान में लिखा गया है। फोरट्रान में ऑक्ट्री कोड भी लिखना स्वाभाविक होगा।
रिवाइंडेल

कौन से तेज़ अभिन्न तरीके? वे ज्यादातर सभी उच्च स्तरीय भाषाओं में लिपटे हुए हैं, जो विशेष रूप से ओक्ट्रीस को भी लपेटते हैं। । ।
मेवप्लप

C की तुलना में (आधुनिक) Fortran में कुशल ऑक्ट्री कार्यान्वयन के लिए कौन सा समर्थन गायब है? केवल वास्तविक नकारात्मक पहलू मुझे पता है कि अहस्ताक्षरित पूर्णांक गायब हैं, ताकि आपको स्पष्ट रूप से कुछ बिटवाइज़ ऑपरेशन लिखना पड़े।
जनीस टेनिसेन

@JannisTeunissen - ऐसा नहीं है कि फोरट्रान 200x में जटिल डेटा संरचनाएँ बनाने के तरीके नहीं हैं, यह कितना आसान है (या नहीं) के बारे में अधिक है। सी ++, उदाहरण के लिए, है std::map, std::multimap, std::vector, std::sort, और इतने पर और बहुत आगे है, अंतर्निहित डेटा प्रकार के सभी सामान्य रूप से तो उपलब्ध स्वतंत्र संग्रहीत किया जा रहा। ऐसा कोई तर्क नहीं है कि आप यह सब फ़ोर्टन में आज भी कर सकते हैं, लेकिन इसमें उन दिनों और हफ्तों के काम की आवश्यकता होती है, जिन्हें आप अंतर्निहित डेटा संरचनाओं के बजाय, अपने एप्लिकेशन पर वास्तव में काम करने के लिए उपयोग कर सकते हैं।
वोल्फगैंग बैंगर्थ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.