diff --git a/0mq/funbody_zmq.dir/concore2.py b/0mq/funbody_zmq.dir/concore2.py
new file mode 100644
index 0000000..e3ec817
--- /dev/null
+++ b/0mq/funbody_zmq.dir/concore2.py
@@ -0,0 +1,113 @@
+import time
+import os
+from ast import literal_eval
+import sys
+import re
+
+#if windows, create script to kill this process
+# because batch files don't provide easy way to know pid of last command
+# ignored for posix!=windows, because "concorepid" is handled by script
+# ignored for docker (linux!=windows), because handled by docker stop
+if hasattr(sys, 'getwindowsversion'):
+ with open("concorekill.bat","w") as fpid:
+ fpid.write("taskkill /F /PID "+str(os.getpid())+"\n")
+
+try:
+ iport = literal_eval(open("concore.iport").read())
+except:
+ iport = dict()
+try:
+ oport = literal_eval(open("concore.oport").read())
+except:
+ oport = dict()
+
+
+s = ''
+olds = ''
+delay = 1
+retrycount = 0
+inpath = "./in" #must be rel path for local
+outpath = "./out"
+
+#9/21/22
+try:
+ sparams = open(inpath+"1/concore.params").read()
+ if sparams[0] == '"': #windows keeps "" need to remove
+ sparams = sparams[1:]
+ sparams = sparams[0:sparams.find('"')]
+ if sparams != '{':
+ print("converting sparams: "+sparams)
+ sparams = "{'"+re.sub(';',",'",re.sub('=',"':",re.sub(' ','',sparams)))+"}"
+ print("converted sparams: " + sparams)
+ try:
+ params = literal_eval(sparams)
+ except:
+ print("bad params: "+sparams)
+except:
+ params = dict()
+#9/30/22
+def tryparam(n,i):
+ try:
+ return params[n]
+ except:
+ return i
+
+
+#9/12/21
+def default_maxtime(default):
+ global maxtime
+ try:
+ maxtime = literal_eval(open(inpath+"1/concore.maxtime").read())
+ except:
+ maxtime = default
+default_maxtime(100)
+
+def unchanged():
+ global olds,s
+ if olds==s:
+ s = ''
+ return True
+ else:
+ olds = s
+ return False
+
+def read(port, name, initstr):
+ global s,simtime,retrycount
+ time.sleep(delay)
+ try:
+ infile = open(inpath+str(port)+"/"+name);
+ ins = infile.read()
+ except:
+ ins = initstr
+ while len(ins)==0:
+ time.sleep(delay)
+ ins = infile.read()
+ retrycount += 1
+ s += ins
+ inval = literal_eval(ins)
+ simtime = max(simtime,inval[0])
+ return inval[1:]
+
+def write(port, name, val, delta=0):
+ global outpath,simtime
+ if isinstance(val,str):
+ time.sleep(2*delay)
+ elif isinstance(val,list)==False:
+ print("mywrite must have list or str")
+ quit()
+ try:
+ with open(outpath+str(port)+"/"+name,"w") as outfile:
+ if isinstance(val,list):
+ outfile.write(str([simtime+delta]+val))
+ simtime += delta
+ else:
+ outfile.write(val)
+ except:
+ print("skipping"+outpath+str(port)+"/"+name);
+
+def initval(simtime_val):
+ global simtime
+ val = literal_eval(simtime_val)
+ simtime = val[0]
+ return val[1:]
+
diff --git a/0mq/funbody_zmq.py b/0mq/funbody_zmq.py
new file mode 100644
index 0000000..b3ecd63
--- /dev/null
+++ b/0mq/funbody_zmq.py
@@ -0,0 +1,45 @@
+# funbody2_zmq.py
+import zmq
+import time
+import concore
+import concore2
+
+print("funbody using 0mq")
+
+context = zmq.Context()
+socket = context.socket(zmq.REP)
+socket.bind("tcp://*:2346")
+
+concore.delay = 0.07
+concore2.delay = 0.07
+concore2.inpath = concore.inpath
+concore2.outpath = concore.outpath
+concore2.simtime = 0
+concore.default_maxtime(100)
+init_simtime_u = "[0.0, 0.0, 0.0]"
+init_simtime_ym = "[0.0, 0.0, 0.0]"
+
+u = concore.initval(init_simtime_u)
+ym = concore2.initval(init_simtime_ym)
+
+while concore2.simtime < concore.maxtime:
+ msg = socket.recv_json()
+ if msg["action"] == "fun":
+ u = msg["params"]["u"]
+ concore.simtime = u[0]
+ u = u[1:]
+ concore.write(concore.oport['U2'], "u", u)
+ print(u)
+ old2 = concore2.simtime
+ while concore2.unchanged() or concore2.simtime <= old2:
+ ym = concore2.read(concore.iport['Y2'], "ym", init_simtime_ym)
+ ym_full = [concore2.simtime] + ym
+ print(f"Replying with {ym_full}")
+ socket.send_json({"ym": ym_full})
+ print(f"funbody u={u} ym={ym} time={concore2.simtime}")
+ else:
+ print("undefined action: " + str(msg.get("action", "None")))
+ socket.send_json({"error": "undefined action"})
+ break
+
+print("retry=" + str(concore.retrycount))
\ No newline at end of file
diff --git a/0mq/funcall_zmq.dir/concore2.py b/0mq/funcall_zmq.dir/concore2.py
new file mode 100644
index 0000000..e3ec817
--- /dev/null
+++ b/0mq/funcall_zmq.dir/concore2.py
@@ -0,0 +1,113 @@
+import time
+import os
+from ast import literal_eval
+import sys
+import re
+
+#if windows, create script to kill this process
+# because batch files don't provide easy way to know pid of last command
+# ignored for posix!=windows, because "concorepid" is handled by script
+# ignored for docker (linux!=windows), because handled by docker stop
+if hasattr(sys, 'getwindowsversion'):
+ with open("concorekill.bat","w") as fpid:
+ fpid.write("taskkill /F /PID "+str(os.getpid())+"\n")
+
+try:
+ iport = literal_eval(open("concore.iport").read())
+except:
+ iport = dict()
+try:
+ oport = literal_eval(open("concore.oport").read())
+except:
+ oport = dict()
+
+
+s = ''
+olds = ''
+delay = 1
+retrycount = 0
+inpath = "./in" #must be rel path for local
+outpath = "./out"
+
+#9/21/22
+try:
+ sparams = open(inpath+"1/concore.params").read()
+ if sparams[0] == '"': #windows keeps "" need to remove
+ sparams = sparams[1:]
+ sparams = sparams[0:sparams.find('"')]
+ if sparams != '{':
+ print("converting sparams: "+sparams)
+ sparams = "{'"+re.sub(';',",'",re.sub('=',"':",re.sub(' ','',sparams)))+"}"
+ print("converted sparams: " + sparams)
+ try:
+ params = literal_eval(sparams)
+ except:
+ print("bad params: "+sparams)
+except:
+ params = dict()
+#9/30/22
+def tryparam(n,i):
+ try:
+ return params[n]
+ except:
+ return i
+
+
+#9/12/21
+def default_maxtime(default):
+ global maxtime
+ try:
+ maxtime = literal_eval(open(inpath+"1/concore.maxtime").read())
+ except:
+ maxtime = default
+default_maxtime(100)
+
+def unchanged():
+ global olds,s
+ if olds==s:
+ s = ''
+ return True
+ else:
+ olds = s
+ return False
+
+def read(port, name, initstr):
+ global s,simtime,retrycount
+ time.sleep(delay)
+ try:
+ infile = open(inpath+str(port)+"/"+name);
+ ins = infile.read()
+ except:
+ ins = initstr
+ while len(ins)==0:
+ time.sleep(delay)
+ ins = infile.read()
+ retrycount += 1
+ s += ins
+ inval = literal_eval(ins)
+ simtime = max(simtime,inval[0])
+ return inval[1:]
+
+def write(port, name, val, delta=0):
+ global outpath,simtime
+ if isinstance(val,str):
+ time.sleep(2*delay)
+ elif isinstance(val,list)==False:
+ print("mywrite must have list or str")
+ quit()
+ try:
+ with open(outpath+str(port)+"/"+name,"w") as outfile:
+ if isinstance(val,list):
+ outfile.write(str([simtime+delta]+val))
+ simtime += delta
+ else:
+ outfile.write(val)
+ except:
+ print("skipping"+outpath+str(port)+"/"+name);
+
+def initval(simtime_val):
+ global simtime
+ val = literal_eval(simtime_val)
+ simtime = val[0]
+ return val[1:]
+
diff --git a/0mq/funcall_zmq.py b/0mq/funcall_zmq.py
new file mode 100644
index 0000000..dfbb0de
--- /dev/null
+++ b/0mq/funcall_zmq.py
@@ -0,0 +1,39 @@
+# funcall2_zmq.py
+import zmq
+import time
+import concore
+import concore2
+
+print("funcall using 0mq")
+
+context = zmq.Context()
+socket = context.socket(zmq.REQ)
+socket.connect("tcp://localhost:2346")
+
+concore.delay = 0.07
+concore2.delay = 0.07
+concore2.inpath = concore.inpath
+concore2.outpath = concore.outpath
+concore2.simtime = 0
+concore.default_maxtime(100)
+init_simtime_u = "[0.0, 0.0, 0.0]"
+init_simtime_ym = "[0.0, 0.0, 0.0]"
+
+u = concore.initval(init_simtime_u)
+ym = concore2.initval(init_simtime_ym)
+
+while concore2.simtime < concore.maxtime:
+ while concore.unchanged():
+ u = concore.read(concore.iport['U'], "u", init_simtime_u)
+ message = {
+ "action": "fun",
+ "params": {"u": [concore.simtime] + u}
+ }
+ socket.send_json(message)
+ response = socket.recv_json()
+ ym = response["ym"]
+ concore2.simtime = ym[0]
+ ym = ym[1:]
+ concore2.write(concore.oport['Y'], "ym", ym)
+ print(f"funcall 0mq u={u} ym={ym} time={concore2.simtime}")
+print("retry=" + str(concore.retrycount))
\ No newline at end of file
diff --git a/0mq/test0mq3.graphml b/0mq/test0mq3.graphml
new file mode 100644
index 0000000..4bc62b4
--- /dev/null
+++ b/0mq/test0mq3.graphml
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+ PZ:pmpymax.py
+
+
+
+
+
+
+
+
+
+
+ CZ:cpymax.py
+
+
+
+
+
+
+
+
+
+
+ F1:funcall_zmq.py
+
+
+
+
+
+
+
+
+
+
+ F2:funbody_zmq.py
+
+
+
+
+
+
+
+
+
+ U
+
+
+
+
+
+
+
+
+
+
+
+ Y
+
+
+
+
+
+
+
+
+
+
+
+ U2
+
+
+
+
+
+
+
+
+
+
+
+ Y2
+
+
+
+
+
+
+
+ 1664644923582
+
+ DEL_NODE
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciXQ==
+
+
+ ADD_NODE
+ WyJQWjpwbXB5bWF4LnB5Iix7IndpZHRoIjoxMzYsImhlaWdodCI6NTAsInNoYXBlIjoicmVjdGFuZ2xlIiwib3BhY2l0eSI6MSwiYmFja2dyb3VuZENvbG9yIjoiI2ZmY2MwMCIsImJvcmRlckNvbG9yIjoiIzAwMCIsImJvcmRlcldpZHRoIjoxfSwib3JkaW4iLHsieCI6NTg3LjE1NzgxMTg0NjY1NTYsInkiOjEwMC40NDIzMjkyNjUzNzgzNn0se30sImJkOTJmOWQ4LTdkNjMtNDJiMi05NjhiLTM5MDllZjRjNzIzNyJd
+
+ a53a7f7273a40c7970938b6de1829249
+
+
+ 1664644939781
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6MTAwLCJ5IjoxMDB9LHsieCI6NDA0LjIzNDYxMDc2NDgxNDIsInkiOi04OS4wMTM4NDMyODM2NzE3OH1d
+
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6NDA0LjIzNDYxMDc2NDgxNDIsInkiOi04OS4wMTM4NDMyODM2NzE3OH0seyJ4IjoxMDAsInkiOjEwMH1d
+
+ 3d4a875a8a6ea281598aa70364b0ea82
+
+
+ 1664644951652
+
+ DEL_NODE
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiXQ==
+
+
+ ADD_NODE
+ WyJDWjpjcHltYXgucHkiLHsid2lkdGgiOjEyMiwiaGVpZ2h0Ijo1MCwic2hhcGUiOiJyZWN0YW5nbGUiLCJvcGFjaXR5IjoxLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJvcmRpbiIseyJ4IjotMTM3Ljc3NjIwMzU0OTQyMzgzLCJ5Ijo5MS4zMjAxMjcwNjgyNTY0MX0se30sImQ5NWY3ODg3LTQyYmYtNGUxMi1hMDIyLTAyMTg2OTcwMWM2YSJd
+
+ 5ed7e3d12fd25656b2ad03e29c307d65
+
+
+ 1664644958838
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6MTAwLCJ5IjoxMDB9LHsieCI6OTcuNDEwNzY5MjcwMDg2NjksInkiOi05MS42MDMwNzQwMTM1ODUxfV0=
+
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6OTcuNDEwNzY5MjcwMDg2NjksInkiOi05MS42MDMwNzQwMTM1ODUxfSx7IngiOjEwMCwieSI6MTAwfV0=
+
+ 35c613c8203b65e1f44e066b3d783143
+
+
+ 1664644988539
+
+ DEL_NODE
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiXQ==
+
+
+ ADD_NODE
+ WyJGMTpmdW5jYWxsLnB5Iix7IndpZHRoIjoxMTEsImhlaWdodCI6NTAsInNoYXBlIjoicmVjdGFuZ2xlIiwib3BhY2l0eSI6MSwiYmFja2dyb3VuZENvbG9yIjoiI2ZmY2MwMCIsImJvcmRlckNvbG9yIjoiIzAwMCIsImJvcmRlcldpZHRoIjoxfSwib3JkaW4iLHsieCI6MTAwLCJ5Ijo5NC43NzM2MjI4MjYyMzMxMX0se30sImY1NmY4YjI0LTQxYTYtNDViNC04ODJiLTY1OTYwNDBiNmFmMCJd
+
+ 33d0b0cc4d3dbe3c42323e33f06993e9
+
+
+ 1664645002278
+
+ DEL_NODE
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiXQ==
+
+
+ ADD_NODE
+ WyJGMjpmdW5ib2R5LnB5Iix7IndpZHRoIjoxMjAsImhlaWdodCI6NTAsInNoYXBlIjoicmVjdGFuZ2xlIiwib3BhY2l0eSI6MSwiYmFja2dyb3VuZENvbG9yIjoiI2ZmY2MwMCIsImJvcmRlckNvbG9yIjoiIzAwMCIsImJvcmRlcldpZHRoIjoxfSwib3JkaW4iLHsieCI6MzM2LjAxODYzNzA4NTU4NjY1LCJ5IjoxMDAuOTM3NjkyNDQ1MzAzNDF9LHt9LCJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiXQ==
+
+ 8d0d4a735631afe6241c66143fb29db8
+
+
+ 1664645010353
+
+ SET_POS
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsieCI6MTEwLCJ5IjoxMTB9LHsieCI6Mzk0LjgxNTM4MDI5MDQ2NDMsInkiOjEwMC45Mzc2OTI0NDUzMDM0MX1d
+
+
+ SET_POS
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsieCI6Mzk0LjgxNTM4MDI5MDQ2NDMsInkiOjEwMC45Mzc2OTI0NDUzMDM0MX0seyJ4IjoxMTAsInkiOjExMH1d
+
+ 8a01a9ca8b3706bc3b1ce4de33669b6d
+
+
+ 1664645015576
+
+ DEL_EDGE
+ WyIwZjk1MWZiYy0wZDNmLTQzYzAtYmJmMC04NjViYzQ3ZjEyMGUiXQ==
+
+
+ ADD_EDGE
+ W3sic291cmNlSUQiOiJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLCJ0YXJnZXRJRCI6ImY1NmY4YjI0LTQxYTYtNDViNC04ODJiLTY1OTYwNDBiNmFmMCIsImxhYmVsIjoiVSIsInN0eWxlIjp7InRoaWNrbmVzcyI6MSwiYmFja2dyb3VuZENvbG9yIjoiIzgyNzcxNyIsInNoYXBlIjoic29saWQifSwiaWQiOiIwZjk1MWZiYy0wZDNmLTQzYzAtYmJmMC04NjViYzQ3ZjEyMGUifV0=
+
+ 14416fc2e3c48db65e2b5e1012027ee0
+
+
+ 1664645043815
+
+ DEL_EDGE
+ WyIzY2ZiNDBjZC01NTdhLTQ4NTAtOTNhNi1mZGMwOWNkMDA1ZjAiXQ==
+
+
+ ADD_EDGE
+ W3sic291cmNlSUQiOiJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLCJ0YXJnZXRJRCI6ImRiMzFiZTNmLTNlNTgtNGMzNi05NzlkLTQxZmIyOGFlZmU2OCIsImxhYmVsIjoiVTEiLCJzdHlsZSI6eyJ0aGlja25lc3MiOjEsImJhY2tncm91bmRDb2xvciI6IiM3YzRkZmYiLCJzaGFwZSI6InNvbGlkIn0sImlkIjoiM2NmYjQwY2QtNTU3YS00ODUwLTkzYTYtZmRjMDljZDAwNWYwIn1d
+
+ 326a920ffd7e662bc64ca95c086fb9de
+
+
+ 1664645057658
+
+ DEL_EDGE
+ WyI3MTRkYjk4OS01NjcyLTQwM2ItYWU3Ni1mZDlhMjA4OTM0NzUiXQ==
+
+
+ ADD_EDGE
+ W3sic291cmNlSUQiOiJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLCJ0YXJnZXRJRCI6ImJkOTJmOWQ4LTdkNjMtNDJiMi05NjhiLTM5MDllZjRjNzIzNyIsImxhYmVsIjoiVTIiLCJzdHlsZSI6eyJ0aGlja25lc3MiOjEsImJhY2tncm91bmRDb2xvciI6IiNmZjZkMDAiLCJzaGFwZSI6InNvbGlkIn0sImlkIjoiNzE0ZGI5ODktNTY3Mi00MDNiLWFlNzYtZmQ5YTIwODkzNDc1In1d
+
+ 4593337e9924ae4b23dc5c5576c31394
+
+
+ 1664645068951
+
+ DEL_EDGE
+ WyJhOGFlNzg5MC1iMmJiLTQyNzMtODc1My0wMTgxY2ViNDg2YzEiXQ==
+
+
+ ADD_EDGE
+ W3sic291cmNlSUQiOiJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLCJ0YXJnZXRJRCI6ImRiMzFiZTNmLTNlNTgtNGMzNi05NzlkLTQxZmIyOGFlZmU2OCIsImxhYmVsIjoiWTIiLCJzdHlsZSI6eyJ0aGlja25lc3MiOjEsImJhY2tncm91bmRDb2xvciI6IiNmNDQzMzYiLCJzaGFwZSI6InNvbGlkIn0sImlkIjoiYThhZTc4OTAtYjJiYi00MjczLTg3NTMtMDE4MWNlYjQ4NmMxIn1d
+
+ 568d8b7a109ffacc4b912095793cb2ca
+
+
+ 1664645081283
+
+ DEL_EDGE
+ WyI1NWI5OWFiNi1hN2Q2LTRjNjctYWI0ZS1hOGUyOTM5YzFiMGYiXQ==
+
+
+ ADD_EDGE
+ W3sic291cmNlSUQiOiJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLCJ0YXJnZXRJRCI6ImY1NmY4YjI0LTQxYTYtNDViNC04ODJiLTY1OTYwNDBiNmFmMCIsImxhYmVsIjoiWTEiLCJzdHlsZSI6eyJ0aGlja25lc3MiOjEsImJhY2tncm91bmRDb2xvciI6IiNmZjZkMDAiLCJzaGFwZSI6InNvbGlkIn0sImlkIjoiNTViOTlhYjYtYTdkNi00YzY3LWFiNGUtYThlMjkzOWMxYjBmIn1d
+
+ 0d0aa0179f22f9d73a11f8ccfbcc145e
+
+
+ 1664645089735
+
+ SET_POS
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsieCI6MTAwLCJ5IjoxMDB9LHsieCI6MTAwLCJ5Ijo5NC43NzM2MjI4MjYyMzMxMX1d
+
+
+ SET_POS
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsieCI6MTAwLCJ5Ijo5NC43NzM2MjI4MjYyMzMxMX0seyJ4IjoxMDAsInkiOjEwMH1d
+
+ 1c19591402c0f2daca7d2b4a8af5e956
+
+
+ 1664645092868
+
+ DEL_EDGE
+ WyI3OWE1NDdmNS02NzBhLTQ1ZjYtYTc4My02ZGI4ZmYwZTY1NTkiXQ==
+
+
+ ADD_EDGE
+ W3sic291cmNlSUQiOiJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLCJ0YXJnZXRJRCI6ImQ5NWY3ODg3LTQyYmYtNGUxMi1hMDIyLTAyMTg2OTcwMWM2YSIsImxhYmVsIjoiWSIsInN0eWxlIjp7InRoaWNrbmVzcyI6MSwiYmFja2dyb3VuZENvbG9yIjoiIzgyNzcxNyIsInNoYXBlIjoic29saWQifSwiaWQiOiI3OWE1NDdmNS02NzBhLTQ1ZjYtYTc4My02ZGI4ZmYwZTY1NTkifV0=
+
+ 3c913497d8aa8f1c79bbdc03c3feec16
+
+
+ 1664645142026
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6OTcuNDEwNzY5MjcwMDg2NjksInkiOi05MS42MDMwNzQwMTM1ODUxfSx7IngiOi0xNzAuNDQxMDYwODg1NDY2OTUsInkiOjkwLjAxMzUzMjc3NDgxNDY5fV0=
+
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6LTE3MC40NDEwNjA4ODU0NjY5NSwieSI6OTAuMDEzNTMyNzc0ODE0Njl9LHsieCI6OTcuNDEwNzY5MjcwMDg2NjksInkiOi05MS42MDMwNzQwMTM1ODUxfV0=
+
+ ecbd46b28ecaf800c8da0d2ada69b4de
+
+
+ 1664645149601
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6NDA0LjIzNDYxMDc2NDgxNDIsInkiOi04OS4wMTM4NDMyODM2NzE3OH0seyJ4Ijo3NTQuNDAxODgxNDA3MTk2NSwieSI6OTkuMTM1NzM0OTcxOTM2NjR9XQ==
+
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6NzU0LjQwMTg4MTQwNzE5NjUsInkiOjk5LjEzNTczNDk3MTkzNjY0fSx7IngiOjQwNC4yMzQ2MTA3NjQ4MTQyLCJ5IjotODkuMDEzODQzMjgzNjcxNzh9XQ==
+
+ ea35c112764d7964f8b7e35e9a18efbd
+
+
+ 1664645223291
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6NzU0LjQwMTg4MTQwNzE5NjUsInkiOjk5LjEzNTczNDk3MTkzNjY0fSx7IngiOjY3Ni4wMDYyMjM4MDA2OTMsInkiOjEwMC40NDIzMjkyNjUzNzgzNn1d
+
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6Njc2LjAwNjIyMzgwMDY5MywieSI6MTAwLjQ0MjMyOTI2NTM3ODM2fSx7IngiOjc1NC40MDE4ODE0MDcxOTY1LCJ5Ijo5OS4xMzU3MzQ5NzE5MzY2NH1d
+
+ d669d3d37a4693ad860a18c69999b31f
+
+
+ 1664645228453
+
+ SET_POS
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsieCI6Mzk0LjgxNTM4MDI5MDQ2NDMsInkiOjEwMC45Mzc2OTI0NDUzMDM0MX0seyJ4IjozMzYuMDE4NjM3MDg1NTg2NjUsInkiOjEwMC45Mzc2OTI0NDUzMDM0MX1d
+
+
+ SET_POS
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsieCI6MzM2LjAxODYzNzA4NTU4NjY1LCJ5IjoxMDAuOTM3NjkyNDQ1MzAzNDF9LHsieCI6Mzk0LjgxNTM4MDI5MDQ2NDMsInkiOjEwMC45Mzc2OTI0NDUzMDM0MX1d
+
+ f7eb6af4003cb4eff19f39421fc00174
+
+
+ 1664645231883
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6Njc2LjAwNjIyMzgwMDY5MywieSI6MTAwLjQ0MjMyOTI2NTM3ODM2fSx7IngiOjU4Ny4xNTc4MTE4NDY2NTU2LCJ5IjoxMDAuNDQyMzI5MjY1Mzc4MzZ9XQ==
+
+
+ SET_POS
+ WyJiZDkyZjlkOC03ZDYzLTQyYjItOTY4Yi0zOTA5ZWY0YzcyMzciLHsieCI6NTg3LjE1NzgxMTg0NjY1NTYsInkiOjEwMC40NDIzMjkyNjUzNzgzNn0seyJ4Ijo2NzYuMDA2MjIzODAwNjkzLCJ5IjoxMDAuNDQyMzI5MjY1Mzc4MzZ9XQ==
+
+ 49dd0c2013be6e39c2f11ea967dbcab4
+
+
+ 1664645237206
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6LTE3MC40NDEwNjA4ODU0NjY5NSwieSI6OTAuMDEzNTMyNzc0ODE0Njl9LHsieCI6LTEzNy43NzYyMDM1NDk0MjM4MywieSI6OTEuMzIwMTI3MDY4MjU2NDF9XQ==
+
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6LTEzNy43NzYyMDM1NDk0MjM4MywieSI6OTEuMzIwMTI3MDY4MjU2NDF9LHsieCI6LTE3MC40NDEwNjA4ODU0NjY5NSwieSI6OTAuMDEzNTMyNzc0ODE0Njl9XQ==
+
+ 009fc03903a9ae6003caea49a6575ddb
+
+
+ 1666487497309
+
+ ADD_EDGE
+ W3sibGFiZWwiOiJZMSIsInNvdXJjZSI6IjdiNjljNmU2LTY0ZDEtNGQxZC1hODVkLThmODIwZGVhZTkyZSIsInRhcmdldCI6ImY1NmY4YjI0LTQxYTYtNDViNC04ODJiLTY1OTYwNDBiNmFmMCIsInN0eWxlIjp7ImJhY2tncm91bmRDb2xvciI6IiNmZjZkMDAiLCJ0aGlja25lc3MiOjEsInNoYXBlIjoic29saWQifSwiYmVuZERhdGEiOnsiYmVuZERpc3RhbmNlIjoyNS4wMTU2MDQ0Mzg0NDI0NywiYmVuZFdlaWdodCI6MC41MDcyNjEyODIxMTY0NTQyLCJiZW5kUG9pbnQiOnsieCI6MTg1Ljk0OTI3NTk2OTkwNjY3LCJ5Ijo2Ny4wNTc5Mjg3NTI0OTY3Mn19LCJzb3VyY2VJRCI6ImRiMzFiZTNmLTNlNTgtNGMzNi05NzlkLTQxZmIyOGFlZmU2OCIsInRhcmdldElEIjoiZjU2ZjhiMjQtNDFhNi00NWI0LTg4MmItNjU5NjA0MGI2YWYwIiwidHlwZSI6Im9yZGluIiwiaWQiOiJkYWRmMjgyOS1lMDEwLTRlMGQtYTNhNy1iYTdkYjg3OWM2NDkifV0=
+
+
+ DEL_EDGE
+ WyJkYWRmMjgyOS1lMDEwLTRlMGQtYTNhNy1iYTdkYjg3OWM2NDkiXQ==
+
+ 4957bb66f70bda073e7edafdad81f6b4
+
+
+ 1666487500685
+
+ ADD_EDGE
+ W3sibGFiZWwiOiJVMSIsInNvdXJjZSI6IjZhYzczNmNiLWUyZmUtNGI4Mi04NzQ1LTUyZjkzNGYyZGYxMCIsInRhcmdldCI6ImRiMzFiZTNmLTNlNTgtNGMzNi05NzlkLTQxZmIyOGFlZmU2OCIsInN0eWxlIjp7ImJhY2tncm91bmRDb2xvciI6IiM3YzRkZmYiLCJ0aGlja25lc3MiOjEsInNoYXBlIjoic29saWQifSwiYmVuZERhdGEiOnsiYmVuZERpc3RhbmNlIjowLjAwMDAyNzg2ODE3Mzg2NTQ2NDAzLCJiZW5kV2VpZ2h0IjowLjUwMDAwMDAwNDAzMDUwNjYsImJlbmRQb2ludCI6eyJ4IjoyNDUuNzU5MzE4NTQyNzk0OTQsInkiOjk4LjU4MDQzNDE0NjM5NTE4fX0sInNvdXJjZUlEIjoiZjU2ZjhiMjQtNDFhNi00NWI0LTg4MmItNjU5NjA0MGI2YWYwIiwidGFyZ2V0SUQiOiJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLCJ0eXBlIjoib3JkaW4iLCJpZCI6ImRlYzYzYTI5LWY1NWEtNGNmNy04OWIwLWQ3NjY2YzcyMmFkOSJ9XQ==
+
+
+ DEL_EDGE
+ WyJkZWM2M2EyOS1mNTVhLTRjZjctODliMC1kNzY2NmM3MjJhZDkiXQ==
+
+ c8d5e89e2630a4a0aa607594e14861d1
+
+
+ 1666487596231
+
+ SET_POS
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsieCI6MTAwLCJ5Ijo5NC43NzM2MjI4MjYyMzMxMX0seyJ4Ijo2MDEsInkiOjIwNC43NzM2MjI4MjYyMzMxMn1d
+
+
+ SET_POS
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsieCI6NjAxLCJ5IjoyMDQuNzczNjIyODI2MjMzMTJ9LHsieCI6MTAwLCJ5Ijo5NC43NzM2MjI4MjYyMzMxMX1d
+
+ c7aeac0c4601154d11c4c4068f631c62
+
+
+ 1666487606788
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6LTEzNy43NzYyMDM1NDk0MjM4MywieSI6OTEuMzIwMTI3MDY4MjU2NDF9LHsieCI6MzQ2LjIyMzc5NjQ1MDU3NjIsInkiOjE5Mi4zMjAxMjcwNjgyNTY0fV0=
+
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6MzQ2LjIyMzc5NjQ1MDU3NjIsInkiOjE5Mi4zMjAxMjcwNjgyNTY0fSx7IngiOi0xMzcuNzc2MjAzNTQ5NDIzODMsInkiOjkxLjMyMDEyNzA2ODI1NjQxfV0=
+
+ 600af97eb5c4cc3a573f65c724b85ae9
+
+
+ 1666488874534
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6MzQ2LjIyMzc5NjQ1MDU3NjIsInkiOjI0Ni4zMjAxMjcwNjgyNTY0fSx7IngiOjM0Mi4yMjM3OTY0NTA1NzYyLCJ5IjoyMDkuMzIwMTI3MDY4MjU2NH1d
+
+
+ SET_POS
+ WyJkOTVmNzg4Ny00MmJmLTRlMTItYTAyMi0wMjE4Njk3MDFjNmEiLHsieCI6MzQyLjIyMzc5NjQ1MDU3NjIsInkiOjIwOS4zMjAxMjcwNjgyNTY0fSx7IngiOjM0Ni4yMjM3OTY0NTA1NzYyLCJ5IjoyNDYuMzIwMTI3MDY4MjU2NH1d
+
+ ea3cf1656cbb3323791a747bcb8f624c
+
+
+ 1666810512066
+
+ UPDATE_NODE
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsid2lkdGgiOjEyMCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMjpmdW5ib2R5LnB5Iix0cnVlXQ==
+
+
+ UPDATE_NODE
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsid2lkdGgiOjEzMCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMjpmdW5ib2R5Mi5weSIsdHJ1ZV0=
+
+ 33c0759e9ca1d4d92639a94477c9b052
+
+
+ 1666810533063
+
+ UPDATE_NODE
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsid2lkdGgiOjExMSwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMTpmdW5jYWxsLnB5Iix0cnVlXQ==
+
+
+ UPDATE_NODE
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsid2lkdGgiOjEyMCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMTpmdW5jYWxsMi5weSIsdHJ1ZV0=
+
+ 06d61b24bc2485f9464f3e2751d1409a
+
+
+ 1748868954808
+
+ UPDATE_NODE
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsid2lkdGgiOjEzMCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMjpmdW5ib2R5Mi5weSIsdHJ1ZV0=
+
+
+ UPDATE_NODE
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsid2lkdGgiOjEzMCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMjpmdW5ib2R5My5weSIsdHJ1ZV0=
+
+ 4afd9af5e90936e999770a941ab0ace6
+
+
+ 1748868975001
+
+ UPDATE_NODE
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsid2lkdGgiOjEyMCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMTpmdW5jYWxsMi5weSIsdHJ1ZV0=
+
+
+ UPDATE_NODE
+ WyJmNTZmOGIyNC00MWE2LTQ1YjQtODgyYi02NTk2MDQwYjZhZjAiLHsid2lkdGgiOjE1MCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMTpmdW5jYWxsX3ptcS5weSIsdHJ1ZV0=
+
+ 38c7cf57be2a0a3b4b1bafb14e9d29fb
+
+
+ 1748868991559
+
+ UPDATE_NODE
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsid2lkdGgiOjEzMCwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMjpmdW5ib2R5My5weSIsdHJ1ZV0=
+
+
+ UPDATE_NODE
+ WyJkYjMxYmUzZi0zZTU4LTRjMzYtOTc5ZC00MWZiMjhhZWZlNjgiLHsid2lkdGgiOjE2MSwiaGVpZ2h0Ijo1MCwib3BhY2l0eSI6MSwic2hhcGUiOiJyZWN0YW5nbGUiLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJGMjpmdW5ib2R5X3ptcS5weSIsdHJ1ZV0=
+
+ 16982a4aa4703d98fc301e30aed0d25a
+
+
+
\ No newline at end of file
diff --git a/demo/controllerFile.py b/demo/controllerFile.py
index 38e45da..702c163 100644
--- a/demo/controllerFile.py
+++ b/demo/controllerFile.py
@@ -1,34 +1,43 @@
import numpy as np
import concore
+import ast
ysp = 3.0
-#//controller function//
def controller(ym):
- if ym[0] < ysp:
- return 1.01 * ym
- else:
- return 0.9 * ym
+ if ym[0] < ysp:
+ return 1.01 * ym
+ else:
+ return 0.9 * ym
-#//main//
-concore.default_maxtime(150) ##maps to-- for i in range(0,150):
+concore.default_maxtime(150)
concore.delay = 0.02
init_simtime_u = "[0.0, 0.0]"
init_simtime_ym = "[0.0, 0.0]"
-u = np.array([concore.initval(init_simtime_u)]).T
-while(concore.simtime