1 <?xml version='1.0' encoding='iso-8859-1' ?>
3 <objref name="CALCIUM_real" id="IDL:Ports/Calcium_Ports/Calcium_Real_Port:1.0"/>
4 <type name="string" kind="string"/>
5 <struct name="Engines/dataref">
6 <member name="ref" type="string"/>
8 <objref name="HOMARD_Boundary" id="IDL:HOMARD/HOMARD_Boundary:1.0"/>
9 <objref name="HOMARD_Cas" id="IDL:HOMARD/HOMARD_Cas:1.0"/>
10 <objref name="HOMARD_Hypothesis" id="IDL:HOMARD/HOMARD_Hypothesis:1.0"/>
11 <objref name="HOMARD_Iteration" id="IDL:HOMARD/HOMARD_Iteration:1.0"/>
12 <objref name="HOMARD_Zone" id="IDL:HOMARD/HOMARD_Zone:1.0"/>
13 <objref name="Study" id="IDL:SALOMEDS/Study:1.0"/>
14 <type name="bool" kind="bool"/>
15 <sequence name="boolvec" content="bool"/>
16 <type name="double" kind="double"/>
17 <sequence name="dblevec" content="double"/>
18 <objref name="file" id="file"/>
19 <type name="int" kind="int"/>
20 <sequence name="intvec" content="int"/>
21 <struct name="stringpair">
22 <member name="name" type="string"/>
23 <member name="value" type="string"/>
25 <sequence name="propvec" content="stringpair"/>
26 <objref name="pyobj" id="python:obj:1.0"/>
27 <sequence name="seqboolvec" content="boolvec"/>
28 <sequence name="seqdblevec" content="dblevec"/>
29 <sequence name="seqint" content="int"/>
30 <sequence name="seqintvec" content="intvec"/>
31 <sequence name="stringvec" content="string"/>
32 <sequence name="seqstringvec" content="stringvec"/>
33 <container name="DefaultContainer">
34 <property name="container_name" value="FactoryServer"/>
35 <property name="name" value="localhost"/>
37 <datanode name="DataInit">
38 <parameter name="MeshFile" type="string">
39 <value><string>/home/D68518/HOMARD_SVN/trunk/training/tet_aster_ther/maill.00.med</string></value>
42 <bloc name="Study_Initialisation">
43 <inline name="StudyCreation">
44 <script><code><![CDATA[
51 import HOMARD_Iteration_idl
52 import HOMARD_Hypothesis_idl
53 import HOMARD_Zone_idl
54 import HOMARD_Boundary_idl
56 clt = orbmodule.client()
57 CurrentStudy = clt.Resolve("/Study")
60 <service name="UpdateStudy">
61 <component>HOMARD</component>
62 <load container="DefaultContainer"/>
63 <method>UpdateStudy</method>
65 <control> <fromnode>StudyCreation</fromnode> <tonode>UpdateStudy</tonode> </control>
67 <while name="Convergence_Loop">
68 <bloc name="Alternation_Computation_HOMARD">
69 <inline name="Computation">
70 <script><code><![CDATA[
74 rep_calc = "/home/D68518/HOMARD_SVN/trunk/training/tet_aster_ther"
75 rep_script = os.path.dirname("/home/D68518/HOMARD_SVN/trunk/training/script")
76 sys.path.append(rep_script)
77 from ScriptAster import Script
80 argu.append("--rep_calc=" + rep_calc)
81 argu.append("--num=%d" % numCalc)
82 argu.append("--mesh_file=" + MeshFile)
84 Script_A = Script(argu)
86 Error, message_erreur, dict_resu = Script_A.compute ()
88 dict_resu["rep_calc"] = rep_calc
91 <inport name="numCalc" type="int"/>
92 <inport name="MeshFile" type="string"/>
93 <outport name="Error" type="int"/>
94 <outport name="dict_resu" type="pyobj"/>
96 <inline name="Analysis">
97 <script><code><![CDATA[
101 NumCalcP1 = NumCalc + 1
110 # If the computation failed, stop:
113 MessInfo = "Computation error # %d" % ErrCalc
117 # If the file is not defined, stop:
119 if ( "FileName" in dict_resu ) :
120 FileName = dict_resu["FileName"]
122 MessInfo = "The file for the mesh is not defined."
126 # If the criterion is satisfied, stop:
128 if ( "V_TEST" in dict_resu ) :
129 valeur_v = dict_resu["V_TEST"]
133 resu1.append(valeur_v)
136 rap = ( resu1[-1] - solu_m1 ) / solu_m1
137 if abs(rap) < 0.001 :
142 MessInfo = "The value for the test is not available."
146 # If the maximum number of adaptations is reached, stop:
148 if NumCalc > NbCalcMax :
149 MessInfo = "The maximum number of adaptations is reached: %d" % NbCalcMax
155 <inport name="NumCalc" type="int"/>
156 <inport name="ErrCalc" type="int"/>
157 <inport name="dict_resu" type="pyobj"/>
158 <outport name="Error" type="int"/>
159 <outport name="NumCalcP1" type="int"/>
160 <outport name="FileName" type="string"/>
161 <outport name="MessInfo" type="string"/>
163 <switch name="Adaptation" select="0">
165 <bloc name="Loop_Stop">
166 <inline name="Arret">
167 <script><code><![CDATA[
171 <inport name="MessInfo" type="string"/>
172 <outport name="OK" type="bool"/>
173 <outport name="MeshFile" type="string"/>
174 <outport name="MessInfo" type="string"/>
179 <bloc name="Adaptation_HOMARD">
180 <switch name="HOMARD_Initialisation" select="0">
183 <service name="LastIteration">
184 <node>Study_Initialisation.UpdateStudy</node>
185 <method>LastIteration</method>
186 <inport name="CaseName" type="string"/>
187 <outport name="return" type="HOMARD_Iteration"/>
189 <service name="GetHypothesis">
190 <node>Study_Initialisation.UpdateStudy</node>
191 <method>GetHypothesis</method>
192 <inport name="HypoName" type="string"/>
193 <outport name="return" type="HOMARD_Hypothesis"/>
195 <control> <fromnode>LastIteration</fromnode> <tonode>GetHypothesis</tonode> </control>
200 <service name="CreateCase">
201 <node>Study_Initialisation.UpdateStudy</node>
202 <method>CreateCase</method>
203 <inport name="CaseName" type="string"/>
204 <inport name="MeshName" type="string"/>
205 <inport name="FileName" type="string"/>
206 <outport name="return" type="HOMARD_Cas"/>
208 <inline name="Case_Options">
209 <script><code><![CDATA[
211 # Directory for the adaptation
212 DirName = "/home/D68518/HOMARD_SVN/trunk/training/tet_aster_ther/HOMARD"
213 Case.SetDirName(DirName)
215 # Associated iteration #0
216 Iter0 = Case.GetIter0()
218 <inport name="Case" type="HOMARD_Cas"/>
219 <outport name="Iter0" type="HOMARD_Iteration"/>
221 <service name="CreateHypothesis">
222 <node>Study_Initialisation.UpdateStudy</node>
223 <method>CreateHypothesis</method>
224 <inport name="HypoName" type="string"/>
225 <outport name="return" type="HOMARD_Hypothesis"/>
227 <control> <fromnode>CreateCase</fromnode> <tonode>Case_Options</tonode> </control>
228 <control> <fromnode>Case_Options</fromnode> <tonode>CreateHypothesis</tonode> </control>
230 <datalink control="false">
231 <fromnode>CreateCase</fromnode> <fromport>return</fromport>
232 <tonode>Case_Options</tonode> <toport>Case</toport>
237 <inline name="HOMARD_Exec">
238 <script><code><![CDATA[
240 # Directory for the computation
241 DirName = "/scratch/D68518/HOMARD_SVN/trunk/training/tet_aster_ther"
246 # . Name of the hypothesis
247 # ------------------------
248 HypoName = Hypo.GetName()
252 # . Type of adaptation: refinement and unrefinement driven by a field
253 Hypo.SetAdapRefinUnRef(1, 1, 1)
254 # . Name of the field
255 Hypo.SetField("ERREUR")
256 # . Values over meshes
259 Hypo.AddComp("ERTABS")
261 Hypo.SetRefinThr(4, 3)
262 Hypo.SetUnRefThr(4, 4)
265 Hypo.SetTypeFieldInterp(2)
266 Hypo.AddFieldInterp("TEMPERATURE")
268 # . Minimum limit size of the meshes
272 # Name of the next iteration
273 # ==========================
274 # . Name of the previous iteration
275 LastIterName = LastIter.GetName()
276 aux = '%03d' % NumAdapt
277 # . At iteration #1, addition
279 IterName = LastIterName + "_" + aux
280 # . Then, substitution
282 IterName = LastIterName[:-3] + aux
284 # Creation of the iteration
285 # =========================
286 Iter = LastIter.NextIteration(IterName)
288 # Options of the iteration
289 # ========================
290 # . Association de l'hypothese
291 Iter.AssociateHypo(HypoName)
293 # . The name of the next mesh
294 Iter.SetMeshName(MeshName)
296 # . The file of the next mesh
297 aux = '%02d' % NumAdapt
298 MeshFile = os.path.join (DirName, "maill."+aux+".med")
299 Iter.SetMeshFile(MeshFile)
301 # . The file for the fields
302 FileName = dict_resu["FileName"]
303 Iter.SetFieldFile(FileName)
307 Error = Iter.Compute(1,1)
309 # The loops stops if problem
310 # ==========================
313 MessInfo = "Error in HOMARD in the adaptation # %d" % NumAdapt
318 <inport name="NumAdapt" type="int"/>
319 <inport name="LastIter" type="HOMARD_Iteration"/>
320 <inport name="Hypo" type="HOMARD_Hypothesis"/>
321 <inport name="dict_resu" type="pyobj"/>
322 <outport name="OK" type="bool"/>
323 <outport name="MessInfo" type="string"/>
324 <outport name="MeshFile" type="string"/>
326 <control> <fromnode>HOMARD_Initialisation</fromnode> <tonode>HOMARD_Exec</tonode> </control>
327 <datalink control="false">
328 <fromnode>HOMARD_Initialisation.default_Iter_n.LastIteration</fromnode> <fromport>return</fromport>
329 <tonode>HOMARD_Exec</tonode> <toport>LastIter</toport>
331 <datalink control="false">
332 <fromnode>HOMARD_Initialisation.p1_Iter_1.Case_Options</fromnode> <fromport>Iter0</fromport>
333 <tonode>HOMARD_Exec</tonode> <toport>LastIter</toport>
335 <datalink control="false">
336 <fromnode>HOMARD_Initialisation.default_Iter_n.GetHypothesis</fromnode> <fromport>return</fromport>
337 <tonode>HOMARD_Exec</tonode> <toport>Hypo</toport>
339 <datalink control="false">
340 <fromnode>HOMARD_Initialisation.p1_Iter_1.CreateHypothesis</fromnode> <fromport>return</fromport>
341 <tonode>HOMARD_Exec</tonode> <toport>Hypo</toport>
346 <control> <fromnode>Computation</fromnode> <tonode>Analysis</tonode> </control>
347 <control> <fromnode>Analysis</fromnode> <tonode>Adaptation</tonode> </control>
348 <datalink control="false">
349 <fromnode>Analysis</fromnode> <fromport>Error</fromport>
350 <tonode>Adaptation</tonode> <toport>select</toport>
352 <datalink control="false">
353 <fromnode>Analysis</fromnode> <fromport>NumCalcP1</fromport>
354 <tonode>Computation</tonode> <toport>numCalc</toport>
356 <datalink control="false">
357 <fromnode>Analysis</fromnode> <fromport>NumCalcP1</fromport>
358 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation</tonode> <toport>select</toport>
360 <datalink control="false">
361 <fromnode>Analysis</fromnode> <fromport>NumCalcP1</fromport>
362 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</tonode> <toport>NumAdapt</toport>
364 <datalink control="false">
365 <fromnode>Analysis</fromnode> <fromport>FileName</fromport>
366 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateCase</tonode> <toport>FileName</toport>
368 <datalink control="false">
369 <fromnode>Analysis</fromnode> <fromport>MessInfo</fromport>
370 <tonode>Adaptation.default_Loop_Stop.Arret</tonode> <toport>MessInfo</toport>
372 <datalink control="false">
373 <fromnode>Computation</fromnode> <fromport>Error</fromport>
374 <tonode>Analysis</tonode> <toport>ErrCalc</toport>
376 <datalink control="false">
377 <fromnode>Computation</fromnode> <fromport>dict_resu</fromport>
378 <tonode>Analysis</tonode> <toport>dict_resu</toport>
380 <datalink control="false">
381 <fromnode>Computation</fromnode> <fromport>dict_resu</fromport>
382 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</tonode> <toport>dict_resu</toport>
384 <datalink control="false">
385 <fromnode>Adaptation.default_Loop_Stop.Arret</fromnode> <fromport>MeshFile</fromport>
386 <tonode>Computation</tonode> <toport>MeshFile</toport>
388 <datalink control="false">
389 <fromnode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</fromnode> <fromport>MeshFile</fromport>
390 <tonode>Computation</tonode> <toport>MeshFile</toport>
393 <datalink control="false">
394 <fromnode>Alternation_Computation_HOMARD.Analysis</fromnode> <fromport>NumCalcP1</fromport>
395 <tonode>Alternation_Computation_HOMARD.Analysis</tonode> <toport>NumCalc</toport>
398 <inline name="Results">
399 <script><code><![CDATA[
400 from PyQt5 import QtWidgets
402 app = QtWidgets.QApplication(sys.argv)
403 MessageBoxTitle = "Results"
405 MessInfo = "The convergence is reached."
406 QtWidgets.QMessageBox.information(None, MessageBoxTitle, MessInfo)
408 QtWidgets.QMessageBox.critical(None, MessageBoxTitle, MessInfo)
410 <inport name="MessInfo" type="string"/>
412 <control> <fromnode>DataInit</fromnode> <tonode>Study_Initialisation</tonode> </control>
413 <control> <fromnode>Study_Initialisation</fromnode> <tonode>Convergence_Loop</tonode> </control>
414 <control> <fromnode>Convergence_Loop</fromnode> <tonode>Results</tonode> </control>
415 <datalink control="false">
416 <fromnode>DataInit</fromnode> <fromport>MeshFile</fromport>
417 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Computation</tonode> <toport>MeshFile</toport>
419 <datalink control="false">
420 <fromnode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.default_Loop_Stop.Arret</fromnode> <fromport>OK</fromport>
421 <tonode>Convergence_Loop</tonode> <toport>condition</toport>
423 <datalink control="false">
424 <fromnode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</fromnode> <fromport>OK</fromport>
425 <tonode>Convergence_Loop</tonode> <toport>condition</toport>
427 <datalink control="false">
428 <fromnode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.default_Loop_Stop.Arret</fromnode> <fromport>MessInfo</fromport>
429 <tonode>Results</tonode> <toport>MessInfo</toport>
431 <datalink control="false">
432 <fromnode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</fromnode> <fromport>MessInfo</fromport>
433 <tonode>Results</tonode> <toport>MessInfo</toport>
436 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateCase</tonode><toport>CaseName</toport>
437 <value><string>Computation</string></value>
440 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Computation</tonode><toport>numCalc</toport>
441 <value><int>0</int></value>
444 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation</tonode><toport>select</toport>
445 <value><int>0</int></value>
448 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation</tonode><toport>select</toport>
449 <value><int>0</int></value>
452 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.default_Iter_n.LastIteration</tonode><toport>CaseName</toport>
453 <value><string>Computation</string></value>
456 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.default_Iter_n.GetHypothesis</tonode><toport>HypoName</toport>
457 <value><string>Hypo</string></value>
460 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateHypothesis</tonode><toport>HypoName</toport>
461 <value><string>Hypo</string></value>
464 <tonode>Convergence_Loop</tonode><toport>condition</toport>
465 <value><boolean>true</boolean></value>
468 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Analysis</tonode><toport>NumCalc</toport>
469 <value><int>0</int></value>
472 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Analysis</tonode><toport>ErrCalc</toport>
473 <value><int>0</int></value>
476 <tonode>Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateCase</tonode><toport>MeshName</toport>
477 <value><string>BOX</string></value>
480 <presentation name="__ROOT__" x="0" y="0" width="704" height="977" expanded="1" expx="0" expy="0" expWidth="704" expHeight="977" shownState="0"/>
481 <presentation name="DataInit" x="4" y="32" width="158" height="63" expanded="1" expx="4" expy="32" expWidth="158" expHeight="63" shownState="0"/>
482 <presentation name="Study_Initialisation" x="175" y="32" width="158" height="38" expanded="0" expx="175" expy="32" expWidth="162.5" expHeight="40.5" shownState="1"/>
483 <presentation name="Study_Initialisation.StudyCreation" x="0" y="0" width="158" height="36" expanded="1" expx="4" expy="32" expWidth="158" expHeight="36" shownState="2"/>
484 <presentation name="Study_Initialisation.UpdateStudy" x="0" y="0" width="158" height="36" expanded="1" expx="163" expy="32" expWidth="158" expHeight="36" shownState="2"/>
485 <presentation name="Convergence_Loop" x="4" y="103" width="569" height="514" expanded="1" expx="4" expy="103" expWidth="569" expHeight="514" shownState="0"/>
486 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD" x="4" y="59" width="561" height="451" expanded="1" expx="10" expy="59" expWidth="561" expHeight="451" shownState="0"/>
487 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Computation" x="4" y="32" width="158" height="90" expanded="1" expx="4" expy="32" expWidth="158" expHeight="90" shownState="0"/>
488 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Analysis" x="181" y="32" width="158" height="171" expanded="1" expx="181" expy="32" expWidth="158" expHeight="171" shownState="0"/>
489 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation" x="4" y="204" width="553" height="243" expanded="1" expx="4" expy="204" expWidth="553" expHeight="243" shownState="0"/>
490 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.default_Loop_Stop" x="4" y="59" width="166" height="153" expanded="1" expx="4" expy="59" expWidth="166" expHeight="153" shownState="0"/>
491 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.default_Loop_Stop.Arret" x="4" y="32" width="158" height="117" expanded="1" expx="4" expy="32" expWidth="158" expHeight="117" shownState="0"/>
492 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD" x="202" y="59" width="347" height="180" expanded="1" expx="202" expy="59" expWidth="347" expHeight="180" shownState="0"/>
493 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation" x="4" y="32" width="158" height="65" expanded="0" expx="4" expy="32" expWidth="167" expHeight="67.5" shownState="1"/>
494 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1" x="0" y="0" width="162.5" height="40.5" expanded="1" expx="4" expy="59" expWidth="162.5" expHeight="40.5" shownState="2"/>
495 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateCase" x="0" y="0" width="158" height="36" expanded="1" expx="4" expy="32" expWidth="158" expHeight="36" shownState="2"/>
496 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.Case_Options" x="0" y="0" width="158" height="36" expanded="1" expx="163" expy="32" expWidth="158" expHeight="36" shownState="2"/>
497 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateHypothesis" x="0" y="0" width="158" height="36" expanded="1" expx="322" expy="32" expWidth="158" expHeight="36" shownState="2"/>
498 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.default_Iter_n" x="0" y="0" width="162.5" height="40.5" expanded="1" expx="4" expy="1639.5" expWidth="162.5" expHeight="40.5" shownState="2"/>
499 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.default_Iter_n.LastIteration" x="0" y="0" width="158" height="36" expanded="1" expx="4" expy="32" expWidth="158" expHeight="36" shownState="2"/>
500 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.default_Iter_n.GetHypothesis" x="0" y="0" width="158" height="36" expanded="1" expx="163" expy="32" expWidth="158" expHeight="36" shownState="2"/>
501 <presentation name="Convergence_Loop.Alternation_Computation_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec" x="185" y="32" width="158" height="144" expanded="1" expx="185" expy="32" expWidth="158" expHeight="144" shownState="0"/>
502 <presentation name="Results" x="350" y="32" width="158" height="63" expanded="1" expx="350" expy="32" expWidth="158" expHeight="63" shownState="0"/>