Salome HOME
Revert "Merge branch 'yan/V8_3_BR' into pre/V8_3_BR"
[modules/hydrosolver.git] / src / salome_hydro / coupling1d2d / eficas / coupling1d2d_template_schema.xml
diff --git a/src/salome_hydro/coupling1d2d/eficas/coupling1d2d_template_schema.xml b/src/salome_hydro/coupling1d2d/eficas/coupling1d2d_template_schema.xml
new file mode 100644 (file)
index 0000000..38908ab
--- /dev/null
@@ -0,0 +1,447 @@
+<?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>