Bläddra i källkod

Add multi instance

Yentl Van Tendeloo 7 år sedan
förälder
incheckning
67a0f1f343
2 ändrade filer med 52 tillägg och 1 borttagningar
  1. 51 0
      models/WSC/PM_to_DEVS.mvc
  2. 1 1
      models/WSC/pm_library.mvc

+ 51 - 0
models/WSC/PM_to_DEVS.mvc

@@ -290,4 +290,55 @@ Composite schedule {
             Post_CDEVS/DEVSInstanceToPort (post_merge_1, post_merge_3) {}
         }
     }
+
+    {Contains} ForAll multi {
+        LHS {
+            Pre_PM/Initial pre_multi_0 {
+                label = "0"
+            }
+        }
+
+        RHS {
+            Post_PM/Initial post_multi_0 {
+                label = "0"
+            }
+            Post_CDEVS/DEVSInstance post_multi_1 {
+                label = "1"
+                value_name = $
+                    String function value(model : Element, name : String, mapping : Element):
+                        return read_attribute(model, mapping["0"], "name")!
+                    $
+                value_type = $
+                    String function value(model : Element, name : String, mapping : Element):
+                        return "MultiInstance"!
+                    $
+                value_parameters = $
+                    String function value(model : Element, name : String, mapping : Element):
+                        return "[" + cast_value(read_attribute(model, mapping["0"], "name")) + ", " + cast_string(read_attribute(model, mapping["0"], "nr_instances")) + ", " + cast_string(read_attribute(model, mapping["0"], "distribution")) + "]"!
+                    $
+            }
+            Trace (post_multi_0, post_multi_1) {}
+
+            Post_CDEVS/InputPort post_multi_2 {
+                name = "resource_in"
+            }
+            Post_CDEVS/DEVSInstanceToPort (post_multi_1, post_multi_2) {}
+
+            Post_CDEVS/OutputPort post_multi_3 {
+                name = "resource_out"
+            }
+            Post_CDEVS/DEVSInstanceToPort (post_multi_1, post_multi_3) {}
+
+            Post_CDEVS/InputPort post_multi_4 {
+                name = "control_in"
+            }
+            Post_CDEVS/DEVSInstanceToPort (post_multi_1, post_multi_4) {}
+
+            Post_CDEVS/OutputPort post_multi_5 {
+                name = "control_out"
+            }
+            Post_CDEVS/DEVSInstanceToPort (post_multi_1, post_multi_5) {}
+        }
+    }
+
 }

+ 1 - 1
models/WSC/pm_library.mvc

@@ -333,7 +333,7 @@ AtomicDEVSBlock MultiInstance {
             def task_time(self):
                 return self.distribution(self.counter)
 
-        self.state, self.elapsed = MultiInstanceState(self.name, parameters[0], parameters[1])
+        self.state, self.elapsed = MultiInstanceState(parameters[0], parameters[1], parameters[2])
         """
 
     timeAdvance = """