گره Study در درخت مدل شامل یک یا چند مرحله مطالعه است، دستورالعمل هایی که برای تنظیم حل کننده ها و حل متغیرهای وابسته استفاده می شود. تنظیمات گره های Study و Solver Configurations می تواند بسیار پیچیده باشد. ساده ترین موردی را در نظر بگیرید که برای آن فقط باید یک مطالعه ایجاد کنید، یک مرحله مطالعه اضافه کنید و آن را اجرا کنید.
فراخوانی متد اجرا به طور خودکار یک دنباله حل کننده در ساختار داده model.sol ایجاد می کند و سپس حل کننده مربوطه را اجرا می کند. تنظیمات حلکننده بهطور خودکار با ترکیبی از رابطهای فیزیکی که انتخاب کردهاید، پیکربندی میشوند. همانطور که در ادامه این بخش نشان داده شده است، می توانید به صورت دستی این تنظیمات را تغییر دهید. ساختار داده model.sol تقریباً با محتوای گره Solver Configurations در زیر گره Study در درخت مدل مطابقت دارد.
تمام تنظیمات حل کننده سطح پایین در model.sol موجود است. ساختار model.study به عنوان یک دستورالعمل سطح بالا استفاده می شود که نشان می دهد چه تنظیماتی باید در model.sol ایجاد شود که یک دنباله حل کننده جدید ایجاد شود.
برای سازگاری با عقب، برخی از تنظیمات سطح پایین در model.sol به طور خودکار هنگام استفاده از Record Code ایجاد میشوند .
مثال زیر یک مورد مفصلتر از برنامهریزی مطالعه را نشان میدهد که میتواند برای مثال انتقال حرارت ثابت که قبلا نشان داده شد، قابل استفاده باشد. دستورالعمل های زیر شباهت بیشتری به خروجی تولید شده با استفاده از گزینه Record Code دارد.
تنظیمات واقعی که نحوه اجرای مطالعه را تعیین میکنند، در مجموعهای از عملیات در ساختار داده Solution ، با برچسب sol1 ، که به مطالعه مرتبط است، وجود دارد:
ابتدا یک گره کامپایل معادلات را در زیر گره Solution ایجاد کنید تا مشخص کنید کدام مرحله مطالعه و مطالعه استفاده می شود:
سپس، یک گره Dependent Variables ایجاد کنید ، که مقیاس بندی و مقادیر اولیه متغیرهای وابسته را کنترل می کند و نحوه مدیریت متغیرهایی را که برای موارد زیر حل نشده اند، تعیین می کند:
حالا یک گره Stationary Solver ایجاد کنید. حل ثابت شامل دستورالعمل هایی است که برای حل سیستم معادلات و محاسبه مقادیر متغیرهای وابسته استفاده می شود.
برای انتخاب انواع حل کننده های خاص، گره های فرعی را به گره حل کننده ثابت اضافه کنید. در این مثال، از حل کننده تکراری استفاده کنید:
شما می توانید چندین ساختار داده Solution در یک گره مطالعه (مانند sol1 ، sol2 ، و غیره) داشته باشید که دنباله های مختلفی از عملیات را تعریف می کنند. فرآیند اطلاع رسانی به مطالعه ای که باید از کدام مطالعه استفاده شود، با «پیوست کردن» ساختار داده Solution sol1 با مطالعه std1 انجام می شود :
مرحله پیوست تعیین میکند که در هنگام انتخاب Compute در رابط کاربری دسکتاپ COMSOL، کدام دنباله ساختار داده راه حل باید اجرا شود .
ساختار گره مطالعه حاصل در شکل زیر نشان داده شده است. توجه داشته باشید که چندین گره اضافی به صورت خودکار اضافه می شوند. اینها گره های پیش فرض هستند و می توانید هر یک از این گره ها را با فراخوانی روش صریح ویرایش کنید. هنگام استفاده از Record Code می توانید هر یک از گره ها را ویرایش کنید تا روش ها و نحو مورد استفاده را مشاهده کنید.
برای نشان دادن اینکه چگونه می توان برخی از تنظیمات حل کننده سطح پایین را تغییر داد، موردی را در نظر بگیرید که در آن تنظیمات گره کاملاً جفت شده اصلاح شده است. این زیرگره نوع حلگر غیرخطی مورد استفاده را کنترل می کند.
بسته به اینکه زیرگره کاملاً جفت شده قبلاً ایجاد شده باشد یا نه، ممکن است به خط اول زیر نیازی نباشد (میتوانست به طور خودکار با کدی مشابه آنچه در بالا نشان داده شده است تولید شود).
برای اطلاعات بیشتر در مورد معنای این تنظیمات و سایر تنظیمات حلکننده سطح پایین، به بخش حلکننده راهنمای مرجع برنامهنویسی مراجعه کنید.
برای تغییر تنظیمات حل کننده سطح پایین نیاز است که model.sol ابتدا ایجاد شده باشد. همیشه اولین باری که یک مطالعه را محاسبه می کنید ایجاد می شود، با این حال، می توانید تولید خودکار model.sol را به صورت زیر فعال کنید:
جایی که فراخوانی به showAutoSequences مربوط به گزینه Show Default Solver است که با کلیک راست بر روی گره Study در درخت مدل موجود است.
اگر نمیخواهید کنترل دستی تنظیمات در model.sol (توالی حلکننده) را در دست بگیرید و برای ایجاد تنظیمات حلکننده به واسطهای فیزیکی تکیه کنید، میتواند استفاده شود. اگر برنامه شما از تنظیمات حل کننده تولید شده به صورت خودکار استفاده می کند، به روز رسانی و بهبود حل کننده ها در نسخه های بعدی به طور خودکار گنجانده می شود. متناوباً، مدل. sol بهطور خودکار تولید میشود ، میتواند به عنوان نقطه شروعی برای ویرایشهای خود در تنظیمات حلکننده سطح پایین مفید باشد.
هنگام ایجاد یک برنامه، اغلب مفید است که راه حلی وجود داشته باشد یا خیر. متد model.sol( ” sol1 ” ).isEmpty() یک بولی برمی گرداند و اگر ساختار حل sol1 خالی باشد درست است. برنامه ای را در نظر بگیرید که در آن حالت حل در یک رشته solutionState ذخیره می شود . کد زیر بسته به خروجی متد isEmpty وضعیت را تنظیم می کند: