--- /dev/null
+<?xml version='1.0' encoding='iso-8859-1' ?>
+<proc name="newSchema_1">
+ <property name="DefaultStudyID" value="1"/>
+ <type name="string" kind="string"/>
+ <struct name="Engines/dataref">
+ <member name="ref" type="string"/>
+ </struct>
+ <type name="bool" kind="bool"/>
+ <sequence name="boolvec" content="bool"/>
+ <type name="double" kind="double"/>
+ <sequence name="dblevec" content="double"/>
+ <objref name="file" id="file"/>
+ <type name="int" kind="int"/>
+ <sequence name="intvec" content="int"/>
+ <struct name="stringpair">
+ <member name="name" type="string"/>
+ <member name="value" type="string"/>
+ </struct>
+ <sequence name="propvec" content="stringpair"/>
+ <objref name="pyobj" id="python:obj:1.0"/>
+ <sequence name="seqboolvec" content="boolvec"/>
+ <sequence name="seqdblevec" content="dblevec"/>
+ <sequence name="seqintvec" content="intvec"/>
+ <sequence name="stringvec" content="string"/>
+ <sequence name="seqstringvec" content="stringvec"/>
+ <container name="DefaultContainer">
+ <property name="container_name" value="FactoryServer"/>
+ <property name="name" value="localhost"/>
+ </container>
+ <container name="mascaret_container">
+ <property name="container_name" value=""/>
+ <property name="name" value="localhost"/>
+ </container>
+ <container name="telemac_container">
+ <property name="name" value="localhost"/>
+ </container>
+ <while name="TimeLoop">
+ <bloc name="TimeBloc">
+ <inline name="TimeController">
+ <script><code><![CDATA[time += timestep
+cont = (time + timestep/2 < endtime) # Add half timestep to avoid rounding issues
+timeData = {}
+timeData["start_time"] = time
+timeData["end_time"] = time + timestep
+timeData["time_step"] = timestep
+
+if cont:
+ log.write("time: %f\n" % timeData["end_time"])
+else:
+ log.close()
+ graph.close()
+]]></code></script>
+ <inport name="time" type="double"/>
+ <inport name="endtime" type="double"/>
+ <inport name="timestep" type="double"/>
+ <inport name="log" type="pyobj"/>
+ <inport name="graph" type="pyobj"/>
+ <outport name="cont" type="bool"/>
+ <outport name="time" type="double"/>
+ <outport name="timeData" type="pyobj"/>
+ </inline>
+ <while name="ConvergenceLoop">
+ <bloc name="ConvergenceBloc">
+ <inline name="ConvergenceController">
+ <script><code><![CDATA[telborders = set(telemacData.keys())
+mascborders = set(mascData.keys())
+border_names = telborders | mascborders
+
+if iter == 1:
+ log.write("ITER ")
+ for name in border_names:
+ if name in mascData:
+ nbvar = len(mascData[name])
+ formatlen = nbvar * 10 - 5
+ log.write("MASC %-*s" % (formatlen, name))
+ if name in telemacData:
+ nbvar = len(telemacData[name])
+ formatlen = nbvar * 10 - 5
+ log.write("T2D %-*s" % (formatlen, name))
+ log.write("\n")
+ log.write("ITER ")
+ for name in border_names:
+ if name in mascData:
+ keys = sorted(mascData[name].iterkeys())
+ for key in keys:
+ log.write("%9s " % key)
+ if name in telemacData:
+ keys = sorted(telemacData[name].iterkeys())
+ for key in keys:
+ log.write("%9s " % key)
+ log.write("\n")
+
+log.write("%4d " % iter)
+for name in border_names:
+ if name in mascData:
+ keys = sorted(mascData[name].iterkeys())
+ for key in keys:
+ log.write("%9.3f " % mascData[name][key])
+ if name in telemacData:
+ keys = sorted(telemacData[name].iterkeys())
+ for key in keys:
+ log.write("%9.3f " % telemacData[name][key])
+log.write("\n")
+log.flush()
+
+convergence = True
+for name in border_names:
+ if name in mascData and name in telemacData:
+ if abs(mascData[name]["Z"] - telemacData[name]["Z"]) > Z_tol:
+ convergence = False
+ if abs(mascData[name]["Q"] - telemacData[name]["Q"]) > Q_tol:
+ convergence = False
+
+cont = True
+if convergence:
+ log.write("Convergence reached\n")
+ cont = False
+
+iter += 1
+if iter > maxiter:
+ log.write("Max iterations reached\n")
+ cont = False
+
+if not cont:
+ iter = 1
+
+ if timeData["start_time"] == 0.0:
+ graph.write("Time,")
+ for name in border_names:
+ if name in mascData:
+ keys = sorted(mascData[name].iterkeys())
+ for key in keys:
+ graph.write("MASC %s %s," % (name, key))
+ if name in telemacData:
+ keys = sorted(telemacData[name].iterkeys())
+ for key in keys:
+ graph.write("T2D %s %s," % (name, key))
+ graph.write("\n")
+
+ graph.write("%f," % timeData["end_time"])
+ for name in border_names:
+ if name in mascData:
+ keys = sorted(mascData[name].iterkeys())
+ for key in keys:
+ graph.write("%f," % mascData[name][key])
+ if name in telemacData:
+ keys = sorted(telemacData[name].iterkeys())
+ for key in keys:
+ graph.write("%f," % telemacData[name][key])
+ graph.write("\n")
+ graph.flush()
+]]></code></script>
+ <inport name="mascData" type="pyobj"/>
+ <inport name="telemacData" type="pyobj"/>
+ <inport name="Z_tol" type="double"/>
+ <inport name="Q_tol" type="double"/>
+ <inport name="iter" type="int"/>
+ <inport name="borders" type="pyobj"/>
+ <inport name="log" type="pyobj"/>
+ <inport name="maxiter" type="int"/>
+ <inport name="timeData" type="pyobj"/>
+ <inport name="graph" type="pyobj"/>
+ <outport name="cont" type="bool"/>
+ <outport name="iter" type="int"/>
+ <outport name="timeData" type="pyobj"/>
+ <outport name="mascData" type="pyobj"/>
+ <outport name="telemacData" type="pyobj"/>
+ </inline>
+ <service name="MascExecStep">
+ <component>MASCARET</component>
+ <load container="mascaret_container"/>
+ <method>ExecStep</method>
+ <inport name="timeData" type="pyobj"/>
+ <inport name="inputData" type="pyobj"/>
+ <outport name="outputData" type="pyobj"/>
+ </service>
+ <service name="TelExecStep">
+ <component>TELEMAC2D</component>
+ <load container="telemac_container"/>
+ <method>ExecStep</method>
+ <inport name="timeData" type="pyobj"/>
+ <inport name="inputData" type="pyobj"/>
+ <outport name="outputData" type="pyobj"/>
+ </service>
+ <control> <fromnode>MascExecStep</fromnode> <tonode>ConvergenceController</tonode> </control>
+ <control> <fromnode>MascExecStep</fromnode> <tonode>TelExecStep</tonode> </control>
+ <control> <fromnode>TelExecStep</fromnode> <tonode>ConvergenceController</tonode> </control>
+ <datalink control="false">
+ <fromnode>ConvergenceController</fromnode> <fromport>timeData</fromport>
+ <tonode>MascExecStep</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>ConvergenceController</fromnode> <fromport>timeData</fromport>
+ <tonode>TelExecStep</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>ConvergenceController</fromnode> <fromport>telemacData</fromport>
+ <tonode>MascExecStep</tonode> <toport>inputData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>MascExecStep</fromnode> <fromport>outputData</fromport>
+ <tonode>ConvergenceController</tonode> <toport>mascData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>MascExecStep</fromnode> <fromport>outputData</fromport>
+ <tonode>TelExecStep</tonode> <toport>inputData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>TelExecStep</fromnode> <fromport>outputData</fromport>
+ <tonode>ConvergenceController</tonode> <toport>telemacData</toport>
+ </datalink>
+ </bloc>
+ <datalink control="false">
+ <fromnode>ConvergenceBloc.ConvergenceController</fromnode> <fromport>iter</fromport>
+ <tonode>ConvergenceBloc.ConvergenceController</tonode> <toport>iter</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>ConvergenceBloc.ConvergenceController</fromnode> <fromport>timeData</fromport>
+ <tonode>ConvergenceBloc.ConvergenceController</tonode> <toport>timeData</toport>
+ </datalink>
+ </while>
+ <control> <fromnode>ConvergenceLoop</fromnode> <tonode>TimeController</tonode> </control>
+ <datalink control="false">
+ <fromnode>TimeController</fromnode> <fromport>cont</fromport>
+ <tonode>ConvergenceLoop</tonode> <toport>condition</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>TimeController</fromnode> <fromport>timeData</fromport>
+ <tonode>ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>TimeController</fromnode> <fromport>timeData</fromport>
+ <tonode>ConvergenceLoop.ConvergenceBloc.MascExecStep</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>TimeController</fromnode> <fromport>timeData</fromport>
+ <tonode>ConvergenceLoop.ConvergenceBloc.TelExecStep</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>ConvergenceLoop.ConvergenceBloc.ConvergenceController</fromnode> <fromport>cont</fromport>
+ <tonode>ConvergenceLoop</tonode> <toport>condition</toport>
+ </datalink>
+ </bloc>
+ <datalink control="false">
+ <fromnode>TimeBloc.TimeController</fromnode> <fromport>time</fromport>
+ <tonode>TimeBloc.TimeController</tonode> <toport>time</toport>
+ </datalink>
+ </while>
+ <service name="InitMascaret">
+ <node>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.MascExecStep</node>
+ <method>Init</method>
+ <inport name="studyID" type="int"/>
+ <inport name="detCaseEntry" type="string"/>
+ </service>
+ <inline name="InitCoupling">
+ <script><code><![CDATA[execfile(couplingFile)
+
+timeData = {}
+timeData["start_time"] = starttime
+timeData["end_time"] = starttime + timestep
+timeData["time_step"] = timestep
+timeData["save_state_flag"] = True
+
+log = open(logFile, "w")
+graph = open(graphFile, "w")
+]]></code></script>
+ <inport name="couplingFile" type="string"/>
+ <inport name="logFile" type="string"/>
+ <inport name="graphFile" type="string"/>
+ <outport name="starttime" type="double"/>
+ <outport name="endtime" type="double"/>
+ <outport name="timestep" type="double"/>
+ <outport name="eps_Z" type="double"/>
+ <outport name="eps_Q" type="double"/>
+ <outport name="borders" type="pyobj"/>
+ <outport name="timeData" type="pyobj"/>
+ <outport name="log" type="pyobj"/>
+ <outport name="maxiter" type="int"/>
+ <outport name="graph" type="pyobj"/>
+ </inline>
+ <service name="FinalizeMascaret">
+ <node>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.MascExecStep</node>
+ <method>Finalize</method>
+ </service>
+ <service name="InitTelemac">
+ <node>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.TelExecStep</node>
+ <method>Init</method>
+ <inport name="studyID" type="int"/>
+ <inport name="detCaseEntry" type="string"/>
+ </service>
+ <service name="FinalizeTelemac">
+ <node>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.TelExecStep</node>
+ <method>Finalize</method>
+ </service>
+ <service name="InitMascBorders">
+ <node>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.MascExecStep</node>
+ <method>InitBorders</method>
+ <inport name="borders" type="pyobj"/>
+ </service>
+ <service name="InitTelBorders">
+ <node>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.TelExecStep</node>
+ <method>InitBorders</method>
+ <inport name="borders" type="pyobj"/>
+ </service>
+ <control> <fromnode>TimeLoop</fromnode> <tonode>FinalizeMascaret</tonode> </control>
+ <control> <fromnode>TimeLoop</fromnode> <tonode>FinalizeTelemac</tonode> </control>
+ <control> <fromnode>InitMascaret</fromnode> <tonode>TimeLoop</tonode> </control>
+ <control> <fromnode>InitCoupling</fromnode> <tonode>TimeLoop</tonode> </control>
+ <control> <fromnode>InitCoupling</fromnode> <tonode>InitMascBorders</tonode> </control>
+ <control> <fromnode>InitCoupling</fromnode> <tonode>InitTelBorders</tonode> </control>
+ <control> <fromnode>InitTelemac</fromnode> <tonode>TimeLoop</tonode> </control>
+ <control> <fromnode>InitTelemac</fromnode> <tonode>InitTelBorders</tonode> </control>
+ <control> <fromnode>InitMascBorders</fromnode> <tonode>TimeLoop</tonode> </control>
+ <control> <fromnode>InitTelBorders</fromnode> <tonode>TimeLoop</tonode> </control>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>starttime</fromport>
+ <tonode>TimeLoop.TimeBloc.TimeController</tonode> <toport>time</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>endtime</fromport>
+ <tonode>TimeLoop.TimeBloc.TimeController</tonode> <toport>endtime</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>timestep</fromport>
+ <tonode>TimeLoop.TimeBloc.TimeController</tonode> <toport>timestep</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>eps_Z</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>Z_tol</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>eps_Q</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>Q_tol</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>borders</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>borders</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>borders</fromport>
+ <tonode>InitMascBorders</tonode> <toport>borders</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>borders</fromport>
+ <tonode>InitTelBorders</tonode> <toport>borders</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>timeData</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>timeData</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.MascExecStep</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>timeData</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.TelExecStep</tonode> <toport>timeData</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>log</fromport>
+ <tonode>TimeLoop.TimeBloc.TimeController</tonode> <toport>log</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>log</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>log</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>maxiter</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>maxiter</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>graph</fromport>
+ <tonode>TimeLoop.TimeBloc.TimeController</tonode> <toport>graph</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>InitCoupling</fromnode> <fromport>graph</fromport>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode> <toport>graph</toport>
+ </datalink>
+ <datalink control="false">
+ <fromnode>TimeLoop.TimeBloc.TimeController</fromnode> <fromport>cont</fromport>
+ <tonode>TimeLoop</tonode> <toport>condition</toport>
+ </datalink>
+ <parameter>
+ <tonode>InitMascaret</tonode><toport>studyID</toport>
+ <value><int>1</int></value>
+ </parameter>
+ <parameter>
+ <tonode>InitMascaret</tonode><toport>detCaseEntry</toport>
+ <value><string>%parse_entry(CAS_MASCARET)%</string></value>
+ </parameter>
+ <parameter>
+ <tonode>InitCoupling</tonode><toport>couplingFile</toport>
+ <value><string>%FICHIER_COUPLAGE%</string></value>
+ </parameter>
+ <parameter>
+ <tonode>InitCoupling</tonode><toport>logFile</toport>
+ <value><string>%FICHIER_LOG%</string></value>
+ </parameter>
+ <parameter>
+ <tonode>InitCoupling</tonode><toport>graphFile</toport>
+ <value><string>%FICHIER_GRAPHIQUE%</string></value>
+ </parameter>
+ <parameter>
+ <tonode>TimeLoop</tonode><toport>condition</toport>
+ <value><boolean>true</boolean></value>
+ </parameter>
+ <parameter>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop</tonode><toport>condition</toport>
+ <value><boolean>true</boolean></value>
+ </parameter>
+ <parameter>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController</tonode><toport>iter</toport>
+ <value><int>1</int></value>
+ </parameter>
+ <parameter>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.MascExecStep</tonode><toport>inputData</toport>
+ <value><objref>N.</objref></value>
+ </parameter>
+ <parameter>
+ <tonode>TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.TelExecStep</tonode><toport>inputData</toport>
+ <value><objref>N.</objref></value>
+ </parameter>
+ <parameter>
+ <tonode>InitTelemac</tonode><toport>studyID</toport>
+ <value><int>1</int></value>
+ </parameter>
+ <parameter>
+ <tonode>InitTelemac</tonode><toport>detCaseEntry</toport>
+ <value><string>%parse_entry(CAS_TELEMAC2D)%</string></value>
+ </parameter>
+ <presentation name="InitMascaret" x="166" y="32" width="158" height="90" expanded="1" expx="166" expy="32" expWidth="158" expHeight="90" shownState="0"/>
+ <presentation name="TimeLoop" x="450.5" y="32" width="760" height="764.5" expanded="1" expx="450.5" expy="32" expWidth="760" expHeight="764.5" shownState="0"/>
+ <presentation name="TimeLoop.TimeBloc" x="4" y="60" width="752" height="700.5" expanded="1" expx="4" expy="60" expWidth="752" expHeight="700.5" shownState="0"/>
+ <presentation name="TimeLoop.TimeBloc.TimeController" x="590" y="56" width="158" height="171" expanded="1" expx="590" expy="56" expWidth="158" expHeight="171" shownState="0"/>
+ <presentation name="TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.ConvergenceController" x="330.5" y="32" width="158" height="306" expanded="1" expx="330.5" expy="32" expWidth="158" expHeight="306" shownState="0"/>
+ <presentation name="TimeLoop.TimeBloc.ConvergenceLoop" x="4" y="291.5" width="503" height="405" expanded="1" expx="4" expy="291.5" expWidth="503" expHeight="405" shownState="0"/>
+ <presentation name="TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc" x="6.5" y="59" width="492.5" height="342" expanded="1" expx="6.5" expy="59" expWidth="492.5" expHeight="342" shownState="0"/>
+ <presentation name="TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.MascExecStep" x="42" y="32" width="158" height="90" expanded="1" expx="42" expy="32" expWidth="158" expHeight="90" shownState="0"/>
+ <presentation name="InitCoupling" x="3.5" y="355.5" width="158" height="306" expanded="1" expx="3.5" expy="355.5" expWidth="158" expHeight="306" shownState="0"/>
+ <presentation name="TimeLoop.TimeBloc.ConvergenceLoop.ConvergenceBloc.TelExecStep" x="86" y="168.5" width="158" height="90" expanded="1" expx="86" expy="168.5" expWidth="158" expHeight="90" shownState="0"/>
+ <presentation name="FinalizeMascaret" x="1308" y="32" width="158" height="36" expanded="1" expx="1308" expy="32" expWidth="158" expHeight="36" shownState="0"/>
+ <presentation name="InitTelemac" x="4" y="138.5" width="158" height="90" expanded="1" expx="4" expy="138.5" expWidth="158" expHeight="90" shownState="0"/>
+ <presentation name="FinalizeTelemac" x="1308" y="89" width="158" height="36" expanded="1" expx="1308" expy="89" expWidth="158" expHeight="36" shownState="0"/>
+ <presentation name="InitMascBorders" x="184" y="273.5" width="158" height="63" expanded="1" expx="184" expy="273.5" expWidth="158" expHeight="63" shownState="0"/>
+ <presentation name="InitTelBorders" x="185" y="169" width="158" height="63" expanded="1" expx="185" expy="169" expWidth="158" expHeight="63" shownState="0"/>
+ <presentation name="__ROOT__" x="0" y="0" width="1470" height="800.5" expanded="1" expx="0" expy="0" expWidth="1470" expHeight="800.5" shownState="0"/>
+</proc>