model.solverEvent()

model.solverEvent()

model.solverEvent()
ایجاد و تعریف رویدادها برای حل کننده.
نحو
model.solverEvent().create( <tag> , evtype );
model.solverEvent( <tag> ).start(expr);
model.solverEvent( <tag> ).start();
model.solverEvent( <tag> ).period(expr);
model.solverEvent( <tag> ).period();
model.solverEvent( <tag> ).condition(expr);
model.solverEvent( <tag> ).condition();
model.solverEvent( <tag> ).reinit();
model.solverEvent( <tag> ).reinit().create( <tag> );
model.solverEvent( <tag> ).reinit( <tag> ).set( <var> ,expr);
model.solverEvent(<tag>).useConsistentInit(isConsistent);
شرح
رویدادها را ایجاد کنید و تنظیمات رویداد را کنترل کنید. دو نوع رویداد وجود دارد؛ صریح و ضمنی .
model.solverEvent().create( <tag> evtype ) یک رویداد جدید از نوع evtype ایجاد می کند ، یا Explicit و Implicit .
همچنین توالی رویدادهایی وجود دارد که با استفاده از مجموعه evtype به عنوان EventSequence که می توانید اعضای دنباله را به آنها اضافه کنید، آنها را ایجاد می کنید . دنباله های رویداد را ببینید .
رویدادهای صریح
رویدادهای صریح در یک زمان بندی از پیش تعریف شده فعال می شوند.
model.solverEvent( <tag> ).start(expr) زمان شروع یک رویداد صریح را تنظیم می کند.
model.solverEvent( <tag> ).period(expr) دوره را برای یک رویداد صریح تنظیم می کند. پس از زمان شروع، رویداد پس از هر دوره فعال می شود.
رویدادهای ضمنی
رویدادهای ضمنی زمانی فعال می شوند که یک شرط از نادرست به درست تبدیل شود.
model.solverEvent( <tag> ).condition(expr) شرط را برای یک رویداد ضمنی تنظیم می کند.
توالی رویدادها
شما همچنین می توانید توالی رویدادها را اضافه کنید تا دنباله ای از رویدادها را مشخص کنید که به ترتیبی که آنها را اضافه می کنید رخ می دهد. توالی رویداد با تعریف خودکار رویدادهای صریح و ضمنی، تنظیم یک توالی از رویدادها را ساده می کند. مراحل جداگانه در دنباله با استفاده از زیرگره های عضو دنباله تعریف می شوند:
model.solverEvent().feature( <estag> ).create <tag> , SequenceMember );
برای یک عضو دنباله می‌توانید ویژگی endConditionOptions را روی logicalExpression تنظیم کنید و سپس یک عبارت منطقی با استفاده از ویژگی شرط ارائه کنید که وقتی به چیزی که > 0 ارزیابی می‌شود درست است، یا ویژگی endConditionOptions را روی duration تنظیم کنید و سپس با استفاده از ویژگی duration برای کنترل مدت زمان اجرای یک گام.
اولیه سازی مجدد
هنگامی که یک رویداد آغاز می شود، هر درجه ای از آزادی را می توان دوباره شروع کرد. این به طور معمول به این معنی است که آنها یک مقدار جدید دریافت می کنند. شما این مقادیر را با یک روش راه‌اندازی مجدد، reinit(…) مشخص می‌کنید ، که نحوی مشابه با model.init(…) دارد .
model.solverEvent( <tag> ).reinit().create( <tag> ) یک ویژگی reinit جدید به رویداد اضافه می کند. در بیشتر موارد شما فقط به یک مورد نیاز دارید، اما زمانی که شرایط راه‌اندازی مجدد را در چندین سطح موجودیت هندسی دارید، به عنوان مثال در انتخاب سراسری و انتخاب دامنه، به موارد بیشتری نیاز دارید.
متغیرهای حالت رویداد
یک رویداد در بیشتر موارد به متغیرهای حالت نیاز دارد. حالت های گسسته و حالت های شاخص وجود دارد. حالت های گسسته فقط حالت های ODE هستند که فقط در حین شروع مجدد تغییر می کنند و فقط می توانند معادله ای با ارزش صفر (یا بدون معادله) داشته باشند. حالت های نشانگر برای رویدادهای ضمنی مورد نیاز هستند و حالت های ODE با معادلات غیر صفر هستند.
model.ode().create( <tag> ).type( <ode type> ) یک معادله جهانی جدید ایجاد می کند که شامل متغیرهای حالت رویداد است اگر نوع قصیده رابرای حالت های گسسته و ربع را برای حالت های نشانگر روی گسسته تنظیم کنید.
model.ode( <tag> .state( <states> ) یک حالت گسسته جدید به معادله جهانی اضافه می کند.
model.ode( <tag> ).ode( <state>, “ sin(2*pi*t) “) یک وضعیت نشانگر جدید و سمت راست آن را به معادله جهانی اضافه می کند. سمت چپ معادله متغیر حالت است، بنابراین معادله کامل وضعیت نشانگر nojac(sin(2*pi*t))- <state> می شود .
model.solverEvent(<tag>).useConsistentInit(isConsistent) نحوه اجرای سازگاری پس از شروع مجدد را کنترل می کند. اگربرای همه رویدادهای راه اندازی شده isConsistent = 0 باشد، پس از شروع مجدد، سازگاری اعمال نخواهد شد. اگر isConsistent = 1 برای حداقل یکی از رویدادهای ایجاد شده و Time.consistent = bweuler (به جدول 6-71 مراجعه کنید )، آنگاه سازگاری با استفاده از یک مرحله مصنوعی با روش اویلر به عقب اعمال می شود. برای جزئیات بیشتر، درباره فرآیند شروع مجدد در راهنمای مرجع COMSOL مراجعه کنیدگزارش حل کننده نشان می دهد که آیا و چگونه سازگاری پس از هر بار شروع مجدد اعمال شده است یا خیر.
مثال
نمونه ای از یک توپ پرش ایده آل با استفاده از رویدادهای ضمنی.
کد برای استفاده با جاوا
Model model = ModelUtil.create(“Model”);
model.study().create(“std1”);
model.study(“std1”).create(“time1”, “Transient”);
model.study(“std1”).feature(“time1”).set(“tlist”, “0 10”);
model.study(“std1”).feature(“time1”).set(“rtol”, 1e-6);// حالت های غیر گسسته
model.ode().create(“ode1”);
model.ode(“ode1”).ode(“y”، “-2*y-ytt”);
model.init().create(“ode1”);
model.init(“ode1”).selection().global();
model.init(“ode1”).set(“y”, “1”);
// حالات گسسته
model.ode().create(“ode2”).type(“quadrature”);
model.ode(“ode2”).ode(“z1″، “y”);
// رویداد ضمنی
model.solverEvent().create(“impl1”, “Implicit”);
model.solverEvent(“impl1”).condition(“!(z1>=0)”);
model.solverEvent(“impl1”).reinit().create(“reinit”);
model.solverEvent(“impl1”).reinit(“reinit”).selection().global();
model.solverEvent(“impl1”).reinit(“reinit”).set(“y”, “y”);
// Bounce سرعت را برمی‌گرداند
model.solverEvent(“impl1”).reinit(“reinit”).set(“yt”, “-yt”);
model.sol().create(“sol1”);
model.sol(“sol1”).createAutoSequence(“std1”);
// تنظیمات حل کننده ویژه برای رویدادها
model.sol(“sol1”).feature(“t1”).set(“tout”، “tsteps”);
model.sol(“sol1”).feature(“t1”).set(“atolglobal”, “1e-6”);
model.sol(“sol1”).feature(“t1”).set(“initialstepbdfactive”، “روشن”);
model.sol(“sol1”).feature(“t1”).set(“initialstepbdf”، “1e-6”);
model.sol(“sol1”).feature(“t1”).set(“eventtol”, “2e-6”);
model.sol(“sol1”).feature(“t1”).set(“ewtrescale”، “off”);
model.sol(“sol1”).runAll();
کد برای استفاده با متلب
model = ModelUtil.create(‘Model’);
model.study.create(‘std1’);
model.study(‘std1’).create(‘time1’, ‘Transient’);
model.study(‘std1’).feature(‘time1’).set(‘tlist’, ‘0 10’);
model.study(‘std1’).feature(‘time1’).set(‘rtol’, 1e-6);
٪ حالت های غیر گسسته
model.ode.create(‘ode1’);
model.ode(‘ode1’).ode(‘y’, ‘-2*y-ytt’);
model.init.create(‘ode1’);
model.init(‘ode1’).selection().global();
model.init(‘ode1’).set(‘y’, ‘1’);
% حالت های گسسته
model.ode.create(‘ode2’).type(‘quadrature’);
model.ode(‘ode2’).ode(‘z1’, ‘y’);
٪ رویداد ضمنی
model.solverEvent.create(‘impl1’, ‘Implicit’);
model.solverEvent(‘impl1’).condition(‘!(z1>=0)’);
model.solverEvent(‘impl1’).reinit().create(‘reinit’);
model.solverEvent(‘impl1’).reinit(‘reinit’).selection().global();
model.solverEvent(‘impl1’).reinit(‘reinit’).set(‘y’, ‘y’);
% Bounce سرعت را برمی گرداند
model.solverEvent(‘impl1’).reinit(‘reinit’).set(‘yt’, ‘-yt’);
model.sol().create(‘sol1’);
model.sol(‘sol1’).createAutoSequence(‘std1’);
% تنظیمات حل کننده ویژه برای رویدادها
model.sol(‘sol1’).feature(‘t1’).set(‘tout’, ‘tsteps’);
model.sol(‘sol1’).feature(‘t1’).set(‘atolglobal’, ‘1e-6’);
model.sol(‘sol1’).feature(‘t1’).set(‘initialstepbdfactive’, ‘on’);
model.sol(‘sol1’).feature(‘t1’).set(‘initialstepbdf’, ‘1e-6’);
model.sol(‘sol1’).feature(‘t1’).set(‘eventtol’, ‘2e-6’);
model.sol(‘sol1’).feature(‘t1’).set(‘ewtrescale’, ‘off’);
model.sol(‘sol1’).runAll;
همچنین ببینید
model.ode() ، model.init()