Browse Source

Add all formalisms and the FTG+PM model

Yentl Van Tendeloo 7 years ago
parent
commit
f05bd59b92

+ 20 - 0
models/WSC/ADEVS.mvc

@@ -0,0 +1,20 @@
+SimpleAttribute PythonCode {}
+SimpleAttribute String {}
+
+Class AtomicDEVSBlock {
+    name : String
+    timeAdvance: PythonCode
+    outputFnc: PythonCode
+    intTransition: PythonCode
+    extTransition: PythonCode
+    initialState: PythonCode
+}
+
+Class Port {
+    name: String
+}
+
+Class InputPort: Port {}
+Class OutputPort: Port {}
+
+Association DEVSBlockToPort(AtomicDEVSBlock, Port) {}

+ 24 - 0
models/WSC/CDEVS.mvc

@@ -0,0 +1,24 @@
+SimpleAttribute PythonCode {}
+SimpleAttribute String {}
+
+Class CoupledDEVSBlock {
+    name : String
+}
+
+Class DEVSInstance {
+    name: String
+    type: String
+}
+
+Association SubModel(CoupledDEVSBlock, DEVSInstance) {}
+
+Class Port {
+    name: String
+}
+
+Class InputPort: Port {}
+Class OutputPort: Port {}
+
+Association DEVSBlockToPort(CoupledDEVSBlock, Port) {}
+Association DEVSInstanceToPort(DEVSInstance, Port) {}
+Association Channel (Port, Port) {}

+ 34 - 0
models/WSC/DEVS.mvc

@@ -0,0 +1,34 @@
+SimpleAttribute PythonCode {}
+SimpleAttribute String {}
+
+Class BaseDEVSBlock {
+    name: String
+}
+
+Class AtomicDEVSBlock: BaseDEVSBlock {
+    timeAdvance: PythonCode
+    outputFnc: PythonCode
+    intTransition: PythonCode
+    extTransition: PythonCode
+    initialState: PythonCode
+}
+
+Class CoupledDEVSBlock: BaseDEVSBlock {}
+
+Class DEVSInstance {
+    name: String
+    type: String
+}
+
+Association SubModel(CoupledDEVSBlock, DEVSInstance) {}
+
+Class Port {
+    name: String
+}
+
+Class InputPort: Port {}
+Class OutputPort: Port {}
+
+Association DEVSBlockToPort(BaseDEVSBlock, Port) {}
+Association DEVSInstanceToPort(DEVSInstance, Port) {}
+Association Channel (Port, Port) {}

+ 5 - 0
models/WSC/metrics.mvc

@@ -0,0 +1,5 @@
+SimpleAttribute String {}
+
+Class Metrics {
+    data : String
+}

+ 27 - 0
models/WSC/pm.mvc

@@ -0,0 +1,27 @@
+SimpleAttribute String {}
+SimpleAttribute Natural {}
+SimpleAttribute PythonCode {}
+
+Class ProcessNode {}
+
+Class Activity : ProcessNode {
+    distribution : PythonCode
+}
+
+Class ParallelSplit : ProcessNode {}
+
+Class Synchronization : ProcessNode {}
+
+Class ExclusiveChoice : ProcessNode {
+    choices : Natural
+    distribution : PythonCode
+}
+
+Class MultiInstance : ProcessNode {
+    nr_instances : Natural
+    distribution : PythonCode
+}
+
+Class SimpleMerge : ProcessNode {}
+
+Association Next (ProcessNode, ProcessNode) {}

+ 70 - 0
models/WSC/pm_PM_to_DEVS.mvc

