وظایف مدلسازی خود را با COMSOL API برای استفاده با Java® به طور خودکار انجام دهید
برای همگام شدن با چرخههای توسعه سریع امروزی، مهندسان و دانشمندان تحقیق و توسعه به ابزارهای کارآمدی نیاز دارند تا پاسخها را به سرعت ارائه کنند و آنها را از وظایف معمول رها کنند. COMSOL Multiphysics دارای ویژگیهای داخلی مانند جاروهای پارامتریک برای افزایش بهرهوری شبیهسازی است. علاوه بر مدلسازی گرافیکی، COMSOL یک رابط برنامهنویسی کاربردی (API) ارائه میکند که میتوانید از آن برای خودکار کردن هر مرحله مدلسازی تکراری استفاده کنید. در اینجا نحوه شروع با COMSOL API برای استفاده با Java® آمده است.
مقدمه ای بر COMSOL API
COMSOL API یک رابط برای همه الگوریتم ها و ساختارهای داده ای است که یک مدل COMSOL را تعریف می کند. هنگامی که یک مدل را با COMSOL Desktop® تنظیم می کنید، در پشت صحنه با COMSOL API تعامل دارید. LiveLink™ for MATLAB®، موضوع یک پست وبلاگ اخیر ، همچنین با استفاده از COMSOL API اما به صورت تعاملی به جای کامپایل عمل می کند. امروز، ما بر روی COMSOL API برای استفاده با Java® تمرکز می کنیم.
COMSOL Desktop به عنوان تولید کننده کد
برای شروع کار با COMSOL API لازم نیست یک برنامه نویس متخصص Java® باشید. میتوانید مستقیماً از ابزاری که در حال حاضر با آن کار میکنید – COMSOL Desktop – شیرجه بزنید. هر عملی که در این محیط مدل سازی گرافیکی انجام می دهید در تاریخچه مدل ثبت می شود. شما می توانید با ذخیره مدل خود و انتخاب “Model File for Java®” به عنوان نوع فایل، این تاریخچه را به عنوان کد جاوا صادر کنید. این روش برای ایجاد بلوک های ساختمانی برای برنامه شما مفید است.
سلام دنیا!
بیایید با یک مثال ساده شروع کنیم تا با این فرآیند آشنا شویم: نسخه COMSOL API یک “Hello, World!” برنامه
در دسکتاپ COMSOL، مدلی ایجاد کنید که فقط شامل یک هندسه سه بعدی باشد. یک بلوک با ابعاد 0.1mx 0.2mx0.5m به هندسه اضافه کنید و یک “Model File for Java®” با نام “HelloWorld.java” ذخیره کنید.
اگر خروجی را در یک ویرایشگر متن باز کنید، به شکل زیر خواهد بود:
وارد کردن com.comsol.model.*; وارد کردن com.comsol.model.util.*; کلاس عمومی HelloWorld { public static void main(string[] args) { اجرا کن()؛ } اجرای عمومی استاتیک مدل () { Model model = ModelUtil.create("Model"); model.modelNode().create("comp1"); model.geom().create("geom1", 3); model.geom("geom1").feature().create("blk1"، "Block"); model.geom("geom1").feature("blk1").set("size", new String[]{"0.1", "0.2", "0.5"}); model.geom("geom1").run("fin"); مدل بازگشت؛ } }
دو خط اول import
عبارت هایی هستند که به COMSOL API اشاره می کنند. این با تعریف کلاس دنبال می شود HelloWorld
. نام کلاس همان نام فایل است، همانطور که در برنامه نویسی جاوا وجود دارد.
کلاس حاوی main()
متدی است که به نوبه خود یک run()
متد استاتیک را برای ساخت و برگرداندن یک Model
شی فراخوانی می کند. برای پروژه های برنامه نویسی کوچک، می توانید مستقیماً این روش را اصلاح کنید. به عبارت دیگر، لزوماً مجبور نیستید از ویژگی های پیشرفته تر شی گرا جاوا استفاده کنید.
تابع تاریخچه فشرده
دسکتاپ COMSOL ویژگی دیگری را ارائه می دهد که هنگام تولید کد مفید است: عملکرد “تاریخچه فشرده” در منوی فایل. وقتی یک مدل را تنظیم میکنید، معمولاً برخی از ویژگیها را اضافه میکنید که بعداً حذف یا جابهجا میشوید. همه این تغییرات در تاریخچه مدل ثبت میشوند که مراحل غیرضروری زیادی را در خود جای میدهد.
تابع “تاریخچه فشرده” تاریخچه را پاک می کند، ورودی های تکراری و حذف شده را حذف می کند و همه چیز را مطابق با ترتیب موجود در Model Builder مرتب می کند. اگر از تابع قبل از صادرات استفاده کنید، کد تمیز دریافت خواهید کرد.
چرا قبل از ذخیره یک فایل Java® به طور خودکار تاریخچه را پاک نمی کنید؟ خوب، گاهی اوقات مفید است که تاریخ را فشرده نکنید.
فرض کنید در حال توسعه کدی هستید که از COMSOL API استفاده می کند و معلوم می شود که به قطعاتی نیاز دارید که بتوانید به سرعت با COMSOL Desktop تنظیم کنید. شما شروع به تغییر مدلی می کنید که با آن کار می کردید و آن را به عنوان یک فایل جاوا ذخیره می کنید. خوشبختانه، شما تاریخچه مدل را قبل از ذخیره فشرده نکرده اید و بنابراین می توانید به راحتی تمام تغییرات را درست در انتهای کد صادر شده پیدا کنید. این بسیار ساده تر از تلاش برای تشخیص تغییراتی است که در غیر این صورت در کل کد مدل پراکنده شده اند.
کامپایل و اجرای کد COMSOL API
Java® یک زبان کامپایل شده است و قبل از اینکه بتوانید کارهای مفیدی با کد خود انجام دهید، باید آن را در یک فایل کلاس کامپایل کنید. برای این کار به یک کامپایلر جاوا مانند کیت توسعه رایگان Java® (JDK) نیاز دارید .
هنگامی که یک JDK را نصب کردید، می توانید از آن استفاده کنید
comsolcompile
( comsol compile
در Linux® یا Mac®)
دستور، که بخشی از نصب نرم افزار COMSOL است، برای کامپایل کردن کد شما. دستور به طور خودکار مسیر COMSOL API را برای کامپایلر جاوا تنظیم می کند.
برای کامپایل مثال بالا از دستور استفاده کنید
comsolcompile -jdkroot PATH_TO_JDK HelloWorld.java
اینجا PATH_TO_JDK
دایرکتوری است که JDK را در آن نصب کرده اید. توجه داشته باشید که COMSOL API به Java® 1.5 پایبند است و روش فوق با JDK 1.5 یا 1.6 کار می کند.
همچنین می توانید از یک محیط توسعه یکپارچه (IDE) مانند Eclipse™ استفاده کنید . پروژه های خود را با سازگاری با جاوا 1.5 تنظیم کنید و تمام فایل های JAR را در فهرست “plugins” نصب COMSOL Multiphysics® به مسیر ساخت خود اضافه کنید.
هنگامی که کد خود را در یک فایل کلاس کامپایل کردید، می توانید آن را در دسکتاپ COMSOL از طریق منوی File > Open باز کنید. اگر این کار را با مثال بالا انجام دهید، مدل “Hello World” خود را با یک بلوک در یک هندسه سه بعدی خواهید دید. همین نتیجه را می توان با یک فایل مدل معمولی COMSOL mph بدست آورد. بعد، میخواهیم آن را تغییر دهیم و کاری فراتر از قابلیتهای یک فایل مدل معمولی انجام دهیم.
اما، قبل از اینکه به جلو برویم و مثال را اصلاح کنیم، اجازه دهید ساختار و معنای کد را در روش run()
بالا بررسی کنیم.
به طور خلاصه COMSOL API
مثال “Hello World” می تواند برخی از مهم ترین جنبه های کار با COMSOL API را به ما آموزش دهد. بیایید از طریق متد run() بگذریم تا بفهمیم چه اتفاقی می افتد.
خط اول،
Model model = ModelUtil.create("Model");
یک مدل جدید با ModelUtil.create()
، ایجاد می کند – یک روش ثابت که یک نام (the String "Model"
) را به عنوان آرگومان می گیرد. ModelUtil
کمک کننده کوچک COMSOL API، مجموعه ای از روش های کاربردی است. برای مثال میتوانید از این برای بارگذاری مدلها یا ایجاد مدلهای جدید از ابتدا استفاده کنید.
ModelUtil.create()
یک Model
شی را برمی گرداند. این شیء تمام تنظیمات یک مدل COMSOL را در خود جای می دهد، یعنی شامل کل درخت مدل است که معمولاً در Model Builder دسکتاپ COMSOL می بینید.
خط
model.modelNode().create("comp1");
یک گره جزء جدید در درخت مدل ایجاد می کند. یک جزء مدل دارای یک هندسه مرتبط است که با خط اضافه می شود
model.geom().create;("geom1", 3);
آرگومان دوم (عدد 3) هندسه مؤلفه را سه بعدی می کند.
توجه داشته باشید که اولین آرگومان برای هر دو create()
روش یک رشته است که اصطلاحاً به آن تگ می گویند . برچسبها در همه جای model
شی مورد استفاده قرار میگیرند تا ویژگیهای موجود در مدل را بهطور منحصربهفرد شناسایی کنند. این امر ضروری است زیرا یک مدل می تواند دارای ویژگی های بسیاری از همان نوع باشد. برای مثال می توانید بیش از یک جزء در مدل خود داشته باشید که هر کدام هندسه خاص خود را دارند. هندسه مولفه ممکن است شامل بسیاری از اشکال اولیه از یک نوع باشد. سپس تنظیمات فیزیک ممکن است از بسیاری از شرایط مرزی از همان نوع استفاده کنند و غیره. بنابراین، دادن یک برچسب منحصر به فرد به هر مورد، راهی برای خانه داری است.
میتوانید با فعال کردن تنظیمات «Show Name and Tag» یا «Show Type and Tag» در منوی «Model Builder Node Label» در برگه Home، برچسبهای هر مدل COMSOL Multiphysics را در دسکتاپ COMSOL قابل مشاهده کنید.
هنگامی که گزینه “Show Name and Tag” یا “Show Type and Tag” از تنظیمات Model Builder Node Label انتخاب شده باشد، برچسب ها در Model Builder Desktop COMSOL نمایش داده می شوند.
خط بعدی کد،
model.geom("geom1").feature().create("blk1", "Block");
;
یک بلوک در هندسه اول ایجاد می کند "geom1"
.
شما می توانید سلسله مراتب درخت مدل را در این خط تشخیص دهید. قسمت اول model.geom("geom1")
دستور را با هندسه مرتبط می کند "geom1"
و قسمت دوم feature().create("blk1", "Block")
ویژگی جدیدی به آن اضافه می کند. این ویژگی بلوکی است که با برچسب مشخص شده است "blk1"
. با فکر کردن به COMSOL Desktop، میتوانید قسمت اول را با کلیک راست بر روی "geom1"
و قسمت دوم را به عنوان انتخاب Block از منوی هندسه که ظاهر میشود، تصویر کنید.
پس از ایجاد بلوک، ویژگی های آن اصلاح می شود. این اتفاق در خط می افتد
model.geom("geom1").feature("blk1").set("size", new String[]{"0.1", "0.2", "0.5"});
مجدداً، قسمت اول اولین بلوک "blk1"
را مشخص می کند "geom1"
و قسمت دوم ویژگی size را با یک set()
متد تغییر می دهد.
آرگومان اول دومی خاصیتی را که میخواهید تغییر دهید، “اندازه” را در این مورد مشخص میکند. آرگومان دوم مقادیر جدید را اختصاص می دهد – در این مورد خاص که ویژگی های عرض، ارتفاع و طول بلوک خواهد بود.
توجه داشته باشید که اگرچه این ویژگی ها روی اعداد واقعی تنظیم می شوند، آرگومان به صورت آرایه ای از رشته ها ارسال می شود. چرا اینطور است؟ به یاد داشته باشید که در نرم افزار COMSOL می توانید به جای اعداد خاص در هر جایی که می خواهید یک عبارت ریاضی تایپ کنید. این برای COMSOL API نیز صادق است و به همین دلیل چنین ویژگی هایی به عنوان رشته ارسال می شوند.
در نهایت، قبل از بازگشت مدل جدید، خط
model.geom("geom1").run("fin");
نهایی کردن هندسه را اجرا می کند، درست مانند زمانی که دکمه “ساخت همه” را در دسکتاپ COMSOL فشار می دهید.
این COMSOL API به طور خلاصه و همه آنچه که برای شروع باید بدانید است. البته جزئیات بسیار بیشتری وجود دارد، اما همیشه میتوانید با استفاده از COMSOL Desktop به عنوان مرجع کد همراه با مستندات COMSOL API برای استفاده با Java®، آنها را در حین پیشبرد، دریافت کنید.
مثال: ساخت هندسه سلف مارپیچی
برای نشان دادن کاربرد COMSOL API، میتوانیم به مدل یک سلف مارپیچی از گالری مدل خود نگاه کنیم.
هدف این مدل محاسبه خود القایی برای طراحی سیم پیچ داده شده است. اگر از نزدیک به هندسه نگاه کنید، می بینید که از چیدمان بلوک ها ساخته شده است. در مدل، ابعاد مارپیچ به مقادیر خاصی ثابت شده است. هنگام طراحی چنین دستگاهی، نگاه کردن به پیکربندیهای مختلف، مانند سلفها با سطح مقطع و تعداد سیمپیچهای مختلف، مفید است. برای این منظور، می توانید هندسه را به صورت پارامتری در دسکتاپ COMSOL تنظیم کنید.
انجام پارامترهای سطح مقطع در آنجا آسان است. از طرف دیگر، تعداد سیم پیچ ها را نمی توان در دسکتاپ COMSOL پارامتر کرد، زیرا طول یک قطعه سیم در هر سوم دور تغییر می کند. همانطور که در بالا دیدید، با این حال، می توانید از COMSOL API برای مشخص کردن تمام خصوصیات یک بلوک در برنامه Java® خود استفاده کنید. می توانید از آن برای ساخت هندسه هادی مارپیچی به صورت خودکار استفاده کنید.
از مثال “Hello World” در بالا، شما از قبل می دانید که چگونه یک بلوک بسازید. برای ساختن یک هادی مارپیچی، بلوکهای زیادی با ویژگیها و جهتگیریهای اندازه متفاوت ایجاد میکنید و آنها را در پیکربندی دلخواه مرتب میکنید. در کد، به چند متغیر برای پیگیری نیاز دارید:
متغیر | کد |
---|---|
سطح مقطع | ( wire_width and wire_height) |
طول یک تکه سیم | (piece_length) |
موقعیت | (pos_x and pos_y) |
گرایش | (rotation_angle) |
فاصله سیم | (inner_spacing and loop_spacing) |
تعداد دورها | (n_loop) |
سپس بلوک هایی را که مارپیچ را تشکیل می دهند در یک حلقه ایجاد می کنید.
همانطور که می دانید، برای شناسایی هر بلوک به یک برچسب منحصر به فرد نیاز دارید. شما می توانید آن را خودتان با الحاق یک شمارنده بلوک به یک رشته پایه، مانند "blk"
. با این حال، جایگزین بهتر، استفاده از uniquetag()
روش ارائه شده توسط COMSOL API است. این روش همان کار را انجام می دهد، اما شمارنده ها را به صورت داخلی پیگیری می کند و اطمینان حاصل می کند که یک برچسب دو بار استفاده نمی شود.
در قطعه کد زیر، برچسب برای هر بلوک با استفاده از آن ایجاد می شود
model.geom("geom1").feature().uniquetag("blk")
با تگ منحصر به فرد جدید، اکنون یک بلوک ایجاد کرده و ویژگی های آن را تنظیم می کنید. به غیر از "size"
, شما همچنین باید خصوصیات "pos"
و "rot"
را به ترتیب برای موقعیت و جهت تغییر دهید. پس از آن، متغیرها را برای تکرار بعدی به روز می کنید.
یک هندسه سلف مارپیچی به طور خودکار با COMSOL API برای استفاده در Java® تولید می شود.
بعد چه می شود؟
البته میتوانید از COMSOL API برای چیزهای بیشتری به جز ایجاد هندسه استفاده کنید. در واقع، میتوانید هر کار مدلسازی را که معمولاً با COMSOL Desktop انجام میدهید، خودکار کنید. به عنوان مثال، در مثال سلف مارپیچی، می توانید به محاسبه نتیجه جدید هندسه به روز شده ادامه دهید. همچنین میتوانید یک جاروی پارامتریک در کد خود برای محاسبه خودکار طیف وسیعی از هادیهای مارپیچی اجرا کنید. سپس میتوانید نتایج محاسبات را با ایجاد نمودارهایی که به فایلهای تصویری صادر میشوند، استخراج اندوکتانس و صادر کردن تمام مقادیر به یک فایل، پردازش کنید.
ما فقط سطح قابلیت های COMSOL API را خراشیده ایم. فراتر از برنامه نویسی کارهایی که می توانید به صورت دستی در COMSOL Desktop انجام دهید، COMSOL API به شما امکان دسترسی و کنترل بر ساختارهای داده مانند مش المان محدود، ماتریس های المان محدود و مجموعه داده های راه حل را می دهد.
علاوه بر نوشتن فایلهای کلاسی که میتوانند توسط COMSOL Desktop باز شوند، میتوانید برنامههایی بنویسید که به یک فرآیند COMSOL Server یا حتی برنامههای مستقلی که فناوری COMSOL را یکپارچه میکنند متصل میشوند. بنابراین، اگر به طور معمول با یک کار شبیه سازی خاص سر و کار دارید، COMSOL API یک ابزار قدرتمند و انعطاف پذیر برای شما برای خودکارسازی آن کار است.
Eclipse یک علامت تجاری Eclipse Foundation, Inc است. لینوکس یک علامت تجاری ثبت شده لینوس توروالدز است. مک علامت تجاری شرکت اپل است که در ایالات متحده و سایر کشورها ثبت شده است. MATLAB یک علامت تجاری ثبت شده The MathWorks, Inc است. Oracle و Java علائم تجاری ثبت شده Oracle و/یا شرکت های وابسته به آن هستند.
- لینک دانلود به صورت پارت های 1 گیگابایتی در فایل های ZIP ارائه شده است.
- در صورتی که به هر دلیل موفق به دانلود فایل مورد نظر نشدید به ما اطلاع دهید.
برای مشاهده لینک دانلود لطفا وارد حساب کاربری خود شوید!
وارد شویدپسورد فایل : پسورد ندارد گزارش خرابی لینک
دیدگاهتان را بنویسید