Modelica
मॉडलिका जटिल प्रणालियों के घटक-उन्मुख मॉडलिंग के लिए एक वस्तु-उन्मुख, घोषणात्मक, बहु-डोमेन मॉडलिंग भाषा है, उदाहरण के लिए, यांत्रिक, विद्युत, इलेक्ट्रॉनिक, हाइड्रोलिक, थर्मल, नियंत्रण, विद्युत शक्ति या प्रक्रिया-उन्मुख उप-घटक वाली प्रणालियाँ। मुफ्त मॉडलिका भाषा गैर-लाभकारी मॉडलिका एसोसिएशन द्वारा विकसित की गई है। मॉडलिका एसोसिएशन मुफ्त मॉडलिका मानक पुस्तकालय भी विकसित करता है जिसमें संस्करण 4.0.0 तक विभिन्न क्षेत्रों में लगभग 1400 सामान्य मॉडल घटक और 1200 कार्य शामिल हैं। जबकि मॉडलिका ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं जैसे सी + + या जावा से मिलती-जुलती है, यह दो महत्वपूर्ण मामलों में भिन्न है। सबसे पहले, मॉडलिका एक पारंपरिक प्रोग्रामिंग भाषा के बजाय एक मॉडलिंग भाषा है। मॉडलिका वर्गों को सामान्य अर्थों में संकलित नहीं किया जाता है, लेकिन उन्हें वस्तुओं में अनुवादित किया जाता है जिन्हें फिर एक अनुकरण इंजन द्वारा प्रयोग किया जाता है। सिमुलेशन इंजन भाषा द्वारा निर्दिष्ट नहीं है, हालांकि कुछ आवश्यक क्षमताओं को रेखांकित किया गया है। दूसरा, हालांकि वर्गों में प्रोग्रामिंग भाषाओं में कथनों या खंडों के समान एल्गोरिथमिक घटक हो सकते हैं, उनकी प्राथमिक सामग्री समीकरणों का एक समूह है। एक विशिष्ट असाइनमेंट स्टेटमेंट के विपरीत, जैसे कि x: = 2 + y; जहाँ स्टेटमेंट के बाएँ हाथ की तरफ दाएँ हाथ की तरफ की अभिव्यक्ति से गणना की गई मान दी जाती है, एक समीकरण में इसके दाएँ और बाएँ दोनों तरफ अभिव्यक्तियाँ हो सकती हैं, उदाहरण के लिए, x + y = 3 * z; समीकरण असाइनमेंट का वर्णन नहीं करते हैं बल्कि समानता का वर्णन करते हैं। मॉडलिका के संदर्भ में, समीकरणों में कोई पूर्व-परिभाषित कार्य-कारण नहीं है। सिमुलेशन इंजन समीकरणों को उनके निष्पादन के क्रम को निर्धारित करने के लिए प्रतीकात्मक रूप से हेरफेर कर सकता है (और आमतौर पर करना चाहिए) और समीकरण में कौन से घटक इनपुट हैं और कौन से आउटपुट हैं। मॉडलिका डिजाइन प्रयास सितंबर 1996 में हिल्डिंग एल्मक्विस्ट द्वारा शुरू किया गया था। इसका लक्ष्य तकनीकी प्रणालियों के मॉडलिंग के लिए एक वस्तु-उन्मुख भाषा विकसित करना था ताकि एक मानकीकृत प्रारूप में गतिशील प्रणाली मॉडल का पुनः उपयोग और आदान-प्रदान किया जा सके। मॉडलिका 1 हिल्डिंग एल्मक्विस्ट के पीएचडी थीसिस और मॉडलिंग भाषाओं एलन, डाइमोला, एन. एम. एफ. ऑब्जेक्टमैथ, ओमोला, सिडोप्स + और स्माइल के अनुभव पर आधारित है। हिल्डिंग एल्मक्विस्ट मॉडलिका के प्रमुख वास्तुकार हैं, लेकिन कई अन्य लोगों ने भी योगदान दिया है (मॉडलिका विनिर्देश में परिशिष्ट ई देखें)। सितंबर 1997 में, मॉडलिका विनिर्देशन का संस्करण 1 जारी किया गया था जो वाणिज्यिक डाइमोला सॉफ्टवेयर प्रणाली के भीतर एक प्रोटोटाइप कार्यान्वयन का आधार था। वर्ष 2000 में, गैर-लाभकारी मॉडलिका एसोसिएशन का गठन लगातार विकसित होने वाली मॉडलिका भाषा और मुफ्त मॉडलिका मानक पुस्तकालय के विकास का प्रबंधन करने के लिए किया गया था। उसी वर्ष, औद्योगिक अनुप्रयोगों में मॉडलिका का उपयोग शुरू हुआ। यह तालिका मॉडलिका विनिर्देशन इतिहास की समयरेखा प्रस्तुत करती हैः मॉडलिका के लिए कार्यान्वयन वाणिज्यिक फ्रंट-एंड में फ्रांसीसी कंपनी इमेजिन एसए (अब सीमेंस डिजिटल इंडस्ट्रीज सॉफ्टवेयर का हिस्सा) से एएमईएसआईएम, स्वीडिश कंपनी डायनासिम एबी (अब डसॉल्ट सिस्टम्स का हिस्सा) से डाइमोला, स्वीडिश कंपनी वोल्फ्रम मैथकोर एबी (अब वोल्फ्रम रिसर्च का हिस्सा) से वोल्फ्रम सिस्टममॉडलर (पूर्व में मैथमॉडलिका), जर्मन कंपनी ईएसआई आईटीआई जीएमबीएच से सिमुलेशनएक्स, कनाडाई कंपनी मेपलसॉफ्ट से मेपलसिम, JModelica.org (ओपन सोर्स, बंद) और स्वीडिश कंपनी मॉडलन एबी से मॉडलन इम्पैक्ट, और डसॉल्ट सिस्टम्स से सीएटीआईए सिस्टम शामिल हैं। ओपनमॉडेलिका एक ओपन-सोर्स मॉडलिका-आधारित मॉडलिंग और अनुकरण वातावरण है जिसका उद्देश्य औद्योगिक और शैक्षणिक उपयोग के लिए है। इसका दीर्घकालिक विकास एक गैर-लाभकारी संगठन-ओपन सोर्स मॉडलिका कंसोर्टियम (ओएसएमसी) द्वारा समर्थित है। ओपनमॉडेलिका प्रयास का लक्ष्य अनुसंधान, शिक्षण और औद्योगिक उपयोग के लिए द्विआधारी और स्रोत कोड रूप में वितरित मुफ्त सॉफ्टवेयर के आधार पर एक व्यापक ओपन सोर्स मॉडलिका मॉडलिंग, संकलन और अनुकरण वातावरण बनाना है। मुक्त अनुकरण वातावरण साइकोस घटक मॉडलिंग के लिए मॉडलिका के एक उपसमुच्चय का उपयोग करता है। मॉडलिका भाषा के एक बड़े हिस्से के लिए समर्थन वर्तमान में विकास के अधीन है। फिर भी, मॉडलिका भाषा से संबंधित सभी विभिन्न उपकरणों के बीच अभी भी कुछ असंगतता और अलग-अलग व्याख्या है। उदाहरण निम्नलिखित कोड टुकड़ा प्रथम क्रम प्रणाली () का एक बहुत ही सरल उदाहरण दिखाता हैः मॉडल प्रथम क्रम पैरामीटर वास्तविक सी = 1 "समय स्थिरांक"; वास्तविक एक्स (प्रारंभ = 10) "एक अज्ञात"; समीकरण डेर (एक्स) =-सी * एक्स "एक प्रथम क्रम अंतर समीकरण"; अंतिम प्रथम क्रम; निम्नलिखित कोड टुकड़ा एक त्रिकोणमितीय कार्य के दूसरे व्युत्पन्न की गणना करने के लिए एक उदाहरण दिखाता है, ओएमएसएचएल का उपयोग करते हुए, नीचे लिखे गए प्रोग्राम को विकसित करने के साधन के रूप में। मॉडल सेकंड _ डेरिवेटिव रियल एल; रियल जेड = साइन (डब्ल्यू * समय); रियल एम; पैरामीटर रियल डब्ल्यू = 1; समीकरण एल = डेर (जेड); एम = डेर (एल); एंड सेकंड _ डेरिवेटिव; इस उदाहरण के बारे में ध्यान देने योग्य दिलचस्प बातें 'पैरामीटर' क्वालीफायर हैं, जो इंगित करता है कि दिया गया चर समय-अपरिवर्तनीय है और 'डेर' ऑपरेटर, जो (प्रतीकात्मक रूप से) एक चर के समय व्युत्पन्न का प्रतिनिधित्व करता है। दस्तावेजीकरण स्ट्रिंग्स भी ध्यान देने योग्य हैं जो घोषणाओं और समीकरणों से जुड़े हो सकते हैं। मॉडलिका का मुख्य अनुप्रयोग क्षेत्र भौतिक प्रणालियों का प्रतिरूपण है। सबसे बुनियादी संरचना अवधारणाओं को विद्युत क्षेत्र से सरल उदाहरणों के हाथ में दिखाया गया हैः अंतर्निर्मित और उपयोगकर्ता व्युत्पन्न प्रकार मॉडलिका में चार अंतर्निर्मित प्रकार रियल, पूर्णांक, बूलियन और स्ट्रिंग हैं। आम तौर पर, उपयोगकर्ता-परिभाषित प्रकार प्राप्त किए जाते हैं, भौतिक मात्रा, इकाई, नाममात्र मूल्यों और अन्य विशेषताओं को संबद्ध करने के लिएः प्रकार वोल्टेज = वास्तविक (मात्रा = "विद्युत क्षमता", इकाई = "वी"); प्रकार करंट = वास्तविक (मात्रा = "विद्युत क्षमता", इकाई = "ए"); भौतिक अंतःक्रिया का वर्णन करने वाले संयोजक किसी घटक की अन्य घटकों के साथ अंतःक्रिया को भौतिक बंदरगाहों द्वारा परिभाषित किया जाता है, जिन्हें संयोजक कहा जाता है, उदाहरण के लिए, एक विद्युत पिन को संयोजक पिन "विद्युत पिन" वोल्टेज वी "पिन पर क्षमता" के रूप में परिभाषित किया जाता है; प्रवाह धारा i "घटक में प्रवाहित धारा"; अंतिम पिन; बंदरगाहों के बीच संबंध रेखाएँ खींचते समय, इसका अर्थ है कि "प्रवाह" उपसर्ग के बिना संबंधित संयोजक चर। प्रेरणा असीम रूप से छोटे कनेक्शन बिंदु पर प्रासंगिक संतुलन समीकरणों को स्वचालित रूप से पूरा करना है। एक बुनियादी मॉडल घटक को एक मॉडल द्वारा परिभाषित किया जाता है और इसमें ऐसे समीकरण होते हैं जो एक घोषणात्मक रूप में संयोजक चर के बीच संबंध का वर्णन करते हैं (यानी, गणना क्रम को निर्दिष्ट किए बिना): मॉडल कैपेसिटर पैरामीटर कैपेसिटेंस सी; वोल्टेज यू "पिन पी और पिन एन के बीच वोल्टेज ड्रॉप"; पिन पी, पिन एन; समीकरण 0 = pin_p.i + pin_n.i; यू = pin_p.v-pin_n.v; सी * डेर (यू) = pin_p.i; एंड कैपेसिटर; लक्ष्य यह है कि मॉडल घटकों का एक जुड़ा हुआ सेट अंतर, बीजगणितीय और असतत समीकरणों के एक समूह की ओर ले जाता है जहां अज्ञात की संख्या और पिन एन की संख्या होती है। मॉडलिका में, यह तथाकथित संतुलित मॉडल की आवश्यकता से प्राप्त किया जाता है। संतुलित मॉडल को परिभाषित करने के लिए पूर्ण नियम काफी जटिल हैं, और इन्हें खंड 4.7 से पढ़ा जा सकता है। हालांकि, अधिकांश मामलों के लिए, एक सरल नियम जारी किया जा सकता है, जो चर और समीकरणों को उसी तरह गिनता है जैसे अधिकांश अनुकरण उपकरण करते हैंः एक मॉडल तब संतुलित होता है जब इसके समीकरणों की संख्या इसके चर की संख्या के बराबर होती है। यह देखते हुए कि चर और समीकरणों को निम्नलिखित नियम के अनुसार गिना जाना चाहिएः-> मॉडल समीकरणों की संख्या = मॉडल में परिभाषित समीकरणों की संख्या + बाहरी संयोजकों में प्रवाह चर की संख्या-> मॉडल चर की संख्या = मॉडल में परिभाषित चर की संख्या (भौतिक संयोजकों में चर सहित) ध्यान दें कि मानक इनपुट संयोजक (जैसे रियल इनपुट या पूर्णांक इनपुट) चर की गिनती में योगदान नहीं करते हैं क्योंकि उनके अंदर कोई नया चर परिभाषित नहीं है। इस नियम का कारण ऊपर परिभाषित संधारित्र के बारे में सोचकर समझा जा सकता है। इसके पिन में एक प्रवाह चर होता है, अर्थात। एक वर्तमान, प्रत्येक। जब हम इसकी जाँच करते हैं, तो यह कुछ भी नहीं से जुड़ा होता है। यह प्रत्येक पिन के लिए एक समीकरण pin.i=0 निर्धारित करने के अनुरूप है। यही कारण है कि हमें प्रत्येक प्रवाह चर के लिए एक समीकरण जोड़ना चाहिए। स्पष्ट रूप से उदाहरण को अन्य मामलों में विस्तारित किया जा सकता है, जिसमें अन्य प्रकार के प्रवाह चर शामिल हैं (जैसे। बल, टॉर्क, आदि)। जब हमारा संधारित्र अपने एक पिन के माध्यम से दूसरे (संतुलित) मॉडल से जुड़ा होता है, तो एक कनेक्शन समीकरण उत्पन्न होगा जो जुड़े हुए पिन के दो i = 0 समीकरणों को प्रतिस्थापित करेगा। चूँकि कनेक्शन समीकरण दो अदिश समीकरणों से मेल खाता है, इसलिए कनेक्शन ऑपरेशन संतुलित बड़े मॉडल (हमारे कैपेसिटर द्वारा गठित और जिस मॉडल से यह जुड़ा हुआ है) को छोड़ देगा। उपरोक्त कैपेसिटर मॉडल संतुलित है, क्योंकि समीकरणों की संख्या = 3 + 2 = 5 (प्रवाह चरः pin_p.i, pin_n.i, u) चर की संख्या = 5 (u, pin_p.u, pin_p.i, pin_n.u, pi_n.i) इस मॉडल के ओपनमॉडेलिका का उपयोग करके सत्यापन देता है, वास्तव में वर्ग कैपेसिटर में 5 समीकरण (ओं) और 5 चर (ओं) हैं। इनमें से 3 तुच्छ समीकरण हैं। एक अन्य उदाहरण, जिसमें इनपुट कनेक्टर और भौतिक कनेक्टर दोनों होते हैं, मॉडलिका मानक पुस्तकालय से निम्नलिखित घटक हैः मॉडल सिग्नल वोल्टेज "स्रोत वोल्टेज के रूप में इनपुट सिग्नल का उपयोग करते हुए सामान्य वोल्टेज स्रोत" Interfaces.PositivePin p; Interfaces.NegativePin n; Modelica.Blocks.Interfaces.RealInput v (इकाई = "V") "इनपुट सिग्नल के रूप में पिन p और n (= p. v-n. v) के बीच वोल्टेज"; SI.Current i "पिन p से पिन n तक बहने वाली धारा"; समीकरण v = p. v-n. v; 0 = p. i + n. i; i = p. i; एंड सिग्नल वोल्टेज; घटक सिग्नल वोल्टेज समीकरणों की संख्या = 3 + 2 = 5 से संतुलित है। इनमें से 4 तुच्छ समीकरण हैं। पदानुक्रमित मॉडल एक पदानुक्रमित मॉडल को बुनियादी मॉडल से बनाया जाता है, बुनियादी मॉडल को तत्काल करके, मॉडल मापदंडों के लिए उपयुक्त मूल्य प्रदान करके और मॉडल कनेक्टरों को जोड़कर। एक विशिष्ट उदाहरण निम्नलिखित विद्युत परिपथ हैः मॉडल सर्किट कैपेसिटर सी1 (सी = 1ई-4) "उपरोक्त मॉडल से एक कैपेसिटर उदाहरण"; कैपेसिटर सी2 (सी = 1ई-5) "उपरोक्त मॉडल से एक कैपेसिटर उदाहरण"; समीकरण कनेक्ट (C1.pin_p, C2.pin_n);. अंतिम परिपथ; भाषा तत्व एनोटेशन (.) के माध्यम से, परिभाषाओं को एक ऐसे मॉडल में जोड़ा जा सकता है जिसका अनुकरण पर कोई प्रभाव नहीं पड़ता है। एनोटेशन का उपयोग ग्राफिकल लेआउट, प्रलेखन और संस्करण जानकारी को परिभाषित करने के लिए किया जाता है। ग्राफिकल एनोटेशन के एक बुनियादी सेट को यह सुनिश्चित करने के लिए मानकीकृत किया गया है कि विभिन्न मॉडलिका उपकरणों में मॉडल की ग्राफिकल उपस्थिति और लेआउट समान है। एप्लीकेशन मॉडलिका को डोमेन तटस्थ होने के लिए डिज़ाइन किया गया है और इसके परिणामस्वरूप, इसका उपयोग विभिन्न प्रकार के अनुप्रयोगों में किया जाता है, जैसे कि द्रव प्रणाली (उदाहरण के लिए, भाप बिजली उत्पादन, हाइड्रोलिक्स, आदि)। ), मोटर वाहन अनुप्रयोग (विशेष रूप से पावरट्रेन) और यांत्रिक प्रणालियाँ (उदाहरण के लिए, बहु-शरीर प्रणालियाँ, मेकाट्रॉनिक्स, आदि)। मोटर वाहन क्षेत्र में, कई प्रमुख मोटर वाहन ओ. ई. एम. मॉडलिका का उपयोग कर रहे हैं। इनमें फोर्ड, जनरल मोटर्स, टोयोटा, बीएमडब्ल्यू और डेमलर शामिल हैं। मॉडलिका का उपयोग थर्मो-फ्लूइड और ऊर्जा प्रणालियों के अनुकरण के लिए भी तेजी से किया जा रहा है। मॉडलिका (अकौसल, ऑब्जेक्ट-ओरिएंटेड, डोमेन न्यूट्रल) की विशेषताएँ इसे सिस्टम-लेवल सिमुलेशन के लिए अच्छी तरह से अनुकूल बनाती हैं, एक ऐसा डोमेन जहाँ मॉडलिका अब अच्छी तरह से स्थापित है। ए. एम. ई. एस. एम. ए. एम. पी. एल. ए. पी. मॉनिटर ए. एस. सी. ई. एन. डी. डोमेन-विशिष्ट मॉडलिंग डी. एस. एम. डाइमोला इकोसिमप्रोः निरंतर और असतत मॉडलिंग और सिमुलेशन सॉफ्टवेयर ई. एम. एस. ओ. जी. ए. एम. एस. JModelica.org ओपनमॉडेलिका मेपलसिम मैटलैब सिमुलेशनएक्स सिमुलिंक वोल्फ्राम सिस्टममॉडलर साइलैब/एक्सकोस केप्लर (टॉलेमी) नोट्स बाहरी लिंक मॉडलिका भाषा विनिर्देश संस्करण 3.6 मॉडलिका एसोसिएशन, गैर-लाभकारी मॉडलिका एसोसिएशन (मॉडलिका विकसित करना) मॉडलिका का मुख पृष्ठ उदाहरण द्वारा मॉडलिका सीखने के लिए एक मुफ्त इंटरैक्टिव एच. टी. एम. एल. पुस्तक, माइकल टिलर द्वारा मॉडलिका के साथ शारीरिक मॉडलिंग का परिचय,