Modelica
ماڈلکا پیچیدہ نظاموں کے اجزاء پر مبنی ماڈلنگ کے لیے ایک آبجیکٹ پر مبنی، اعلانیہ، کثیر ڈومین ماڈلنگ زبان ہے، مثال کے طور پر، میکانی، برقی، الیکٹرانک، ہائیڈرولک، تھرمل، کنٹرول، برقی طاقت یا عمل پر مبنی ذیلی اجزاء پر مشتمل نظام۔ مفت ماڈلکا زبان غیر منافع بخش ماڈلکا ایسوسی ایشن نے تیار کی ہے۔ ماڈلکا ایسوسی ایشن مفت ماڈلکا اسٹینڈرڈ لائبریری بھی تیار کرتی ہے جس میں ورژن 4.0 تک مختلف ڈومینز میں تقریبا 1400 عام ماڈل اجزاء اور 1200 افعال شامل ہیں۔ اگرچہ ماڈلکا آبجیکٹ پر مبنی پروگرامنگ زبانوں سے مشابہت رکھتی ہے، جیسے کہ C + + یا جاوا، یہ دو اہم معاملات میں مختلف ہے۔ سب سے پہلے، ماڈلکا ایک روایتی پروگرامنگ زبان کے بجائے ایک ماڈلنگ زبان ہے۔ ماڈلکا کلاسیں معمول کے لحاظ سے مرتب نہیں کی جاتی ہیں، لیکن ان کا ترجمہ اشیاء میں کیا جاتا ہے جن کا استعمال پھر تخروپن انجن کے ذریعے کیا جاتا ہے۔ تخروپن انجن کی وضاحت زبان کے ذریعہ نہیں کی جاتی ہے، حالانکہ کچھ مطلوبہ صلاحیتوں کا خاکہ پیش کیا گیا ہے۔ دوسرا، اگرچہ کلاسوں میں الگورتھمک اجزاء ہو سکتے ہیں جو پروگرامنگ زبانوں میں بیانات یا بلاکس سے ملتے جلتے ہیں، لیکن ان کا بنیادی مواد مساوات کا ایک مجموعہ ہے۔ ایک عام تفویض بیان کے برعکس، جیسے کہ x: = 2 + y ؛ جہاں بیان کے بائیں ہاتھ کی طرف دائیں ہاتھ کی طرف کے اظہار سے شمار کردہ قدر تفویض کی جاتی ہے، ایک مساوات میں اس کے دائیں اور بائیں دونوں طرف تاثرات ہو سکتے ہیں، مثال کے طور پر، x + y = 3 * z ؛ مساوات تفویض کو بیان نہیں کرتی بلکہ مساوات کو بیان کرتی ہیں۔ ماڈلکا کے لحاظ سے، مساوات کی کوئی پہلے سے متعین وجہ نہیں ہوتی ہے۔ تخروپن انجن مساوات کو علامتی طور پر ہیرا پھیری کر سکتا ہے (اور عام طور پر کرنا چاہیے) تاکہ ان کے نفاذ کی ترتیب کا تعین کیا جا سکے اور مساوات میں کون سے اجزاء ان پٹ ہیں اور کون سے آؤٹ پٹ ہیں۔ ماڈلکا ڈیزائن کی کوشش کا آغاز ستمبر 1996 میں ہلڈنگ ایلمکوسٹ نے کیا تھا۔ اس کا مقصد تکنیکی نظاموں کے ماڈلنگ کے لیے ایک آبجیکٹ پر مبنی زبان تیار کرنا تھا تاکہ معیاری شکل میں متحرک نظام کے نمونوں کا دوبارہ استعمال اور تبادلہ کیا جا سکے۔ ماڈلکا 1 ہلڈنگ ایلمکوسٹ کے پی ایچ ڈی مقالے اور ماڈلنگ زبانوں ایلن، ڈائمولا، این ایم ایف آبجیکٹ میتھ، اومولا، سیڈوپس +، اور اسمائیل کے تجربے پر مبنی ہے۔ ہلڈنگ ایلمکوسٹ ماڈلکا کا کلیدی معمار ہے، لیکن بہت سے دوسرے لوگوں نے بھی تعاون کیا ہے (ماڈلکا کی تفصیلات میں اپینڈکس ای دیکھیں)۔ ستمبر 1997 میں، ماڈلکا تفصیلات کا ورژن 1 جاری کیا گیا جو تجارتی ڈائمولا سافٹ ویئر سسٹم کے اندر ایک پروٹو ٹائپ کے نفاذ کی بنیاد تھی۔ سال 2000 میں، غیر منافع بخش ماڈلکا ایسوسی ایشن کا قیام مسلسل ترقی پذیر ماڈلکا زبان اور مفت ماڈلکا اسٹینڈرڈ لائبریری کی ترقی کے انتظام کے لیے کیا گیا تھا۔ اسی سال صنعتی ایپلی کیشنز میں ماڈلکا کا استعمال شروع ہوا۔ یہ جدول ماڈلکا کی تفصیلات کی تاریخ کی ٹائم لائن پیش کرتا ہے: ماڈلکا کے لیے عمل درآمد تجارتی فرنٹ اینڈ میں فرانسیسی کمپنی امیجن ایس اے (اب سیمنز ڈیجیٹل انڈسٹریز سافٹ ویئر کا حصہ) سے اے ایم ای ایس آئی ایم، سویڈش کمپنی ڈائناسم اے بی (اب ڈاسالٹ سسٹمز کا حصہ) سے ڈائمولا، سویڈش کمپنی وولفرم میتھ کور اے بی (اب وولفرم ریسرچ کا حصہ) سے وولفرم سسٹم ماڈلر (سابقہ میتھ ماڈلکا)، جرمن کمپنی ای ایس آئی آئی ٹی آئی جی ایم بی ایچ سے سیمولیشن ایکس، کینیڈا کی کمپنی میپل سافٹ سے میپل سم، سویڈش کمپنی ماڈلون اے بی سے JModelica.org (اوپن سورس، بند) اور ماڈلون امپیکٹ، اور ڈاسالٹس سسٹمز سے سی اے ٹی آئی اے شامل ہیں۔ اوپن ماڈلکا ایک اوپن سورس ماڈلکا پر مبنی ماڈلنگ اور تخروپن ماحول ہے جس کا مقصد صنعتی اور تعلیمی استعمال کے لیے ہے۔ اس کی طویل مدتی ترقی کو ایک غیر منافع بخش تنظیم-اوپن سورس ماڈلکا کنسورشیم (او ایس ایم سی) کی حمایت حاصل ہے۔ اوپن ماڈلکا کی کوشش کا مقصد تحقیق، تدریس اور صنعتی استعمال کے لیے بائنری اور سورس کوڈ کی شکل میں تقسیم کردہ مفت سافٹ ویئر پر مبنی ایک جامع اوپن سورس ماڈلنگ، تالیف اور تخروپن ماحول بنانا ہے۔ مفت تخروپن ماحول سکیکوس جزو ماڈلنگ کے لیے ماڈلکا کے ذیلی سیٹ کا استعمال کرتا ہے۔ ماڈلکا زبان کے ایک بڑے حصے کے لیے سپورٹ فی الحال زیر ترقی ہے۔ اس کے باوجود، ماڈلکا زبان سے متعلق تمام مختلف ٹولز کے درمیان اب بھی کچھ مطابقت اور مختلف تشریح موجود ہے۔ مثال درج ذیل کوڈ کا ٹکڑا فرسٹ آرڈر سسٹم () کی ایک بہت ہی آسان مثال دکھاتا ہے: ماڈل فرسٹ آرڈر پیرامیٹر ریئل c = 1 "ٹائم کانسٹینٹ" ؛ ریئل x (اسٹارٹ = 10) "ایک نامعلوم" ؛ مساوات ڈیر (x) =-c * x "ایک فرسٹ آرڈر ڈیفرینشل مساوات" ؛ اینڈ فرسٹ آرڈر ؛ درج ذیل کوڈ کا ٹکڑا OMShell کا استعمال کرتے ہوئے، نیچے لکھے گئے پروگرام کو تیار کرنے کے ایک ذریعہ کے طور پر، مثلثی فنکشن کے دوسرے مشتق کا حساب لگانے کے لیے ایک مثال دکھاتا ہے۔ ماڈل سیکنڈ مشتق ریئل ایل ؛ ریئل زیڈ = سن (ڈبلیو * ٹائم) ؛ ریئل ایم ؛ پیرامیٹر ریئل ڈبلیو = 1 ؛ مساوات ایل = ڈیر (زیڈ) ؛ ایم = ڈیر (ایل) ؛ اینڈ سیکنڈ مشتق ؛ اس مثال کے بارے میں توجہ دینے والی دلچسپ چیزیں 'پیرامیٹر' کوالیفائر ہیں، جو اس بات کی نشاندہی کرتی ہیں کہ دیا گیا متغیر وقت غیر متغیر ہے اور 'ڈیر' آپریٹر، جو (علامتی طور پر) متغیر کے وقت مشتق کی نمائندگی کرتا ہے۔ دستاویزات کے تار بھی قابل توجہ ہیں جو اعلانات اور مساوات سے وابستہ ہو سکتے ہیں۔ ماڈلکا کا بنیادی اطلاق کا علاقہ جسمانی نظاموں کی ماڈلنگ ہے۔ سب سے زیادہ بنیادی ساخت کے تصورات برقی ڈومین سے سادہ مثالوں کے ہاتھ میں دکھائے گئے ہیں: بلٹ ان اور صارف سے ماخوذ اقسام ماڈلکا میں چار بلٹ ان اقسام ریئل، انٹیجر، بولین، سٹرنگ ہیں۔ عام طور پر، صارف کی طرف سے متعین اقسام حاصل کی جاتی ہیں، جسمانی مقدار، یونٹ، برائے نام اقدار، اور دیگر صفات کو جوڑنے کے لیے: قسم وولٹیج = حقیقی (مقدار = "برقی صلاحیت"، یونٹ = "V") ؛ قسم کرنٹ = حقیقی (مقدار = "برقی صلاحیت"، یونٹ = "A") ؛ جسمانی تعامل کو بیان کرنے والے کنیکٹر کسی جزو کے دوسرے اجزاء کے ساتھ تعامل کی تعریف جسمانی بندرگاہوں کے ذریعے کی جاتی ہے، جسے کنیکٹر کہتے ہیں، مثال کے طور پر، ایک برقی پن کو کنیکٹر پن "برقی پن" وولٹیج v "پن پر صلاحیت" کے طور پر بیان کیا جاتا ہے ؛ فلو کرنٹ 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 معمولی مساوات ہیں۔ درجہ بندی ماڈل ایک درجہ بندی ماڈل بنیادی ماڈلز سے بنایا جاتا ہے، بنیادی ماڈلز کو فوری بنا کر، ماڈل پیرامیٹرز کے لیے مناسب اقدار فراہم کر کے، اور ماڈل کنیکٹرز کو جوڑ کر۔ ایک عام مثال مندرجہ ذیل برقی سرکٹ ہے: ماڈل سرکٹ کیپیسیٹر C1 (C = 1e-4) "اوپر کے ماڈل سے ایک کیپیسیٹر مثال" ؛ کیپیسیٹر C2 (C = 1e-5) "اوپر کے ماڈل سے ایک کیپیسیٹر مثال" ؛ مساوات کنیکٹ (C1.pin_p، C2.pin_n) ؛ اینڈ سرکٹ ؛ زبان کے عنصر اینوٹیشن (.) کے ذریعے، تعریفوں کو کسی ایسے ماڈل میں شامل کیا جا سکتا ہے جس کا تخروپن پر کوئی اثر نہیں ہوتا ہے۔ تشریحات کو گرافیکل ترتیب، دستاویزات اور ورژن کی معلومات کی وضاحت کے لیے استعمال کیا جاتا ہے۔ گرافیکل اینوٹیشن کے ایک بنیادی سیٹ کو معیاری بنایا گیا ہے تاکہ یہ یقینی بنایا جا سکے کہ مختلف ماڈلکا ٹولز میں ماڈلز کی گرافیکل ظاہری شکل اور ترتیب ایک جیسی ہے۔ ایپلی کیشنز ماڈلکا کو ڈومین نیوٹرل ہونے کے لیے ڈیزائن کیا گیا ہے اور اس کے نتیجے میں اسے مختلف قسم کے ایپلی کیشنز میں استعمال کیا جاتا ہے، جیسے سیال نظام (مثال کے طور پر، بھاپ سے بجلی پیدا کرنا، ہائیڈرولکس وغیرہ)۔ )، آٹوموٹو ایپلی کیشنز (خاص طور پر پاور ٹرین) اور مکینیکل سسٹم (مثال کے طور پر، ملٹی باڈی سسٹم، میکاٹرونکس وغیرہ)۔ آٹوموٹو کے شعبے میں، بہت سے بڑے آٹوموٹو او ای ایم ماڈلکا کا استعمال کر رہے ہیں۔ ان میں فورڈ، جنرل موٹرز، ٹویوٹا، بی ایم ڈبلیو، اور ڈیملر شامل ہیں۔ ماڈلکا کا استعمال تھرمو فلوئڈ اور توانائی کے نظام کے تخروپن کے لیے بھی تیزی سے کیا جا رہا ہے۔ ماڈلکا کی خصوصیات (اکوسل، آبجیکٹ پر مبنی، ڈومین نیوٹرل) اسے سسٹم کی سطح کے تخروپن کے لیے اچھی طرح سے موزوں بناتی ہیں، ایک ایسا ڈومین جہاں ماڈلکا اب اچھی طرح سے قائم ہے۔ اے ایم ای ایس ایم اے ایم پی ایل اے پی مانیٹر ایسینڈ ڈومین-مخصوص ماڈلنگ ڈی ایس ایم ڈائمولا ایکوسمپرو: مسلسل اور مجرد ماڈلنگ اور سیمولیشن سافٹ ویئر ای ایم ایس او جی اے ایم ایس JModelica.org اوپن ماڈلکا میپل سم میٹ لیب سیمولیشن ایکس سیمولیک وولفرم سسٹم ماڈلر اسکیلاب/ایکسکوس کیپلر (ٹولیمی) نوٹ بیرونی روابط ماڈلکا زبان کی وضاحت ورژن 3.6 ماڈلکا ایسوسی ایشن، غیر منافع بخش ماڈلکا ایسوسی ایشن (ماڈلکا تیار کرنا) ماڈلکا کا ہوم پیج مثال کے طور پر ماڈلکا سیکھنے کے لیے مائیکل ٹلر کی ایک مفت انٹرایکٹو ایچ ٹی ایم ایل کتاب، ماڈلکا کے ساتھ فزیکل ماڈلنگ کا تعارف،