मेरे पीएचडी थीसिस में केस स्टडीज की आवश्यकता है कि मेरे पास CHEMKIN-II में फोरट्रान सबरूटीन्स के अंतराल एक्सटेंशन हैं (लिंक के लिए माफी; यह सबसे अच्छा है जिसे मैं सैंडिया नेशनल लेबोरेटरी द्वारा वितरित किए गए पैकेज के लिए खोज सकता हूं)। CHEMKIN-II एक रसायन विज्ञान पैकेज है जिसका उपयोग दहन रसायन विज्ञान में किया जाता है; चूंकि यह दहन में उपयोग किया जाने वाला मानक पैकेज है, इसलिए मैं वहां से अलग पैकेज का उपयोग नहीं कर सकता (या बल्कि वास्तव में पसंद नहीं करूंगा)।
आवश्यक अंतराल एक्सटेंशन प्राप्त करने के लिए, मैं इन-हाउस नामक एक उपकरण विकसित कर रहा हूं जिसे DAEPACK कहा जाता है। पुराने बायनेरिज़ जो मैंने CHEMKIN-II सबरूटीन्स के आवश्यक अंतराल एक्सटेंशन को उत्पन्न करने में सक्षम होने के लिए उपयोग किया है जो मुझे एक 32-बिट OS पर (कुछ समय पहले 2.95 gcc के लिए libstdc के संस्करण के साथ), लेकिन तब से बाहर गिर गया है तारीख के लिए, और उपयोग करने के लिए एक जबरदस्त प्रक्रिया होगी (क्योंकि मुझे मेरे द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर के हर दूसरे टुकड़े के 32-बिट संस्करण खोजने होंगे)। इस पैकेज का स्रोत कोड भी मालिकाना है, लेकिन चूंकि यह मूल रूप से MIT में विकसित किया गया था, और मैं MIT में काम करता हूं, इसलिए मैं DAEPACK के लिए स्रोत कोड प्राप्त करने में सक्षम था (बहुत प्रयास के बाद)। मेरे पास मौजूद स्रोत कोड का उपयोग करते हुए, मैं लिनक्स के 64-बिट संस्करणों और libstdc के संस्करणों के साथ संगत DAEPACK के एक संस्करण को संकलित करने में सक्षम था। Gxx 4.xx हालांकि, यह स्रोत कोड, जिस पर मुझे संदेह है, पुराना है, एक निष्पादन योग्य में संकलित करता है जो मेरी थीसिस को पूरा करने के लिए अंतराल विस्तार कोड को सफलतापूर्वक उत्पन्न नहीं करता है। मैंने स्रोत कोड को ठीक करने में उसकी सहायता प्राप्त करने के प्रयास में डेवलपर से संपर्क किया है, लेकिन डेवलपर के साथ पिछले संपर्क से, मुझे पता है कि स्रोत कोड को ठीक करने में उसे समय लगेगा, यदि वह ऐसा करता है।
यहां बड़ी समस्या है: मेरे पास स्नातक होने तक 6 महीने बाकी हैं क्योंकि मैं फंडिंग से बाहर हूं। मैं अपने पीएचडी थीसिस को सफलतापूर्वक पूरा करने के लिए डेवलपर पर इतना जल्दी भरोसा नहीं कर सकता कि मैं अपने पीएचडी थीसिस को सफलतापूर्वक पूरा कर सकूं, जहां आप लोग आते हैं।
मुझे एक पैकेज की आवश्यकता है जो निम्नलिखित कार्य करे:
- अंतराल एक्सटेंशन, टेलर मॉडल (अंतराल अंकगणित का उपयोग करके), और लगभग मनमाना फोरट्रान 77 कोड के डेरिवेटिव उत्पन्न करता है; मुझे लगता है कि केवल संरचनाएं जिन्हें DAEPACK द्वारा पार्स नहीं किया गया है,
DO
लूप औरIF
स्टेटमेंट हैं। चूंकि मुझे टेलर मॉडल की आवश्यकता है, इसलिए कोड में स्वचालित भेदभाव (AD) क्षमता भी होनी चाहिए। - फोरट्रान 77 कोड के स्रोत-से-स्रोत अनुवाद द्वारा इन अंतराल एक्सटेंशन और टेलर मॉडल उत्पन्न करता है (यानी, यह अंतर कोड एक्सटेंशन और टेलर मॉडल की गणना करने वाले स्रोत कोड को उत्पन्न करने के लिए एक संकलक की तरह स्रोत कोड को पार्स करता है)।
एक चुटकी में, मैं सॉफ्टवेयर का उपयोग कर सकता हूं जो उपरोक्त दो चीजें फोरट्रान 77 कोड के बजाय सी कोड में करता है, और फिर सब कुछ गुजरता है f2c
। मैं वास्तव में इसे इस तरह से नहीं करना पसंद करूंगा, क्योंकि मुझे नहीं पता कि सब कुछ गुजर रहा है या नहीं f2c
, यहां तक कि काम भी नहीं करेगा, लेकिन मैं बहुत हताश हूं।
क्या आप लोग एक हताश पीएचडी छात्र की मदद कर सकते हैं?
कुछ संभावित सुझावों का अनुमान लगाने के लिए, यहां ऐसे दृष्टिकोण हैं जो मेरे लिए काम नहीं करेंगे, समय की कमी को देखते हुए:
- काम करने के लिए DAEPACK प्राप्त करने के लिए कठिन प्रयास करना; मेरा विश्वास करो, मैंने कोशिश की है। और मैं डेवलपर को बार-बार टोक रहा हूं।
- वे उपकरण जो ऑब्जेक्ट-ओरिएंटेड (या ऑब्जेक्ट-ओरिएंटेड-जैसे) दृष्टिकोणों का उपयोग करके अंतराल एक्सटेंशन या टेलर मॉडल की गणना करते हैं। मेरे पास नए प्रकारों के साथ CHEMKIN-II (या किसी अन्य इसी तरह की बड़ी लाइब्रेरी) को फिर से बनाने का समय नहीं है; यह कितना बड़ा है।
- फोरट्रान 77/90 या C. के अलावा किसी भी भाषा का उपयोग करना CHEMKIN-II कोड फोरट्रान में है। मैं इसे C का उपयोग करके परिवर्तित कर सकता हूं
f2c
, या यदि आवश्यकता हो, तो CHEMKIN-II के सैंडिया-आधारित क्लोन का उपयोग करें जिसे TChem कहा जाता है। मेरे पुराने परिणाम CHEMKIN-II का उपयोग करते हैं; मेरे नए परिणामों को मेरे पुराने परिणामों को फिर से भरना चाहिए, और मुझे पहले से ही पता है कि कैंटरा केस-स्टडी और यूनिट परीक्षण के आधार पर CHEMKIN-II क्या दोहराएगा। इसके अलावा, स्नातक छात्र जो मुझसे पहले आया था, विशेष रूप से अच्छी तरह से काम करने के लिए अंतराल अंकगणित प्राप्त करने के लिए CHEMKIN-II स्रोत कोड में कुछ काला जादू किया। मेरे लिए किसी अन्य पैकेज में इसे दोहराना मुश्किल होगा।