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="seqpyobj" content="pyobj"/>
32 <sequence name="stringvec" content="string"/>
33 <sequence name="seqstringvec" content="stringvec"/>
34 <container name="DefaultContainer">
35 <property name="container_kind" value="Salome"/>
36 <property name="attached_on_cloning" value="0"/>
37 <property name="container_name" value="FactoryServer"/>
38 <property name="name" value="localhost"/>
40 <datanode name="DataInit">
41 <parameter name="MeshFile" type="string">
45 <bloc name="Etude_Initialisation">
46 <inline name="StudyCreation">
47 <script><code><![CDATA[
54 import HOMARD_Iteration_idl
55 import HOMARD_Hypothesis_idl
56 import HOMARD_Zone_idl
57 import HOMARD_Boundary_idl
59 clt = orbmodule.client()
60 CurrentStudy = clt.Resolve("/Study")
63 <service name="UpdateStudy">
64 <component>HOMARD</component>
65 <load container="DefaultContainer"/>
66 <method>UpdateStudy</method>
69 <while name="Boucle_de_convergence">
70 <bloc name="Alternance_Calcul_HOMARD">
71 <inline name="Calcul">
72 <script><code><![CDATA[
76 Alternance_Calcul_HOMARD_Calcul
79 argu.append("--rep_calc=" + rep_calc)
80 argu.append("--num=%d" % numCalc)
81 argu.append("--mesh_file=" + MeshFile)
83 Script_A = Script(argu)
85 Error, message_erreur, dict_resu = Script_A.compute ()
87 dict_resu["rep_calc"] = rep_calc
90 <inport name="numCalc" type="int"/>
91 <inport name="MeshFile" type="string"/>
92 <outport name="Error" type="int"/>
93 <outport name="dict_resu" type="pyobj"/>
95 <inline name="Analyse">
96 <script><code><![CDATA[
100 NumCalcP1 = NumCalc + 1
103 Analyse_Test_Convergence
109 # Si le calcul a fini en erreur, on arrete :
112 MessInfo = "Erreur de calcul numero %d" % ErrCalc
116 # Si le fichier n'a pas ete defini, on arrete :
118 if ( "FileName" in dict_resu ) :
119 FileName = dict_resu["FileName"]
121 MessInfo = "Le fichier du maillage n'a pas ete defini"
125 # Si le critere est respecte, on arrete :
127 if ( "V_TEST" in dict_resu ) :
128 valeur_v = dict_resu["V_TEST"]
132 resu1.append(valeur_v)
135 rap = ( resu1[-1] - solu_m1 ) / solu_m1
136 if abs(rap) < 0.001 :
141 MessInfo = "La valeur a tester n'a pas ete fournie"
145 # Si on depasse le maximum, on arrete :
148 if NumCalc >= MaxIter :
149 MessInfo = "La limite en nombre de calculs a ete atteinte : %d" % (MaxIter+1)
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="Arret_boucle">
166 <inline name="Arret">
167 <script><code><![CDATA[
171 <load container="DefaultContainer"/>
172 <inport name="MessInfo" type="string"/>
173 <outport name="OK" type="bool"/>
174 <outport name="MeshFile" type="string"/>
175 <outport name="MessInfo" type="string"/>
180 <bloc name="Adaptation_HOMARD">
181 <switch name="HOMARD_Initialisation" select="0">
184 <service name="LastIteration">
185 <node>Etude_Initialisation.UpdateStudy</node>
186 <method>LastIteration</method>
187 <inport name="CaseName" type="string"/>
188 <outport name="return" type="HOMARD_Iteration"/>
190 <service name="GetHypothesis">
191 <node>Etude_Initialisation.UpdateStudy</node>
192 <method>GetHypothesis</method>
193 <inport name="HypoName" type="string"/>
194 <outport name="return" type="HOMARD_Hypothesis"/>
196 <control> <fromnode>LastIteration</fromnode> <tonode>GetHypothesis</tonode> </control>
201 <service name="CreateCase">
202 <node>Etude_Initialisation.UpdateStudy</node>
203 <method>CreateCase</method>
204 <inport name="CaseName" type="string"/>
205 <inport name="MeshName" type="string"/>
206 <inport name="FileName" type="string"/>
207 <outport name="return" type="HOMARD_Cas"/>
209 <inline name="Case_Options">
210 <script><code><![CDATA[
212 # Repertoire d'adaptation
214 # Iteration 0 associee
215 Iter0 = Case.GetIter0()
217 <inport name="Case" type="HOMARD_Cas"/>
218 <outport name="Iter0" type="HOMARD_Iteration"/>
220 <service name="CreateHypothesis">
221 <node>Etude_Initialisation.UpdateStudy</node>
222 <method>CreateHypothesis</method>
223 <inport name="HypoName" type="string"/>
224 <outport name="return" type="HOMARD_Hypothesis"/>
227 <datalink control="false">
228 <fromnode>CreateCase</fromnode> <fromport>return</fromport>
229 <tonode>Case_Options</tonode> <toport>Case</toport>
234 <inline name="HOMARD_Exec">
235 <script><code><![CDATA[
237 # Repertoire d'execution
243 # . Nom de l'hypothese
244 # --------------------
245 HypoName = Hypo.GetName()
249 HOMARD_Exec_Hypo_Options
251 # Nom de la future iteration
252 # ==========================
253 # . Nom de l'iteration precedente
254 LastIterName = LastIter.GetName()
255 aux = '%03d' % NumAdapt
256 # . A l'iteration 1, on complete
258 IterName = LastIterName + "_" + aux
259 # . Ensuite, on substitue
261 IterName = LastIterName[:-3] + aux
263 # Creation de l'iteration
264 # =======================
265 Iter = LastIter.NextIteration(IterName)
267 # Options de l'iteration
268 # ======================
269 # . Association de l'hypothese
270 Iter.AssociateHypo(HypoName)
272 # . Le nom du futur maillage
273 Iter.SetMeshName(MeshName)
275 # . Le fichier du futur maillage
276 aux = '%02d' % NumAdapt
277 MeshFile = os.path.join (DirName, "maill."+aux+".med")
278 Iter.SetMeshFile(MeshFile)
280 # . Le fichier contenant les champs
281 FileName = dict_resu["FileName"]
282 Iter.SetFieldFile(FileName)
284 HOMARD_Exec_Iter_Options
288 Error = Iter.Compute(1,1)
290 # Arret de la boucle si erreur
291 # ============================
294 MessInfo = "Erreur dans HOMARD pour l'adaptation numero %d" % NumAdapt
299 <inport name="NumAdapt" type="int"/>
300 <inport name="LastIter" type="HOMARD_Iteration"/>
301 <inport name="Hypo" type="HOMARD_Hypothesis"/>
302 <inport name="dict_resu" type="pyobj"/>
303 <outport name="OK" type="bool"/>
304 <outport name="MessInfo" type="string"/>
305 <outport name="MeshFile" type="string"/>
307 <control> <fromnode>HOMARD_Initialisation</fromnode> <tonode>HOMARD_Exec</tonode> </control>
308 <datalink control="false">
309 <fromnode>HOMARD_Initialisation.default_Iter_n.LastIteration</fromnode> <fromport>return</fromport>
310 <tonode>HOMARD_Exec</tonode> <toport>LastIter</toport>
312 <datalink control="false">
313 <fromnode>HOMARD_Initialisation.p1_Iter_1.Case_Options</fromnode> <fromport>Iter0</fromport>
314 <tonode>HOMARD_Exec</tonode> <toport>LastIter</toport>
316 <datalink control="false">
317 <fromnode>HOMARD_Initialisation.default_Iter_n.GetHypothesis</fromnode> <fromport>return</fromport>
318 <tonode>HOMARD_Exec</tonode> <toport>Hypo</toport>
320 <datalink control="false">
321 <fromnode>HOMARD_Initialisation.p1_Iter_1.CreateHypothesis</fromnode> <fromport>return</fromport>
322 <tonode>HOMARD_Exec</tonode> <toport>Hypo</toport>
327 <control> <fromnode>Calcul</fromnode> <tonode>Analyse</tonode> </control>
328 <control> <fromnode>Analyse</fromnode> <tonode>Adaptation</tonode> </control>
329 <datalink control="false">
330 <fromnode>Calcul</fromnode> <fromport>Error</fromport>
331 <tonode>Analyse</tonode> <toport>ErrCalc</toport>
333 <datalink control="false">
334 <fromnode>Calcul</fromnode> <fromport>dict_resu</fromport>
335 <tonode>Analyse</tonode> <toport>dict_resu</toport>
337 <datalink control="false">
338 <fromnode>Calcul</fromnode> <fromport>dict_resu</fromport>
339 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</tonode> <toport>dict_resu</toport>
341 <datalink control="false">
342 <fromnode>Analyse</fromnode> <fromport>Error</fromport>
343 <tonode>Adaptation</tonode> <toport>select</toport>
345 <datalink control="false">
346 <fromnode>Analyse</fromnode> <fromport>NumCalcP1</fromport>
347 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</tonode> <toport>NumAdapt</toport>
349 <datalink control="false">
350 <fromnode>Analyse</fromnode> <fromport>NumCalcP1</fromport>
351 <tonode>Calcul</tonode> <toport>numCalc</toport>
353 <datalink control="false">
354 <fromnode>Analyse</fromnode> <fromport>NumCalcP1</fromport>
355 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation</tonode> <toport>select</toport>
357 <datalink control="false">
358 <fromnode>Analyse</fromnode> <fromport>FileName</fromport>
359 <tonode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateCase</tonode> <toport>FileName</toport>
361 <datalink control="false">
362 <fromnode>Analyse</fromnode> <fromport>MessInfo</fromport>
363 <tonode>Adaptation.default_Arret_boucle.Arret</tonode> <toport>MessInfo</toport>
365 <datalink control="false">
366 <fromnode>Adaptation.default_Arret_boucle.Arret</fromnode> <fromport>MeshFile</fromport>
367 <tonode>Calcul</tonode> <toport>MeshFile</toport>
369 <datalink control="false">
370 <fromnode>Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</fromnode> <fromport>MeshFile</fromport>
371 <tonode>Calcul</tonode> <toport>MeshFile</toport>
374 <datalink control="false">
375 <fromnode>Alternance_Calcul_HOMARD.Analyse</fromnode> <fromport>NumCalcP1</fromport>
376 <tonode>Alternance_Calcul_HOMARD.Analyse</tonode> <toport>NumCalc</toport>
379 <inline name="Bilan">
380 <script><code><![CDATA[
381 from PyQt5 import QtWidgets
383 app = QtWidgets.QApplication(sys.argv)
384 MessageBoxTitle = "Bilan"
386 MessInfo = "Le calcul est converge."
387 QtWidgets.QMessageBox.information(None, MessageBoxTitle, MessInfo)
389 QtWidgets.QMessageBox.critical(None, MessageBoxTitle, MessInfo)
391 <load container="DefaultContainer"/>
392 <inport name="MessInfo" type="string"/>
394 <control> <fromnode>DataInit</fromnode> <tonode>Etude_Initialisation</tonode> </control>
395 <control> <fromnode>Etude_Initialisation</fromnode> <tonode>Boucle_de_convergence</tonode> </control>
396 <control> <fromnode>Boucle_de_convergence</fromnode> <tonode>Bilan</tonode> </control>
397 <datalink control="false">
398 <fromnode>DataInit</fromnode> <fromport>MeshFile</fromport>
399 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Calcul</tonode> <toport>MeshFile</toport>
401 <datalink control="false">
402 <fromnode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.default_Arret_boucle.Arret</fromnode> <fromport>OK</fromport>
403 <tonode>Boucle_de_convergence</tonode> <toport>condition</toport>
405 <datalink control="false">
406 <fromnode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</fromnode> <fromport>OK</fromport>
407 <tonode>Boucle_de_convergence</tonode> <toport>condition</toport>
409 <datalink control="false">
410 <fromnode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.default_Arret_boucle.Arret</fromnode> <fromport>MessInfo</fromport>
411 <tonode>Bilan</tonode> <toport>MessInfo</toport>
413 <datalink control="false">
414 <fromnode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec</fromnode> <fromport>MessInfo</fromport>
415 <tonode>Bilan</tonode> <toport>MessInfo</toport>
418 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Analyse</tonode><toport>NumCalc</toport>
419 <value><int>0</int></value>
422 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Analyse</tonode><toport>ErrCalc</toport>
423 <value><int>0</int></value>
426 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Calcul</tonode><toport>numCalc</toport>
427 <value><int>0</int></value>
430 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation</tonode><toport>select</toport>
431 <value><int>0</int></value>
434 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation</tonode><toport>select</toport>
435 <value><int>0</int></value>
438 <tonode>Boucle_de_convergence</tonode><toport>condition</toport>
439 <value><boolean>true</boolean></value>
442 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateCase</tonode><toport>CaseName</toport>
443 <value><string>Calcul</string></value>
446 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateCase</tonode><toport>MeshName</toport>
447 <value><string>MAILL</string></value>
450 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.default_Iter_n.LastIteration</tonode><toport>CaseName</toport>
451 <value><string>Calcul</string></value>
454 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.default_Iter_n.GetHypothesis</tonode><toport>HypoName</toport>
455 <value><string>Hypo</string></value>
458 <tonode>Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation.p1_Iter_1.CreateHypothesis</tonode><toport>HypoName</toport>
459 <value><string>Hypo</string></value>
462 <presentation name="Etude_Initialisation.StudyCreation" x="0" y="0" width="158" height="36" expanded="1" expx="4" expy="32" expWidth="158" expHeight="36" shownState="2"/>
463 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Exec" x="163" y="32" width="158" height="144" expanded="1" expx="163" expy="32" expWidth="158" expHeight="144" shownState="0"/>
464 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.default_Arret_boucle" x="4" y="59" width="166" height="153" expanded="1" expx="4" expy="59" expWidth="166" expHeight="153" shownState="0"/>
465 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Analyse" x="163" y="32" width="158" height="144" expanded="1" expx="163" expy="32" expWidth="158" expHeight="144" shownState="0"/>
466 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Calcul" x="4" y="32" width="158" height="90" expanded="1" expx="4" expy="32" expWidth="158" expHeight="90" shownState="0"/>
467 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation" x="4" y="177" width="499.5" height="243" expanded="1" expx="4" expy="177" expWidth="499.5" expHeight="243" shownState="0"/>
468 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD.HOMARD_Initialisation" x="4" y="32" width="158" height="65" expanded="0" expx="4" expy="32" expWidth="158" expHeight="65" shownState="1"/>
469 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.default_Arret_boucle.Arret" x="4" y="32" width="158" height="117" expanded="1" expx="4" expy="32" expWidth="158" expHeight="117" shownState="0"/>
470 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD" x="4" y="59" width="507.5" height="424" expanded="1" expx="4" expy="59" expWidth="507.5" expHeight="424" shownState="0"/>
471 <presentation name="Boucle_de_convergence" x="4" y="96" width="515.5" height="487" expanded="1" expx="4" expy="96" expWidth="515.5" expHeight="487" shownState="0"/>
472 <presentation name="Etude_Initialisation.UpdateStudy" x="0" y="0" width="158" height="36" expanded="1" expx="163" expy="32" expWidth="158" expHeight="36" shownState="2"/>
473 <presentation name="Etude_Initialisation" x="163" y="32" width="158" height="38" expanded="0" expx="163" expy="32" expWidth="158" expHeight="38" shownState="1"/>
474 <presentation name="Boucle_de_convergence.Alternance_Calcul_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"/>
475 <presentation name="DataInit" x="4" y="32" width="158" height="63" expanded="1" expx="4" expy="32" expWidth="158" expHeight="63" shownState="0"/>
476 <presentation name="Boucle_de_convergence.Alternance_Calcul_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"/>
477 <presentation name="Boucle_de_convergence.Alternance_Calcul_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"/>
478 <presentation name="Bilan" x="361" y="32" width="158" height="63" expanded="1" expx="361" expy="32" expWidth="158" expHeight="63" shownState="0"/>
479 <presentation name="Boucle_de_convergence.Alternance_Calcul_HOMARD.Adaptation.p0_Adaptation_HOMARD" x="170.5" y="59" width="325" height="180" expanded="1" expx="170.5" expy="59" expWidth="325" expHeight="180" shownState="0"/>
480 <presentation name="Boucle_de_convergence.Alternance_Calcul_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"/>
481 <presentation name="Boucle_de_convergence.Alternance_Calcul_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"/>
482 <presentation name="Boucle_de_convergence.Alternance_Calcul_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"/>
483 <presentation name="Boucle_de_convergence.Alternance_Calcul_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"/>
484 <presentation name="__ROOT__" x="0" y="0" width="523.5" height="587" expanded="1" expx="0" expy="0" expWidth="523.5" expHeight="587" shownState="0"/>