@@ -0,0 +1,70 @@
+Start start {}
+
+Exec translate {
+    name = "formalisms/PM/to_DEVS"
+}
+
+Exec merge {
+    name = "formalisms/DEVS/merge"
+}
+
+Exec simulate {
+    name = "formalisms/DEVS/simulate"
+}
+
+Finish finish {}
+
+Next (start, model) {}
+Next (model, translate) {}
+Next (translate, merge) {}
+Next (merge, simulate) {}
+Next (simulate, finish) {}
+
+Data pm_model {
+    name = "PM"
+    type = "formalisms/PM/PM_MM"
+}
+
+Data cdevs_model {
+    name = ""
+    type = "formalisms/DEVS/CDEVS_MM"
+}
+
+Data adevs_model {
+    name = "ADEVS library"
+    type = "formalisms/DEVS/ADEVS_MM"
+}
+
+Data devs_model {
+    name = ""
+    type = "formalisms/DEVS/DEVS_MM"
+}
+
+Data metrics_model {
+    name = ""
+    type = "formalisms/Metrics/Metrics_MM"
+}
+
+Consumes (translate, pm_model) {
+    name = "PM"
+}
+Produces (translate, cdevs_model) {
+    name = "CDEVS"
+}
+
+Consumes (merge, adevs_model) {
+    name = "ADEVS"
+}
+Consumes (merge, cdevs_model) {
+    name = "CDEVS"
+}
+Produces (merge, devs_model) {
+    name = "DEVS"
+}
+
+Consumes (simulate, devs_model) {
+    name = "DEVS"
+}
+Produces (simulate, metrics_model) {
+    name = "metrics"
+}

+ 27 - 0
models/pm_translate.py

@@ -0,0 +1,27 @@
+import sys
+sys.path.append("wrappers/")
+
+from modelverse import *
+
+init()
+login("admin", "admin")
+
+model_add("formalisms/DEVS/CDEVS_MM", "formalisms/SimpleClassDiagrams", open("models/WSC/CDEVS.mvc", 'r').read())
+model_add("formalisms/DEVS/ADEVS_MM", "formalisms/SimpleClassDiagrams", open("models/WSC/ADEVS.mvc", 'r').read())
+model_add("formalisms/DEVS/DEVS_MM", "formalisms/SimpleClassDiagrams", open("models/WSC/DEVS.mvc", 'r').read())
+model_add("formalisms/Metrics/Metrics_MM", "formalisms/SimpleClassDiagrams", open("models/WSC/metrics.mvc", 'r').read())
+model_add("formalisms/PM/PM_Extended_MM", "formalisms/SimpleClassDiagrams", open("models/WSC/pm.mvc", 'r').read())
+
+"""
+model_add("models/PM/to_DEVS", "formalisms/ProcessModel", open("models/WSC/pm_PM_to_DEVS.mvc").read())
+
+model_add("models/DEVS/PM_library", "formalisms/DEVS/ADEVS_MM", open("models/WSC/pm_library.mvc", 'r').read())
+model_add("models/PM/example_PM", "formalisms/PM/PM_Extended_MM", open("models/WSC/pm_example.mvc", 'r').read())
+
+transformation_add_MT("formalisms/PM/to_DEVS", {"PM": "formalisms/PM/PM_Extended_MM"}, {"ADEVS": "formalisms/DEVS/ADEVS_MM"}, open("models/WSC/PM_to_DEVS.mvc", 'r').read())
+transformation_add_AL("formalisms/DEVS/merge", {"ADEVS": "formalisms/DEVS/ADEVS_MM", "CDEVS": "formalisms/DEVS/CDEVS_MM"}, {"DEVS": "formalisms/DEVS/DEVS_MM"}, open("models/WSC/DEVS_merge.alc", 'r').read())
+transformation_add_AL("formalisms/DEVS/simulate", {"DEVS": "formalisms/DEVS/DEVS_MM"}, {"metrics": "formalisms/Metrics/Metrics_MM"}, open("models/WSC/DEVS_simulate.alc", 'r').read())
+transformation_add_AL("formalisms/Metrics/plot", {"metrics": "formalisms/Metrics/Metrics_MM"}, {"graph": "formalisms/Graph/Graph_MM"}, open("models/WSC/Metrics_plot.alc", 'r').read())
+
+pm_execute("models/PM/to_DEVS", {"PM": "models/PM/example_PM", "ADEVS library": "models/DEVS/PM_library", "Graph": "models/Graph/graph"}, {})
+"""

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Thu May  3 09:37:35 2018
+Date:   Mon May 14 09:23:58 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server