Creating Alternately Executing Subsystems
يمكننا استخدام الانظمة الفرعية المتوقف تنفيذها على اشارة تحكم مع بلوك merge الذى يستخدم لدمج اشارتين معا لعمل انظمة فرعية يتم تنفيذها بالتبادل ويتم اعتمادها على حالة الموديل
والان سنقوم بتطبيق المثال الاتى وهو موديل لعمل full-wave rectifier والتى تستخدم فى تحويل التيار المتردد الى تيار مستمر :
ويتكون من نظامان فرعيان كما يلى النظام الفرعى الاول
النظام الفرعى الثانى 
وتكون نتيجة التنفيذ كما يلى ::
Conditional Execution Behavior
يقوم السميولينك بتجنب البلوكات الغير ضرورية اثناء عملية تنفيذ المحاكاة ومن امثلة هذه البلوكات Switch او Multiport Switch وهما يستخدمان فى تحويل الاشارات وايضا من البلوكات التى من الممكن تكون غير ضرورية الانظمة الفرعية المرتبطة بشرط لتنفيذها وهذا يسمى
conditional execution (CE) behavior.
وفى المثال الاتى سوف نقوم بمعرفة هذه الخاصية :
والنظام الفرعى كما فى الصورة الاتية :
وقبل عمل ال simulation قم بالدخول الى قائمة format ثم اختيار
Block displays
ثم sorted order كما فى الصورة الاتية ::
وبعد عمل ال simulation نلاحظ وجود ارقام فوق كل بلوك وهذه الارقام تكون على الصورة الاتية :
X:Y
حيث يعبر عن X على انها الطبقة layer الموجود فيها البلوك فكل البلوكات الموجودة فى الطبقة الاساسية يكون لها ال X=0
اما Y فترمز الى ترتيب تنفيذ البلوك ففى الشكل الاتى نجد :
بلوكات ال
Pulse generator
و constant و subsystem و gain و scope تحتوى على رقم X يساوى الى صفر اى انها تنتمى الى الطبقة الاساسية فى الموديل ويكون ترتيب تنفيذها وهو الرقم Y كما يلى
1- Pulse generator
2- constant
3- subsystem
4- gain
5- scope
ونلاحظ هنا ان بلوك subsystem عليه الاتى 0:2{1} وهذا معناه انه يحتوى على الطبقة الاولى وهى تاتى بعد الطبقة الاساسية
وبالدخول الى النظام الفرعى نجد الاتى ::
ونجد بلوك الادخال يحتوى على الرقم الاتى 1:0 وهذا معناه انه موجود فى الطبقة الاولى و سيكون تنفيذه فى البداية وبلوك الاخراج لا يحتوى على اى ارقام لانه لم يتم تنفيذه لعدم وجود ما يتم اخراجه والان قم بالضغط كليك يمين على بلوك subsystem واختيار Subsystem parameters 
وعندما تفتح لك نافذه الاختيار قم بوضع علامة صح حول
Propagate execution context across subsystem boundary
وهذا فائدته ان يقوم بجعل تنفيذ البلوكات الموجودة حول النظام الفرعى مرتبط بتنفيذ النظام الفرعى وهذا يعمل على زيادة سرعة المحاكاة مثلا لدينا بلوك gain لن نحتاجه الا عندما يتم تنفيذ النظام الفرعى وعند ايقاف النظام الفرعى غير مهم تنفيذ هذا البلوك
والان قم بعمل المحاكاة مرة اخرى والان سنلاحظ الارقام على البلوكات :
والان اصبح البلوك constant والبلوك gain ينفذان مع النظام الفرعى فقط على الرغم انهم خارج النظام الفرعى وموجودين فى النظام الاساسى ويكون ترتيب التنفيذ كالاتى
1- constant
2- subsystem
3- gain
وهذا ما يعرف بى Conditional Execution Behavior او
CE behavior
Propagating Execution Contexts
عموما برنامج السميولينك يقوم بتعريف ما يسمى بى execution context وهذا عبارة عن مجموعة من البلوكات التى تنفذ مرة واحدة خلال زمن معالجة النموذج .
ويقوم ايضا بعمل execution context للنظام الاساسى وايضا لكل نظام فرعى .
واى execution context هو مجموعة البلوكات التى يحتويها النظام
وعند تنفيذ المحاكاة فان السميولينك يقوم بالبحث عن الشروط الاتية فى كل بلوك:
1- هل خرج البلوك مطلوب فقط لتنفيذ نظام فرعى او دخله يتغير فقط نتيجة تنفيذ نظام فرعى
2-
هل هذا البلوك مرتبط فى تنفيذه مع نظام فرعى وهذه الحالة عندما يكون هذا البلوك على حدود النظام الفرعى
3-
هل خرج البلوك ليس نقطة أختبار testpoint وسوف نعرف ما هى نقط الاختبار لاحقا
4-
هل مسموح للبلوك ان يتوارث execution context
5- هل البلوك ليس من النوع multirate block
6- هل زمن التقطيع sample time متوارث او ثابت
واذا فعلا وجد ان هذه الشروط محققة ومسموح ان يتم توليد execution context
فان السميولينك يقوم بنقل البلوك الى execution context الخاص بالنظام الفرعى وهذا للتاكد ان هذا البلوك يتم تنفيذه فقط عندما يتم تنفيذ النظام الفرعى
وللتعامل مع بلوك Switch
يقوم السميولينك بمعالجة كل فرع من دخل البلوك بصورة مخفية ويكون لكل فرع
execution context
الخاص به والذى يتم تفعيله عندما يتم اختيار تنفيذ الفرع وعموما فان كل فرع من هذا البلوك يتم تنفيذه فقط عندما يتم اختياره كدخل .
ملحوظة :: لالغاء خاصية conditional execution behavior
قم بالدخول ال Configuration Parameters ثم Optimization وضع علامة صح عند Conditional input branch execution
ملحوظة ::هناك بعض الحالات لا يستطيع البرنامج استخدام خاصية
Propagate execution context across subsystem boundary
وهى عندما يكون النظام الفرعى من النوع triggered subsystem او النظام الفرعى له اكثر من مدخل او مخرج ولها شرط ابتدائى غير الصفر وفى هذه الحالة البلوك الموجود فى خرج النظام الفرعى لا يمكنه ان يتوارث
subsystem's execution context
ويكمننا اظهار مستطيلات حول المداخل التى لا يستخدم خاصية
Propagate
execution context
وهذا عن طريق الضغط اختيار قائمة format ثم Block Displays ثم
Execution Context Indicator
ويكون شكلها كما يلى 
رابط الموضوع