From 153861724418e21fd2707b2dfb4bea760533928b Mon Sep 17 00:00:00 2001 From: nadir Date: Mon, 26 Sep 2005 15:12:57 +0000 Subject: [PATCH] updating the main trunk with the CEA debug devellopment from the branch CEA_V3_0_x (tagged For_V3_0_3a2) --- Makefile.in | 4 + bin/VERSION | 2 +- doc/MEDMEM/FIELDcreate.cxx | 1 + doc/MEDMEM/FIELDgeneral.cxx | 1 + ...MEM_InvokingDriverAtObjectCreationTime.cxx | 3 + ..._InvokingDriverByAttachingItToAnObject.cxx | 5 + ...InvokingDriverFromStandardObjectMethod.cxx | 3 + doc/MEDMEM/MESHINGexample.cxx | 3 + doc/MEDMEM/MESHconnectivities.cxx | 3 + doc/MEDMEM/MESHcoordinates.cxx | 3 + idl/MED.idl | 2 +- resources/Darcy3_3D_H_10x10x10_2.med | Bin 0 -> 181524 bytes resources/elle_3D_HPr_10x10x10_2.med | Bin 0 -> 374424 bytes resources/elle_3D_HPr_2x2x2_2.med | Bin 0 -> 100352 bytes resources/elle_3D_HPr_4x4x4_2.med | Bin 0 -> 121264 bytes src/MED/Med_Gen_test.py | 20 +- src/MEDMEM/MEDMEM_MedMeshDriver21.cxx | 11 +- src/MEDMEM/MEDMEM_MedMeshDriver22.cxx | 11 +- src/MEDMEM/duplicateMED.cxx | 8 - src/MEDMEM/duplicateMEDMESH.cxx | 8 - src/MEDMEM/med2vtk.cxx | 8 - src/MEDMEM/med_test.cxx | 8 - src/MEDMEM/test_MEDMEM_Array.cxx | 8 - src/MEDMEM/test_MEDMEM_CellModel.cxx | 8 - src/MEDMEM/test_MEDMEM_Meshing.cxx | 8 - src/MEDMEM/test_MEDMEM_MeshingPoly.cxx | 3 - src/MEDMEM/test_MEDMEM_ModulusArray.cxx | 8 - src/MEDMEM/test_MEDMEM_PolyConnectivity.cxx | 8 - .../test_MEDMEM_PolyDriverMedMeshRead.cxx | 8 - .../test_MEDMEM_PolyDriverMedMeshWrite.cxx | 8 - src/MEDMEM/test_MEDMEM_PolyhedronArray.cxx | 8 - src/MEDMEM/test_MEDMEM_SkyLineArray.cxx | 8 - src/MEDMEM/test_MEDMEM_poly3D.cxx | 2 - src/MEDMEM/test_affect_medarray.cxx | 8 - src/MEDMEM/test_copie_connectivity.cxx | 8 - src/MEDMEM/test_copie_coordinate.cxx | 8 - src/MEDMEM/test_copie_family.cxx | 8 - src/MEDMEM/test_copie_fieldT.cxx | 8 - src/MEDMEM/test_copie_field_.cxx | 8 - src/MEDMEM/test_copie_group.cxx | 8 - src/MEDMEM/test_copie_medarray.cxx | 8 - src/MEDMEM/test_copie_mesh.cxx | 8 - src/MEDMEM/test_copie_support.cxx | 8 - src/MEDMEM/test_gibi_driver.cxx | 8 - src/MEDMEM/test_grid.cxx | 8 - src/MEDMEM/test_operation_fielddouble.cxx | 8 - src/MEDMEM/test_operation_fieldint.cxx | 8 - src/MEDMEM/test_porflow_driver.cxx | 8 - src/MEDMEM_I/MEDMEM_Field_i.cxx | 4 + src/MEDMEM_I/MEDMEM_Med_i.cxx | 9 +- src/MEDMEM_I/MEDMEM_Med_i.hxx | 4 +- src/MEDMEM_I/MEDMEM_Mesh_i.cxx | 8 + src/MEDMEM_I/MEDMEM_Support_i.cxx | 9 +- src/MEDMEM_SWIG/testMedMemGeneral.py | 16 +- src/MedClient/src/FIELDClient.cxx | 6 +- src/MedClient/src/Makefile.in | 3 +- src/MedClient/src/libMEDClient.i | 5 + src/MedClient/src/medClient_test.py | 295 ++++++++++++++++++ 58 files changed, 402 insertions(+), 258 deletions(-) create mode 100644 resources/Darcy3_3D_H_10x10x10_2.med create mode 100644 resources/elle_3D_HPr_10x10x10_2.med create mode 100644 resources/elle_3D_HPr_2x2x2_2.med create mode 100644 resources/elle_3D_HPr_4x4x4_2.med create mode 100644 src/MedClient/src/medClient_test.py diff --git a/Makefile.in b/Makefile.in index ab72f2728..28493549c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -55,6 +55,10 @@ Mistrat_import22.med \ pointe_import22.med \ TimeStamps_import22.med \ poly3D.med \ +Darcy3_3D_H_10x10x10_2.med \ +elle_3D_HPr_10x10x10_2.med \ +elle_3D_HPr_2x2x2_2.med \ +elle_3D_HPr_4x4x4_2.med \ Darcy3_3D_H_10x10x10.sauve \ dx200_dy1_avec_2couches.sauve \ elle_2D_QT_10x10.sauve \ diff --git a/bin/VERSION b/bin/VERSION index e9a90323f..851d79cab 100755 --- a/bin/VERSION +++ b/bin/VERSION @@ -1 +1 @@ -THIS IS SALOME - MED VERSION: 3.0.2 +THIS IS SALOME - MED VERSION: 3.0.3 diff --git a/doc/MEDMEM/FIELDcreate.cxx b/doc/MEDMEM/FIELDcreate.cxx index e94b17b78..d8375e073 100644 --- a/doc/MEDMEM/FIELDcreate.cxx +++ b/doc/MEDMEM/FIELDcreate.cxx @@ -3,6 +3,7 @@ using namespace std; #include "MEDMEM_Field.hxx" using namespace MEDMEM; +using namespace MED_EN ; int main (int argc, char ** argv) { diff --git a/doc/MEDMEM/FIELDgeneral.cxx b/doc/MEDMEM/FIELDgeneral.cxx index 120cef911..18c021037 100644 --- a/doc/MEDMEM/FIELDgeneral.cxx +++ b/doc/MEDMEM/FIELDgeneral.cxx @@ -3,6 +3,7 @@ using namespace std; #include "MEDMEM_Field.hxx" using namespace MEDMEM; +using namespace MED_EN ; int main (int argc, char ** argv) { diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx b/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx index fca94088d..b7017228d 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx +++ b/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx @@ -5,6 +5,9 @@ #include "MEDMEM_Mesh.hxx" #include "MEDMEM_Med.hxx" +using namespace MEDMEM ; +using namespace MED_EN ; + main () { const char * fileName = "pointe.med"; diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx b/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx index b8c110ad2..e90b6030a 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx +++ b/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx @@ -4,6 +4,11 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_Mesh.hxx" #include "MEDMEM_Med.hxx" +#include "MEDMEM_MedMedDriver.hxx" +#include "MEDMEM_MedMeshDriver.hxx" + +using namespace MEDMEM ; +using namespace MED_EN ; main () { diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx b/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx index 87ed74393..270eacbc2 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx +++ b/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx @@ -5,6 +5,9 @@ #include "MEDMEM_Mesh.hxx" #include "MEDMEM_Med.hxx" +using namespace MEDMEM ; +using namespace MED_EN ; + main () { const char * fileName = "pointe.med"; diff --git a/doc/MEDMEM/MESHINGexample.cxx b/doc/MEDMEM/MESHINGexample.cxx index 2ec7a16ee..07c943a02 100644 --- a/doc/MEDMEM/MESHINGexample.cxx +++ b/doc/MEDMEM/MESHINGexample.cxx @@ -1,6 +1,9 @@ #include "MEDMEM_Meshing.hxx" #include "MEDMEM_Group.hxx" +using namespace MEDMEM ; +using namespace MED_EN ; + using namespace std; int main (int argc, char ** argv) { diff --git a/doc/MEDMEM/MESHconnectivities.cxx b/doc/MEDMEM/MESHconnectivities.cxx index 2964ff9f8..6a0f40cfe 100644 --- a/doc/MEDMEM/MESHconnectivities.cxx +++ b/doc/MEDMEM/MESHconnectivities.cxx @@ -1,6 +1,9 @@ #include "MEDMEM_Mesh.hxx" #include "MEDMEM_CellModel.hxx" +using namespace MEDMEM ; +using namespace MED_EN ; + int main (int argc, char ** argv) { const string MedFile = "pointe.med" ; diff --git a/doc/MEDMEM/MESHcoordinates.cxx b/doc/MEDMEM/MESHcoordinates.cxx index 18edd0328..e52eaaa00 100644 --- a/doc/MEDMEM/MESHcoordinates.cxx +++ b/doc/MEDMEM/MESHcoordinates.cxx @@ -1,5 +1,8 @@ #include "MEDMEM_Mesh.hxx" +using namespace MEDMEM ; +using namespace MED_EN ; + int main (int argc, char ** argv) { const string MedFile = "pointe.med" ; diff --git a/idl/MED.idl b/idl/MED.idl index e67960245..ef537a275 100644 --- a/idl/MED.idl +++ b/idl/MED.idl @@ -933,7 +933,7 @@ Internal Corba method. // MED interface - interface MED { + interface MED : SALOME::GenericObj { /*! returns the number of meshes in the %MED object. */ diff --git a/resources/Darcy3_3D_H_10x10x10_2.med b/resources/Darcy3_3D_H_10x10x10_2.med new file mode 100644 index 0000000000000000000000000000000000000000..2915317027017e0aa337483f4c1e4c70413cfd63 GIT binary patch literal 181524 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 Z`;@AcN7s^U2?7ZM2?7ZM2?90*-UkR+UL literal 0 HcmV?d00001 diff --git a/resources/elle_3D_HPr_10x10x10_2.med b/resources/elle_3D_HPr_10x10x10_2.med new file mode 100644 index 0000000000000000000000000000000000000000..fe4b21bc98ad86a19695640a7bf0bdaae8468183 GIT binary patch literal 374424 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ℑB`8a^%VRy0|{*N)NizlV0?u4}H0te%yl` zIbRpo2d+{7TXk{Qr&QOeRM)6f*Qiw2sMIfUjY@T`O8uI>$dU7Pai1MrqcXcz{XedY z-{3vq>4Y3PUl-R0>v)p&Y~UH5=2s>E=w_dp38C-S92YexSq;X zp(@p=P7P{OhuYLdo}90X>jR(XviK~Q#b>%K_u}(h7N6&`JiuJ$@gVbKf7Qn?6tBSN zkWiD3>Bp$HoKbZCh&g}6oIhgDAF2V#Y$uXO@`HEV0~N ziq9-(tf8;=+)}hDrrog#497J(+}j;$`Dd%4$DAKy&W$nW##jTK8)MFmG3UmZb7M3I z;1;n7w{jazxt(U#Z8`2e(S6FsTy(#)@fgof*q0vk#Ak_EZ+w=B_2q8*(VqbfWDtWH z!cc}Wf{~13G-DXcIL0%PNla!6Q<=teW-trKG3I#29Ltzv8M~hca4chvV=NrUhgiTu z7O|KmEaPF8vx1d8!YUr+G1l-nYk30a#!x#C^B>MyJJ09&%PD~I6E8?13R8rl6hmIe zui|P-P?A!VrYz+sPX(^wS}IZr`5%}6arqyY|M6g;jD@(daMs#+YtOf%1NY!K|8LjLjg`2u5Fd$g5Fdka5Fdwe5I64Q z#zNd!h#L!WVJSUScn@7abqEF9K_{M+*pVk3;%IX`C^Y5 z3-M(b3-RR`3vpv1ZY;!&g}AX0Uybn)Hx}Z?Lflx08w+t`As)uU2A<++o?#=;v5Cz* z&kMZBOT5f0yvFOi!4}?RE8BRB?Yzwn-sL^s=L0@uCm*rP?;T;?pR${y9OFxl^A$g^ zmlN#cM-K24hd9Y$e&z_jaEjCX#_#;WpK69N;#f$NL|W35fsAA#nG{mVOct_|jSIPm z>|D$x03JOw)A{6CHicy@axSA4_q!eW+OF7C@foqUcX)02Q z>!?f>s#1;W)SxD{s7)Q}aRWC}p9VCf5jWA;_u9~gCN!lJU1&yETF{MFbf+~vXiHDp z(~A!DrXzjmOF!h^LUW?Jj4PPvX~_-Wf>2%oE5C(5mvF9$5_MTtmO&T@g(cnz|%a#vuxx!HnExK zd4U&snOAs~*La;b*utA^bxcBAx3hyie9e38yU?77S%ut3goDqy<6r&l#SjI7diA-WLQ<%y$rZalY~U%L<{6%4BhRtPF$w$r z0x$DEAMz?Yd7Y2g!Y;P*F>mn+Z}TZT_>A}XoZWoM9=_sh_VNw;*v|nD@-2t?jw2l9 zdya9OA2`8JoaASI;S|4en&0@HKhz~-#7RRE9!Q&x^kg6-nMfg(%w!=e7m$q$xrpps zLJo40i`-mF9`bS-`M8_{TtPt!QJ5kWn7?xX{E(UDGcrVCx^Mt6GB zi{A91FL%?Ad+5&q1~Hf+3}qO@8No}a>$Rs8+g{e$q1~Zw(Z02w;_i;ZD zFqa3J&qFL=A&Xed5|*-z<*Z;OkFbhIS?9OMw+a+vQp z!co5G7(Z}=ANh%s{LC+$;#W@dJAd$J^z}HFE-t1aiL|66JsHVFGAX2znJi@G0q&^L3NF#2dF*kDyO}LGw+)gu^(}I??;tpEVmUgt~PC9TG9qB}8y3md8 z^q?ob=uIE`ayR|x&j1E8h`|hDD8m@e2u3lQF^pv#r$@4@i=1*-Fj1&^DxU; z$`Tf1TcL&?)yIvg=$=aB>mO_A`Y2Ujq>e|_j-<+1T!kGHUd&=+hcn3PtiOzJPE8XZ$4|>vzJ~&UD z@t*QQo*T?ihA|xZkRmVsTkU+Te~)7V6Pd(hrZAOhOlJnp75`d0f6!}I@Cd7Tl+`@O z8XjjYPq2>lY~U%L<{6%4BhRsk&Ah;iyu{1A!mGT->%74hwz7@4*v{L$!w%l%J>Ew? zo%Npb&pp4JFWJLa$f=aQe8WEWbAW?<%VECb2uJyzV;tuPP9UGoT08&U^KvRRhI~3> z?L4FBvLjEB+Z|nJX$fvX3Q{K(<-RVg$deeu#+)Y33 zp+BRMCuhBv)p& zY~U%LMoy*5sdKug{8g`$Q~!ET`8!^-gZFr!5BQLse8et3<`X_eKAp98E~n0^cK)l^ zx&Hj?J>}_KkJBSh&U#Pz1)k5wMP%nd2}8xTjoBom1`n7O!iKJUMIaytC)K zAWzPEPx;-R??-5sX4Uo$;RXNuHaGd^+nr<@b92J|18$^LUW? zJj4PPvWUgVr?cKu{;20yBcINCPx(`xf0}36$a8FBGtct^FY*%Gktb)Zoqy!{U3|i) ze8%VO<_o@L4`1;$^5m@dlz->>BYe*>j`IU2_>rGD$m3XulJPa^qO2;N*?lZ8TrW1A*T01Y{`AS?*WvWn>YE-8N zHK~Q`&%f5rZ}OVP$dj|)Q{KY!ExCi%w4p8SXwRK=;4V5MpU!$ud2i46K|Y=Jp7J4{ zAIfk>Fp^P>W(;E)$9N_npU!qqd6rq8pN)JvTkSl{L$O#a6KRkqvD`T4#Egk}Q&FGA zl1U*I;~^SES;Y&;#)UY~p0S3$-g8f~jwe{l~wRRrU-!aEMRt?8J zRs+X9=D5ck_gEe3aRWC}p9VCf5srJ@af~~j(f!1ZZQL=AH>Vl5v6|A?pVhi>$qbbcdX;txtL3k z`*FGdkN2kM^Z4Zy;0g*-h{6=1D8(qwRa}kSkC&trr724}%2R=BxR#1k!a3sq)B1W_ z>o*SL&H-^_A#Ni(0;T&+j&aMx(@FrW?##?N6Y6@fR6F%otcJl>avWKtun!S9(KK65fgB;>p z4)YyHILa}O^8+XN5!coDNnBUszi^7v{KoJ6!JmJfKGVd-G$fIh^kg6-nMfvuR5FtV zx%EGx&Ypgz{kVnOXhKt*Tca9!bFl@^y-^L_xj3q!w-M!58hI7f(B)WELziDs4PAak zb$GcI)!*e-RCkwKQN3Mmov*X&gN;1LCN}dtFT`RQ!q}5DY2HEJM0NCc#rJrh5BQLs ze8et3MsB5%S5XaJjzu+e`4!dBP#2pR#G?QR+8&hlH5vi-TFVN&YrgcbC zuksqN^9EaZldWt+ZY9a9sD>`bq8hsVifZWcE2_iGt*HJkx1zec+=}Y$pNVqoe4Slg zvJizSLQ$@a#WEU?X?@m9Tajz1#C2RxWvWn>YE-8NHIZ9s4U4BJ1bomw4 z;pJ9Tf0tWP-Cb@)_4ZpuxpltIt`8Qnh{Y^nsbk`tpLQ)z@&xPIz*9WUGd#;iT#up} z`espXrIlAv4PA~!HFWtE)zIZvREL*aQT<(RMRj+%71i6{7UkCYI=k9z4sw!<++6Cb zdkay{q$`fRiR$QAizO&YDN0iY*Q2P0US5=2>Eu;ZLziPw4PAakHFWtE)#2q4AEwuT>GfUudbr-FcYR5J zANM17(#xCln~*Q*U*u(<;hgs}q>>rOG=t-r!LiKXb43QnFvGR1V+>*uEAG@?F;<{`Wy>Z@q(!Rz81IA26_ z6Sj)3#s7Mb`iEY#6WcpqXZLenJ{&E+t*qQ8A$d_{i?!5E9?br@&SJP%{- ze4Sk%7}I~>qb}#pxy~+!QshvW^AgQ{SuDD?Mss48i4P-x&)3=Y!BM{F7{~d66a2(U ze#Utt-J|}FfA8Qu-sb~cqyDkZzR%+aaNUjm z7R&zt8|XMfr2e4ab&-)?`)^V^Xp=j-fBu9uL5oaEwCe2zbBoxP;zOXKrg zma_Ofm!&*D&qZ@qeV&WvuvQYUr!rNjN;RtEd&~JcyFQr0RD8GjuYbEe)Y;>%n^BF= zn2u^xyL@-c=kthT6+UCfT~nj_;ay@Uy3mat^rA1Wnej>7%Od1cbf4-=;x@MOCR_0R zC;mFG;k!}%S=O+W2hh&A>u$V1?X|_R{KxN~4LoivMc<=bf1-KDhr}QGQ`?idn6NLG zkr!hwnzNf*^xkMLZ)P!#_x#Lve8oq|;pEW%c66X4o#{$eRVV2|E7I$uoJGaGG z@feS@mM2)pldNY0&#;l_*u-X@=LKHW2f@p{f-&+R-(wx$vwnZw>G@rJ%qM)xXME0X z_V6`(`G$S$=Ku#e%n^?AJw7KSALj>7aFSm*#jl*^H-6_2$2Lw9X-P+VGLVr>q>_cK zTtGH1=S_D%Ge?4Qf)0#@x&; z+)5K}qbax3jOMhUC9SxF*0iB5?P$-Pbf7bx=z{z{W4-on&-JAr@;*&}1~8C83}y(! z8O8`kGK$fRVJzbq&m<-?8RvmB-WPqZ=jL!9_wxXAna6|7=OGrcki{%vDa&}6<*Z;O zkFtu@I6s{6zUZesw}Gd5hG*Hxb8KQW&$E?nyv5sW=N)$NF7NR^AMhbN`G{S7%qM)x zXME0XzG4qwvzKq!$9@iQkVAaOVVon?f zO)Cv?l1NKB(vyLVWFnc&q~hFh*88G!dOioa$jznXAupGakNjLg0SZ!x!W5w>S5l1P z$f+c`l~fXWl_bCZv0hul<29*89cojTdfdQ`)TaRrX~a#)uQS$cTX?QHEosFaw5APh zX-9kRq5~c2L}$9tm2PyW2fgV>!x_OyMlqT(jAtAZ zn8+k1Gli*4V>+{#$!z4+8SjgJ$aC{qz(N+Wm?bP_84t6P6+FT!9%VI;v4+Q4%O*DS zJTLMBFYz+3@G7tII&ZLrH`&TI-eNm%^A0^4&E_9^_ z-RVg$deeu#+)Y2^R$4iAPWMHR@w(BBWgO#~z(gi7nJG+X8Z(&5EM_x@d%2JMna5ln zL|&zpU;lVt^cs&p&RW*-1W&S_4LrruJj1hWP5TKV;lHQU!c{u*zvg*VyCHr`@8 zZ}ToYc#rq_fDhTpN9^KbKI2n9M_!%rzUcj)+s6S8a)@s^%y%5&D91U*51imfe&QrQ z^9!f=jnn*2$Se7kPHv@>Tj|n}L|QVCo{VH7nG{mVOct_oA=$Wy>|D$xLW;CY-Eons?TGJMJl}>)8lUwQJR=T_BNGH0|g>H1G2R-RUZ~D-ed+0}h z1~8C83}y&J8OBIPFba8f#`~hDcy2ONnZ|TxFq2u#W)6#3%o3Kdl!sZ)3Rdz6t9X>v zJjNOxXDv^#jwe~qGd#_+Y~(pMv6<(2ffsp&mw6R=mF{)kU<+@um2JGucHUtJ@A4k+ z^8p{SlaJZOCw$6he2&~o_XS_FhrN8wH|%3S2RO(fzU44SIl}iG<2XNXf*<*blbqrg ze&sa3A-B@~!JmF(h!H0(Nuwet+#pCL0PC`B2{QGsiz z#Bj#qcxG6Mf4zrVU!2oD)OUGZ2RhP;&UB$G-EeH8d#HPh`r}{k zp$>gB80VC;-a|d!^W&JnL?$trDNJP=(|L&bEMOtdDJjk=|54jD{?4hk`=r+ym;ZVX zwR1_zW?sPgB;_TXPyXW`>Nh>Mg{^GkEw=ME@34b+aV|Nhd#JzgI_H#sy@&dc*Bs>H9y>0}fkWXj4hgvS3(>>I3 z>74GNUgC9&S;{gVW;rWZ$s?@dF;=sN$63o0tm8@6vw>H5nOAv@*Lj02yvbI!@iyCe zhaJ4jd%VvFe8^5dW*49EDWCB9OMw+a+sqW;d_p8969wL z_fVhm*f0FbX@28({@_pbzZh}Sl0-VvlYxw6BAFCY$%;4q>pj%Dy(Slzl83xpMn3X$ zIRz+1NlH_OvXrAdu0em-cCWKsiR+OkXRPhk@my`{QjZ(Bk@~m>WobwwZl*D}&;)sv z1vV6=Ze9C8h&TjVbC13G1d-;Za?B@UnIn1|w#}SV5J;ylC51im6Kk+la zaEf0!&2Rk9A8K^%ag5{I9@oZX`yFc1DOXV3W9{gGvGR}gW5@f9wR3$FxBqebAO8UT z5!Wwq{S((uaeWrow`Z%NM{|w!`TzR&&!U>HW0h>ZXRMv)w-3d*lA;u$Foh^c0dkU= zG}fc9{?{7%|MdEJG>5_1j^;Gz=eV&Q&2=!gE&hK`7|NmSckLFP1a{P01DS61t zW#rQbax|)&%dxmzi)!a`ExO-XzQyHhT+YSiYjoeTe2xEze2wm3J|xP;xV(+-W0r&G z>*8va)u};EYEhRu)Z+$jq&^L3NF#1?OiGBi(uB@*qA6WyMps(UjaGE0H9crcPn`48 z^ul>9O>geTIq-a4Tpw&=Gtc8%kj6PS&C9%kb9EZ$iZrf+X`Cz4I9H?z*NTTk=klm- zE+5kD!TCL^eLLSr^>63ts0QwQ5!Jz63!_@NYhhFmmuFE;+_mt0U0ltvG-W7DIm%Ok zid;)2uH$+tQ-!Kjqq^^?$)bFU>gMtxs(Z_=sP-+l{S_+8#7XOcQ1?~>$SlDtcj zb4l{;|Jb_tllFZb>)F6lJk2va%SN7aOa_YbDXN>xhp6r?x1!p&-1^`8o8e!0pPV^g z7gtLxOc9DwoMK$X)wph?ElDZlR$950R&J&47v)n_H+QXx>fUlIs(s6?sQxXtq8hl| zit6C5TTv~%mUs*DEUJmiue7dB=j-D7U;ztR#A254Fw0oZ3Rdz6t9X>vJm!0T=tKDw z)y-XNqPn--ifZ3-E2@9Xt*8brx1u_@>sC|?e_nhGc^1{g<=6STxLV-FTtW_Vl8fBr zB@dU8kNjLt0j{7Rg&Y&t|G(?z@*%2w%dO~MWx173ZbY^7>Z06ACr6^%c}>xE>mUDS zxX*d#>*D%gCbO8$9PZ~n9$+r>c#!${td&k~rITCXx2V7C=JFw`d&{k;_AR%f`nTMQ zYT$A!s)Mf)H?tPG64lOM5arkTy12S`1~QU~WKu{aD_OXJY+T4iWJhkLms{!OR`}g2 zs{0!A(fzyS#IneVs0QqqMfdwUmeD<@&WF)GsLqcm&XZC7GOWWfj_Pf;6V=viH>$O1 zLsWayrl=M-Kpe>khBJ(z3}G;X*vC&1>8d-r0;jvYI8?AWnm$Bw-#cI?=@ zV*lSWnRu6F6Bd5jdb7{-awf?n`Q~dgb0!Jma31F|%+X2C`C;2{A6svKn&d&%L6R3$ z2T7h(9VB^E+m__+^wlJnrw)?bo;s*k2a)qD{lDDmK%3TT+u9>JilaG>V>zDwoWO~k z#L1k(shCfi_1ofCThG3DoWCu8i*@XiOV`EK!LR(r@BGD|#!!YVWt3AvB~?^ojwoFh zR|n>p3A!%6hv)6ip6tcm?8Cn7$Nn6EF;coNt`45$DW2vTp65AU;6+~IWnSS`USkAr z@&<45Ht+B*BYBVa`G9ZvhVS^EANY}<_?glCf-%y@SZVVIF;0w^I%B2ISgA8s>Wq~- zW2Md*sWVpUYOwFEv+u2|#lWibggX1Zx@nk>X_=lGFs_>XZSjA(e|F|zPTDgUb2AT) zYwPBt0}HSq3$ZYZuqcbMI2~D%CFsmj*tgX!gMD4yvMk5)ti+0}Ojo+momE(s)mWW1 z>A_m8%{r{hdaO@RHeegJrZ?NN9ow@5JF*iyvn#u>8@sayd$JdMvk&`n0Q++w|Di9A z5ytv$@qX?*f+IPKqdA6SIgaD8|EW8P6FHevIF-{F!0DX9nViGfoXbGY<9sgQLN4NB zE@cpxaXD9TC0B7ZgSm$5xsDsSk((I8&D_GR+{T^U!BFnvZtme;?&E$Q;2ECgS)Sv0 zUf@Mu;$>c81h4Tr#!2bAxZ}0CnU8syALFUM1IARnF;%}Xi?ArhNa?z`Ixwat=(@PE zRBud;^S8x~kb?^<}@*Usv6F>4Zqxpqj`3?K3{B`kZvYE^@8OkW9f=a5WriNCo z<(ZSS=F{X_wt1noxuo?IjtPy4`2UfLUOV5{*7%$oPI=CrK&D*GVjqqrtt z^cwm@9yiBjugBb(JqL4g*8CmUuH#yM(QD}Dwbt+Q8S16hHYfj|)J)=B7`sKUq0j8` zHe@~jCq8E+ukfTY{D;0A#K9cGp&Z8H7zbJVmh3Sci+xMhz9rkA6F3F?l&pQqSl=x_ z%Y6emkMp?z`;x4EN%GzDOGNvS>=j&zeaIN!Ex*=n`;M%AN7lY0Yu}N*1^bTdZQRaX z+|51MXEgk7d3KoFkMJmu@i^)``MrSH_NUZ=Hf(L*(%OEdwf#zK`<2%AE3IF|ex>NO z^LIS{J|FNQAMr7tFp5w4lCSt0eSM7YmjB?kK3?d%<;m|1=-agwR8mDXHR#*5t*K`k z+A=NEF+DRdBeO6ovoSmWVh-k{y*hYDzjZ>`hS_eUDgiUSY{i`Y+sq}E3_Kn#WIOg^2li$s_F-T4=Kv1G zm>=sq<%hcOFpi)fM`G-k9nCQu%W)h}e@^5iPUaL&G!IfOa)ePnuuH$-c;6`p@2sd*Jw{jbIa3@2#i@PyL{C(~Ge#;N= zAP?~{kMJmu@i@bILYqWcpXND6@;)!{0Wa|(ukaDC@iDLS32!orxA~NJ`Hau`lCSuh zZ}^t)_?{p5k)IgNFZ{}H{LUZz$zQH5X2@cp=y%F%J>G_TrlBpbD6(U^BL0Ew*GGwqiZDrYGC5A-&m{ZP}FV=*9Nzz)tK;A9i6^c4K$;U{Cg9 zANFNG_U8Z&$!m&xrrg%%&pwU?cBkg4COBF<{oVl z+kQU}@**$uFt6|^uktvr@dP7yir0CDH+YUWd4achn|B$>d%VvFe8@+9%qNWEGd|}F zzT_*u<{Q4{JHF>fe&T0F^9#T78^7}hf4VN2AxjzMxTB(yDypfW6}7aXj(Vn{Ez>d` z(=!7zF*EI$g;|-6+4&c9Feh^{H}fzr^D#dQ(18V6h(%bG#aNt-$ju|EfJAo^FuK^)8>9LixF&JpzENRHwdj^#Lxr#~lfA}4V& zr*IkrIGr;%le0LRb2yiQoX-VZ$VFVtB@E(HF5_~pyv`o(o%*ag4Ogm;_R%T;%=3q|RGZ%9+5A!k~^J^3JnSAGb5phLU zW-+?bk!~zOcRI5QOS39nSdHaaofTMv9<0UMti!sj$NKbS12$wMHepl#O)oZMbGBeh zwqk2~vn|`PJv*=?JFzo;*oEELojur-z1W+5*q8m-p9A?1eL0AOIfO$wjKevCBRPtr zIfi37j^pXi37p8uoWiM`#sE&|49?^%&gNVOavtY%0T*%+7jubo{l&%0xRN^<%GKP( zHQdd0+`|pr%T3(J&D_teJizS?Bii|49^p|Q<8g-b1W)o5PxCC#@jNf^A}{eWukb3b z@j7qtCU5aJ@9-`od5`z`kdOG7PZ-6ge8%T|!Iyl^H+;)?e9sU3$WQ#tXny54e&-MV zb z{4wj9Q^xt7@)xXQPN{vFS9q1z7=byZ)|^snPN_AgH0wL%=9F4Gw&#Cn_3i_O@aE!dK+*qUwV&9-dM4(!NI>`WhaVOMrzclKm2_GTaUWk2@k01o6R zj^S92<9PaW0w;13Cvys?F@V!K17l^3@06eG_CU_(0xsktF6I&jaVeK^IahKOS2LJv zxR&d7O@7*nPHm)r4W6*aV?HMO*%j(Vn{Ez>eR##6y-=f+gCuAR?sJ!5K| z*UmdxX92T^XPgwhcHYP1yRaL(vj=-( ztc-E(+*oPWwe!QRcLYabJQcileuBr0sc~LAKg&92V>}hTc5Y178B^oDc5X~H>)QG4 z*1LnD+{NA8!@bd-r-$F@*eNwc(&+w z%D?dVmwe4Pe9L!y&ky{_PyEbie&siQ=MVnmFUL_CvXoIyCB{?1@01%;&H7GxJL}DY z@l^CX<@Qs}x^}*p^_IgpDf*rARXx5M#!0<#Qokm~O1-f%#&^n%m3m{P-Z-h>h>h8V zP5C#yu>YywoGsXjt=Wd&Y|D1o|0Lfj-%;ENT>1sd{6oesA`{ zcq;mx@;C$##8;-oP#k{Kale{p9{EM$W094W^UnDZs!i}WGHuWH}`Na#!CJD4C6r_;$a@)Q6A%QhVukZVLTQ5PWek7 zGp5G*o$`0AV@!?nJLR8R=QE6_qTeYurkZo@yxy3a#+Vw{wex9OyPl^XW%YxsI?3AR zD&wVU4#$NvGnf1Ht*m~P-5Gr(LvL?8yhd_O^k3ra%*L$P)?(Mr z!V%Q5e_R&-ff;JNqSH@eSYd9p7VIXYDJq_LbS68O<;J z#_#;WpZw)|V1_If%F3yrifU?TMQdtlLml;)5Xz=yI;Lj^W@ILe^|E#t4`s$hnK4pk ztdyAt%8Z>dW2nqrP&PO7Ffa4503BG6g;uo0W`Z+fvAo3jO5vK3pi4ZYcx?bx0j*b!s<@9Xf!cXIvR z7*DRd8|TUOc4NJCon0N=#ogS)z1+wBnM`%`J@b6ovpmgnJkJZf$V-@`lWXX&imx$( z*Lj0Cd5gDshj$st`+UHMe1x%;TyrMU~H8eSIISWV=TFbZhR%z(2cL;I=r!!Tz@yVlI!lqR=KfN zZfunsTjj=9xp7s#Gkw?vW9xtYI(zkx>cE&OABJ(0Tt|OMe3(agl*f3S;XJ{U7+dAW zRdNm87)!398(+yabmJ?z4*!a1Y$ey;jjiOGyRnsAYd5w^*V$c{oR9fg0Q;@D&R%1# zudqL=SQh)Fisi5`O0J==D6WM4QAJnmkCJQXtBA%{g>jW!LpR2fYv{&Tat+=1O0L5j zTgmlzV=KAtZfqsj+cy@Ct$$u;y&;u6>&CD+iG5{<1&<0`p^Zj2?@(2cL;8oKe7T!%NdlI!o?MPnJ((sg!qFo4rJgEKixn>fCzG-fKVz_>}SqhBRn&0wzKTCU@IZs10Yt+9T$ z-S|qbp&MVxb$DYdx&D5S=vXhg=5C*rTx+-gDqUxHF4BtD)Y67J=fgcj`}3-^IR|r9 zmAb4_k5%^lRS)o>V`lrAYR{?moa)8sh_O@M8Dplp3paB#$8aUuwOX52YtL$JS*;yw zjLGU>`OWg|%t3qRW?t;?YRs=S`>-$iPK~nFoXdG!z(xAfOyVd$wQQSODO;<0+AyKYCvcMOuMl75HAbUst$ycEk7X$15Y}Zq_CncO@5cfBhlAv07R9`h zeAb|osBV(aAgG_@GYRUb^#5|JgCppN_NYAyZBnbh)M}S;enuCSvvmExrwfafz zAj~PrZz5bSUV*+>y3Vc+zT#`X;ak4rdw%36eny{f>NbG0xK_2E2 z9_29}XE;w_tkfARb;e5RI=kzTGcpr1(~en~4acAbf4hAik1dYlxuU<_zO2WWV+B@Z zC03>@-RRCLtjcPvK@ZksE!Jio9Ann6$NKbSLyV{YiR66c?I-aX{JeT~wljFJM z_nxj4jg|VV8H{mKy3Vc+?5C3NsQ)1Th~v3p-%+psYvT=9)Bm!WzZ(5z{QbT`d4!Ce zRq1aE)IiqfX~*B#@0;B1pX_b9 zCA;=X__xt|>#v%1{W!L2?^knWF7$TMXTRuKe4RqiZRz(H8`GIhOJjOUwr}*`7E>3KKGwabwH=^#!YpU^pAq@$boYwjE{Y`5I|$MYs^4v6n(#oy$c1NyyCe0;|o z@Xf}>*GY=}5B#UcYTbIqX2o0?J*sOu$H#r~x6x`#&p* zZ#$n(mY)}6**SJ5mYr`W%g()%W#<-|SdJLazddz_8176B6~kSryTx!%>RvJLKFi_$ z)B|D|mU>VO52YR!!y^qmYB@M3N;ogdgyAXYN15OpDd9XR6Jk4FPQ4MO>52c-@cuhl+9EVH}>uBgB40JThHADqTKWjOAm9<>NS(GBC;ET2d$pOh}2ES|!tX*?}m9w5f@>BRCGoSDY6(&e+oSU!hXJ~v$+D4xgpX}lm^ zzEF(ih!=Aam!!*s(&bCVSiX$Qxgw2Mrps4}v3xay(|C<|EfKFvm#-IZAmWYba>OCr zoW@(yILecpC@E8>6UvoY0_DmqiLzxnqkPH!^&W9)mf>Ey5anH#`&o_$ zSe{|5z=N#FL#)KZtV~xPp&O6VoyS;($61x(ti}_p&XYVvlt1bs%KtJ^{#S_dze<$< zHKP0@i1NQqlt0S-22t)P^P5DO-(nbV6J>sfDD%5SnWL;DiLypH-y_QTK2gpOh;n{N zl=CB^tWozL6KxUg@(IySqlk9m z5!>)Bu?^o5+weWH4L>lFDEE&Ljr@+orY?w@;lc?!b&$y z>h4ma&Z2IjJ}x8b;c{a8uOPPjN@9CsyRIU(=W1d*1{3AKhA8*7oJ*ATJg(z>uIB=7 z;6|cs5uAFq8c@!Ij4@mlv0uNAKm&%d8o$8(bX&eGzntju)jeG#Wm%^-#u zQ!|NS=2SZ|%#w=NT8zch*fCx1B*yX*#PX8qa_4k;DKVC#Jh8kCUDCL0y1bki%gYnX zE2PUSrpqgdu^ihH%U$V~#_s9zDq<|JN-VFIF0Y<0uOY^AM0J?#)9y%@)nl?xQrEnOZV#`5dL@*C;$o8nu%oyK?4 z<#)wc9!V^}$NOpgAYJ}YjOCAr<&V?lPsCAtn#Rx4<GE&l??n6~U5@yd{gIGF3$gt7`Cpmk3M#2eW3^aA zt2DL|$?wPh-lrUG{2jwl#PX5pa=&!>2r-rqCzcOOmwTkkho*5&aT~TyV=S-3p6rpv zSnkP&9Gi;ejX5qA%bRk1DwccEKNZWHb3!VXx8%fBEJqnmYG7N-C#Pb0`*b8a>Sz{o(o#ko8eZ&~2`#BbzmD${$*X?I`*0ODgeP8x9 zv63~s&M@o!%ks(?*Hv?foBQ0_+{|O$t;M-m#Qm+@?k%ZDqW+ty z7xmlBG@`y6snht5a3=1X4*fFO-ySB;fN`1ZZ%-3vLVrv4xB5u3uhq86{#Ki0U$v~A zvag8REc>#kPO~qG+BN&4sI9Xvh}u2-yr@59pA+X39~S2qwNYjP(Yl!q;$`B3qQ0M5 zNIY3wSUgg+?b!p>O?%W!l{&5R8daWGW!)-|S1rcubYe-CVi}fYc~pj%Xpf ziRii6t;E=-EydWzEyUR7Xz!?l&BUmaUSibIzs0DtO-0+BiS^rw@qBHaiPtL=^^y4h zx-;8|Ux>ZM_rz_*SH&k6a8gRqQC6TKJ1G=ojHI5`44?L zh=VzVLphuy=ts2MQ5?-N9Lw?a=LAmVBu?fOPGtb6a|UN}7H4w~=W-tBa{(7}5f^g_ zgSd>#xq>UXimMsSHR`dRX=ux|Ovm&X1KAmw8TFf;g;|-6+4&c9(4M)Nn|YX*`G~fP zc8j)*c8xY(ghkOWvy0P_CD1psomq;dS%xkw%kr$iimb%Sbfp{JS(VjToi*senykgz ztjl_=Pfs>rLpEY#M(`%D^EGer4kLM=5BZo;e8zt0Ps#5J{3>eOvPx0gl|>zDo3f~* zL1NUwbz&#+4l%alK{3ktw5ZHw%3G$qWy)Koyk+a4%w@`4rp#r^T&3=l|JPdC%aplH z`OEsS3IAp@wm{!czDvBVxV`sK&axfFFU2VLXz_5$IRR~7b{1a0On*tfH+`+BZOU$E zIfkKr%N`)g{tyrI2#@j@k29Pnly!izUTFDAp5ZCp<5`~PMPBAr)P3^(T6G@fOuk#Y zlNjaRho3oAy01(;UaS+(5Zj6RdHFozU~w_=R&iPJez6P6Uas$ytMhVwr(EAD*LTYG zo$_wzJMq2XHmxnMg0?7MmCeyU<=Q0q9;&t|*AC_CzFeOvk2=>s%A?-j6{FmriF=Db ziieQlIBGeanNTO?b8$6`a0~i*`OQSxZ$q7z>nG)RGL*Zxn|qX1yS3?S`Cha|`F*^E z_9@pU$@eq0Me@B&b)S46Q=LaS%hh{%FQVMr^C^4s0|)UJ$G9>ab#a0g zeoNd={6ySC{7#HI_(MFJ8ct<;&SMU)U_mY?%6=8r)73`h_JEc z8_^aOH}NRir$U<~-{%`DYKIDSUvWR`Jjz+2-YeE3%DoA1(wo@!-T0OR`JE#j-c*Yx zi_?kcivJQX6K6-+E9XR=7y6CZnh%uKdsZ%hwn)D3wvwoQlJB}1x0Rh(5_O+^uPy34 zo)h){uo&gmFDhf3Ul+F#KNNQrzZMS=e--;t$w{>39A@KeqU-}v=au?NLw9)z~2yp%i9K9$;}QhQWti%RWKsqQO>pw6S5mFhkD{#}%N4W3~`Mz9s? zp|THOu^+#1xVfi7JVBgBJWH%c*{h~Somc56RWmRn#$?sZv{Tj>lr_p7<&5@-avFz~ z`cI{{ue_SO(0?lRgG&9U@*eb`qQChX<$sW<_eapLDj(xL}Ad&c}GHR)5ulSd5M=L1&hx3pewV zIWV^GXS8v(wyv2)jQ7*t)yJT{tF^T%$<&mgoolpjjXP?TsYZL&OpEbVV{FyTY<=xj zeKpr`9XD{3$2zbFwy$PS_F``ac-;HN_W-N)v6}rjfd6n1hj19`s79G;j-x*(ax$l) zy=wG{n)b}iyv&cjQ1cew`F^FWM_6^H`GxpWoorQ2hx{=ITYL}9_>}=`;>oQ&sobk z)!MAX?$-Byac!s7YvTHBz(#Dszu63R)LNO6&kpP$?nEDU^*rs>N}p);JAb+_gZ>x4 z0bT63jpK9W$^Q?$jJPV@@&2{SQoA|5P~Wxcy;k3=)emd+uUh@A_Bf8=bWTIRtUUwm zTzeL0a}MV+kn=bneLeXe;w|D3?&BVY^BCHr_65{;@_V}KxmF*n)xVPO>FHOs`d71m z?{-GVSku#ztc`YRWBc3eg}P|75Bgo3 z{n(!aI1uwe@;lh4iYH^c+o*#!S8y3OaRYZVlt+1(=XsVld7U@V?~4B4p&xquTfRoy zxB1m^kFi>3ye0p?XIt@K%ti<1XGuD-5-YGKYtRGRU#DNzsf#*&pl&_Zrzab*A;w4D zR_J$i`d^*xu2Tnf{WzSHI00>6rytZ^ihfpiJ=bz4w{r)!zwR#7MV&rScQ5)w-Tgek zFrMKlM(`>h@E%|B1;6mKeqKTJ`Dv(QR@yNi^Dr;AzkUJKMZG>yzYq(v2#c~9%d;%2 zvnsYb`QFKv;^yp(F;TDWliy!FOgx1C9LJfQ&KcPLasEEyHP*SB+qebWo&3(>lj3k* z;Uz}$4xjTWKkHaMPhqjMqAgvhIX$v9_ruVP2S>d zqCVb5U#Nc{{i6OuKH_6OVH8ncpP{eRe~ErmZ@koh!?%3L_e6dENc5%A=vVc>@*BVN z2Y;$V^{tDIv#vAhJKLLWtgKxk9}@Y~s`kvr>~3G@esz%KHTBnwHcN7(YoyDzKgsE8 z$H+Y<`NK`kefo2f%QG$`w;OrEnDn#Ti?yQunQ0^LEE)?%^SaY|d>`v6+yCo2s=kus zb#D>1Uy|p2NgU$#i{ee9Hcs-q+B?bfYWvLf?$;M0|CZ!+&l7KOdw}S^$onOE-NVI` z-9A7(QrulUP_)h2?bOrU7~@UmcGYdM-0t5w^sZhnbW3#?!zwBBL6YZPO$@82qP==( zg4pggMg20fmZ;xl))w`v%sNTaWHRfD+9?PXXB+qNxv+=rhqB2HaH@m#|)t9qNh+l|aGxECG_TsDJ%;HmGy*MnB z$?QP%o1KV$(}!KymEG8bJ=u%Bi9WM0(XaO>+TuU-XLAncGLZARfD5^Zi@AhBT*~EK!IfOa)ePnuu2m1y(3WYLj_H|! z8PQHfbGvhTJlZhYVIHDgqK%@xqU|~mZM!gwuqcbMI34N4l5}P%mS!2cuq?~50xPl- z=7MZjx}kq&_0Q~Ttj-$rU`^IyZPsBu)~6>Mupt|C_dv0 z_BW=~edKkMeDI0luV|ODN^y`F^?98*n|Oy9_3@w>+xxT_+w_{K%w@`6rrc%9U8dY+ z%3Y@1W$U8sk>gF)RsJ$%FS89vURU|c{*7@_wgtvd!`yB@uN&u}NnW>)$IICd_a%AW zSwwxWOuHp{UhR_PdDVN_wW!-9&l~SOj0cGAc!-C2ghzRd#~Dtn`vgz%B+v2;&+{TL z^D656@7%6BFWbp^-Lc|6yvL!a@3Q0hnKLrEJg+`pUg!2;v7LCUIFES0xR~g@%k`b+ zH^`j)Ot1l&aUF}gUx0}!F#yM}2*WFzF(Q|er!`{?#2*yv6=bcMDokh5iWw@Gn z?_0Q;*pAz{9erl39B-_95BG5|+9S#HYKwxoU3DIL-8fe+-=3G)6ZKtw5T9}kKX4j< zalZUsYw=2PMsbMPUi99P=WR}oH(9r{b(dx-v`3QXU0yVno67A*zBKZ>agLqjb&Y`} zud9zIdEM>AKRkC2YUs=K9L*e@%7UCny!RDcPHe|jsP86oys_>L+{BG&k0j4~o2VTs zhH^LR{O{bZI*+_=oSP?k-ABdVsP81N`=)pxA9Ez%ax(f%#kmf5s>RF1=|t}xdEVya zc$0PKw{8a(Kzmd!#G)9xP33m;dEGdtuXxrvD~Yd*>bv4YabxjoaU1bhaaSrifVT8w zHclem`y9?DwqqdbyU84Hta}NUG6?NasXZ#M!q~06mg`aHf9H19dE|8?7m(z2?-Vyg zeJ6R{XT(0(mL#wHfp|DyaRR?^mif6t^xn zjDyN(GyS1bpQ$t+D~;dE`!R+qAK-R|@gNWL2>M9nV?54qp5RHI;%TC7o1*NC=z1AVOWE#BrG-en~3@jlVEAMr7tFp5w4jL-RkFNwDQ27R>2-0sirA5HX) z-_VDf%$@*cY{;hSqqWB*$9oG5tUCIFY9rYksP?dgD^#J-vl|B;J8ms$p1V`e1s*mO<)LG;5EaBNB@ePPLiiJ|1_D~Ri-9$yV|VD+-?W=@6JaU6G?8@`$Ud4 za=ek(jl52hr!^*;%3Jyl&)pB2QZ|x2tZN z%Izlk;a@%XcmA|ahB7L=<|Vn;Etcbr&qE}6-DO4PN%FkC#Pw0P_eq{t9VK~Qb)MvTKM~b^lGoKnNnZB{ecyaj ztB*A+$E!k;yzY$Rg0#o@PV&4fi^h49*X<^5g7#>mZIV2%K9=Np^{ph&YkZ6|$Eyz} zdEKMMb2$}rOOofkLA-*Y+{DA&&9gkp>pYJ>mgIT$zj5Yx?YAPY8+qQy>qee8`TwV? z#o3sS`S}-}FwT>_?vmmfti*<_Ne|XS|16l}-PmJ&Fh-NS?ylnD9KZ?m<19`>|4Z_` z*NT^NJJ&M|`-NuZcptLft31PdjNl7C;Ag(l$MyHf^Co%S==bfIhIyEk#h8zIQ5QvX zyd6EhD$BDztFt*9VE(D!5@R6A^BMz5p7%KMFixjG`goG(JwsF%MRU9td)ydE@~-!Z zw=tXtFh|uti7}AmJwFvk@&ljq7eC20w#IyGlgF8NY*ubJ%5y8)t7vXF%6mWBvuJKN zw&w|+;%T&Hleyj4-j~tdMRU7RAMc_+6wU2MeSL=hQZ%<4_4y_i)Orj9<;vkTEtcBL)5F)h=3-y_5s#1q9C#k0kk#6jZB;&r02 z6}g(sEaHQr@fEq6jB;mYPnl~nVUARkJ+x2FC5E|EQ4jIj#%S_6%lXCgSbza^;CL3~ za2DbK7G`%A!5Gghj`5r6#1bq?XO?0ay09$EVSHy+U`1B44YsqYt7yC9csFu;@p*>G z^TlTxBIj479U}i%wU(&v;xiSI7mQ=?$m=FN7P;NX>n5xdx!uU?Ce{@Bv>WHQ@|+BLHs zd$1>au{Zm$FZ;1S2l5~Kau5e|2#0bQ(RccBBu8;H$8api(Vr7Ik&`%?Q#h5=IGr;% zle0LRb2yiQoX-VZ$VFVtB@E(HF6Roa=pWmoKV)~r+>zad-OxX>`bJy} zifdKzS=g%f;%M}Z$eG4y_U=3EM2Ww)iHgz4?Pf?2c>1)N*Q%|%z}Q<00V&}S;v!Ptz?99I~J@tNZa<1NWW8*h<| zj+|-5(W3EIajH0*c%EpyH8&TXtQ*^Q6E~tgnv;u;oN45uBWGIisJNl{yttM4rr1aP zSd6;=RytQha>|iwjhu4iTC0rTstdRX{iiuO<)XRPR$jLTb6Ufka`iFZ zQ-4fyt>%wvW3hS$>)^W^iw>ZVXmxmd2X+L&oFr~I4KsOimd@w&%z0>)KybIQeX zt%Y*Rk!y{da^zYkB&S>~*IFp29J$uWDMzlg;OB*-Ovllm6FC`kczou#Sgy5DPPtWY zr>0wZZoIB}Y|iwO>)Ykz3=wy$j&J#d69`{l6)H|K8TRUf1i#Yd5)`c{M(F6rbgZ&mF~Q zd*X9P@mZhv+);e?r#2(nf5hjG;~(EM{CiIO;`v0yp&Hi?)23D4D(32YMt1_+Ff!5e>jaQ!6 z{w&EqA0{5*x%T5pp7%6Se~KJic93|fc%68yc!zka_@L3%tE@?0x2rh4>h3N&hD`Fj+OKMLw;fkj^$@2K*AnYRb9m$cBM+aAa;_=H z`^V$UiEE3ih_N1#=Z()yMxHlvYe}wmLowQOBVyUSmn_G6vAij<{O@$RSGpX1A(l5! zZ6Ss&Q(K84-Y0C6>Me$CQ@e|MuqS)5H~ZjNGs*EDARfqn=*vMI%pn}g;T%Cfj^rqg z<`|CUc=~e!Cvp-ea|)+2fYUjHGcl)+k>fqj?en>S3%Q7kxr9Mn#^qeWm0ZQu4CWf5 z&tA_B+{jG~;bv~p4l~n^S(ugC(5L^-@wT_D?-tDQ>XTW0GOIsk7hzErLx0S6WC@m} zGfSaAX7$IvKcl<6zM&dERrydiQCQvZ&7+ z#CgS`V${dO;&S4%VrB=Z%e=y?yk?vYFtrV{Jc2iQov(R|cNoe0e8|U) z;xq3N+o8OX=S}ju`&h2zP}-tzmTB)K&pW@UZzXwMeJ9E5-YTl|B+t9LsP2pAcGZ7; z4k?ax%d|t8@tfp%`-sMHnRY1Kj4d!W%hY|@wrr2>i1J3BH}bkkp7(I^M^2E>%ZSEC zd98SfIFop-sBb2D-92qo5q16ukMbCgGn^-s)$32lZ%LHLb|`P;d6T?u zl>cY9_oR%2sN)!ntt8Jok7yhxdEG0;Wf?*j^oergpkQvdyRxc>3HdFF^5?y-@U0_-o3?7IE3#wjz2ivF1bd$P@G=8TAV{PPb7KXn=R`TML%bJkKOX_%G%d@_o6M5 zJnu_lw2w9^^m*gtGrY+|cchMPo6^>l&v?Uf1|b^18-HlGio z=Xv8Z#+CX^lGlAo+y--ElGlAtJb*9ghw+!>b<4za%$det<=N;Hl>>=7Kc5TGzZ?FR zMC2&yJGyTWm!dtA9B;IbcA4Nj@135jO)9lX-sr-|_v`L066_itnJFBWO?^Ly-HMO*%9qJ^>?Jg$H#_ary z716%QZ!|=Ew`XqVWqvwf4yZB*Bst+F#idw=Wmz8W(^QVPdO7!>j$#C37^g*lD?uGp+rGxX2~mBt`@C=UG1SwR z>6n3;P)|vYcTRCG=3zb-U_oq0Q#s!Ft%M}EYx}DEaU@4^8QL&;U+q|ZEXQLW7%RuC z?yCoKJ{NK^gX{xrN0T{TbyTgdH1(Sh@j2dj-^laEHOYcGUUlE(=Z0-ZQ#syN>L~fV zu$>8r;(Fo;-rz0FL9IseJ|Cj)oBB*#ai{H(A(So%E($7{w!i~T(a`<>)>TkK!z z?SBgXpP$!wY%uoC^^UFUuSY+szY%?^eh4>n8@F;hcW@{AS^Zt;bM^OdFAs1(!+4N~ z&=2b$L7%LDjK_Hr^U*jz>-&mz%va<5tgrdAS)cX&+^ZO4dnDw`~Fu{Q7WM5)c2thC8= zXQ4Ll{AjLS+N3dGoZSC`noY*&^N;1$$)*n$dQSei|4VT~|KH33X=OI||IO_BRIUx; zc@-*n{QvLV%h^qQp2)A0Y!?e|))%!S@C=Kl`Ei?37Yxh?(v#&hcE0&{Bo-^kHb z+NT@bHu=hldHCGi9Ne=}MdV+%t^4D7&p$b4{jRsZQ;p=YreC+uI9|7X@?8JXNxELV zR-?ao+dStxaa}i4mRd@T0?k8o<5`IfS%d9ZiK^6QqI2L(Y+`hkR!uTGXpc?+$=LQvCEo;*^q1a`+GHWT5iu=%+0*a$NVfn2Nq-@7G_ZvV{tmti6vN) z&MeI`bYWSRV|i9U4l1)UUFk-5R$*0EV|9A4CTp=a>ky5#9_zCK8?q4_vk9B>Z(>ky z&K7LRR&32S^k!StJc!G=6vwEQS8x@BxfaK_m5yyIhj0tGrEV7=Vi?cx6eD<*4|tES z_<~>fSrcm8_#AEWy9nB;x!=Q2@~e)|lh0K{V~Qy^xKG`is(ntS7K~Lo7WJ1qcycOH8!So|Mbkj zjLgK$VZcT>q;a#+}5tc!(GmF-~G!#5jp@@c}<$ zoFtzwH%{WZLo!aZL34jUB*}AIKgLPxwNNL?*yt_Bm{^DP^h5nP>F4@IlfQFnerR%R z?C$<1#zu_C_zmRA_dVMQJ+A5-qr_ixkE{A`6GJVNiRZ=A_#anQ_DxB$<7ACCzt?k{v4GUB{kg~tGF z_&1^L*Ls@Vt2DR$y1tn!Z#-|p+AqHQ9e=%YVG{j2q4jZ0(kRXE&wXaj_2+orgw;p< zPD=buo%Qj2?DhOLw}13qHdi0gRLsICa*?Z81RoHMc&7_R7^qJa5A4BkTAm z{-)0Q7@jL!v+JYJ0lE5!=S^6BOrG=VTyCu*^H-z4*xb(ja@!Ccb#$lPeB8rwk6m)h zeJ$_)VQ!r+mP>yVw+6Bf&68o6j>U3&%vg*A?ugm+oIRU9erfvl%^kD-`{vp%o|k)x zf$1wuwISWoskVHjf|Y8ZR0E|NDAhoz21+$hs)14slxm<<1Em@$)j+8RN;Ocbfl>{W zYM@jDr5Y&JK&b{wHBhR7QVo=9pi~2;8YtC3sRl|lP^y7a4U}r2R0E|NDAhoz21+$h zs)14slxm<<1Em@$)j+8RN;Ocbfl>{WYM@jDr5Y&JK&b{wHBhR7QVo=9pi~1*)PS$E z|5;M1gHj(T^?_0!DD{C-A1L*KQXeSwfl?nR^?_0!DD{C-A1L*KQXeSwfl?nR^?_0! zDD{C-A1L*KQXeSwfl?nR^?_0!DD{C-A1L*KQXlw7^#RQ}#@`=qH8jS9Q{YC!vP_BP zDX_^?)mu)9I-i=}bE;~LQel$0sZ!|CR1MxOnoIPjgzUfO`=^&N_9}`1EoGt>I0=dQ0fDvK2Yidr9M#V1EoGt>I46* zKJc4!y^>NLl={G=?E}9WXCOX&femVd6XpiNW#b;4VUw;_5X?Sp7Hz%jrr}E5;0#V6B_e%{QrsZ-uX6ZX))UUe_6EG|FZENH~IN# zV#VgXfBwCivu?w6^3R)CvEgeMTF$>$p~nl|pMT!OiiO^%;r;pdYIt9Bmh;b>SaE#b zvpMTFTxVjHG5&9JjJsTsvU+PXhp=b5MD?~9f5>vu@+&%ORPf8XEB{r@e`fA1fDZtnHl z?!IwN+p}}8KTJ(8kuTuHh^3m2mM>7#OHPa$&c8;frVG_{_w{>C)Y)UBO*ULTU+WVi zuD;>=>uo$SUMT+>|Crgx24$PF@rJ9d78`3HJ;q<$SNfZ>HL%fo>#v&4RAgcw)%KztgaOrDot=bJxs>kLoh^B!$q zKju2ew8`DxGL6X#Ohy0X`f#?%K77_Ox$TQOEd5RX8YtE__a0kno5|lI|9!{Y{8E-_ z>#lzNb8V5I7d|{Lcf0LVx%nl=&&VgooP$Omm0M?MdjEf4`Jc6vtEX%-4=?gYt`7cL zTR3sHrr1~?c0$^pCeB-xUS&LMAdVwqY`0IJ*ESjTnM{ZCbNlw5jb1P7I3bw}(g~s5 z`mxxyRmLmDU;E_WZ2CIcbiFiW>eKs|=-6?oj$Jx+T%uE_&K;el)nwWwuahmyt+~RR z|D98EuR9=l-Kp)L+#FD@^p3Mm%9XTG8Dp*-lFp}v)`>ZH)QQDkr_gh!=KCjCzv+_h zm!cO<&HZNV`lw0z|MbcoWp6xwo=6+Fx#MTSgK}FR&&!Rdf$1wuouS8S-IA%Mz2e1K z>YL6#jZ0f>U-Hd>+%}hv=^NMDc;2h>Nn=)(%Ng|$=k_r1Z>|;xOqDe>c706TbFwoJ&TV~5JtrGH0sE3; zF3xRp>6~oJbooO2lHmpRCHdornDb)14!&^Ad9OL=WcLm#wfU53?cBQ-YV&p%Hl5RL zcuqF>@?6{HX6#I+&1JdUA71+3Hr+TK)A@CVrhQ~UqrNgF>tIs6_xSD~E=>#3+;g%m z56RVWJTF(bE$5u<`b%ezF|q&X*htA!j}H#{e6e|7P>B90YDr2C;lEgj>a?N!BJr_gh!=KCjCzZuy= z`pww&F>%ky{z&(^E%lsi#02b1+FhR;H>Gp3DKirk+Lw$jurJ9UKjhEJR=9S|d9OL= zWIb;zwfU53?cBQ-YV#f!jr*Kzg`0D2mp|VcbW`qj-!#TJ9(CQA>#URZk$D^Sl_^;V zlj6O{cmMEhT8QSJlRb85u3qDLE$y7F>kYZGPl|eP>93ieQ`@KQIxroFjkl}VIoYAN z=%^TQ@u>yY05(b4Bc9c2D<1g<3bp!4WNL3+Xpw*T=*?C%f~oTpwzw=VUb(kN;;buD>g{&82g)DKirk+Lv@l z+p=e)V&#t?^5;P_*m|C zoAmw|$A_k4I={}yw2usJ)K@0!Mo)$}8{hrI_@0vuygyghE%BV}<-2obpA5~=;@%=Z zr?yw}7&F5Q>_-cY+ffC^?b!Ws(j51H(L#>j((27mOKy(+=NBC&>aUcPe$ioa{k}}; zw=N3(O36RwM>{6=U^3Vz>JR0Vx?rI$*sWvtj$==@|BrkAF@3sQr*5U1Y4T^R8Xp#Q zxuogzLZQQ=Ug`RcPhs`CI0R@~vAlQZ;kjejIQK36P5v5an77^i$>Qe|aUQxudQMuX zq|uIBK2iL23O#pfzJGEZ_xC$IS9dXza!UiI%4!+AJ|=G7_Jjv=Ti;Uiwu1{yti|TS z9iGc=b182-Wx9N!o!;;QJH7nQH0Hb*ul=9NwO_vU&B@zd_(G}8^Yt|)Vxcx~H)!0S zrRo22uI-}j6p&1GcfHVdpGJU$qW30{u$r>!v^WLH}|tN8xG6W zbv!Ruw=L)U4JSXJEBimFxhLADV6)U&D%>8!m@N~T9&$kwNGuM_CX>9b=|EZf} z?;j@3an{K#WPjQ4IIGWlW9}OocZ`_-+rLwMotQ6rjV!)S8PG!d&DixZ zagVche=ygFTH0||d!0FcZ*|}V>~s5nlH2Cean_WX5egk=4K2FQt;+OQ+?U_TwOxLn z+a*2DZkxv59(d%G+;Lcboen3b$7N}Z?A;0w= ze+TP4o&KI@{=GV$l3S-Hja{tMJNv-5&MXf7`TII``$*xi{@2XEo|8 zlXasf!<&uoesp|4+r897xjJr%pY0wpDp&T&&c^jW?v&IsO-4 z=IXa}j^DV}CeQ6cb86oLbL!Z0#iTiRJ*$PBgETyMo%fsKb446ezm@KX3bk&GgBiXq z{yK%8J2l@wx%$nhnRB%e^HHuA2TYaKGIo7T+;i9YAI@!kOFefTJ^}lZ*?-J!bLrf5 z%5?cc`;t)w_9gk_hx|EN*YC%i_nLD~w(-xUHlH%BoqN|pZQkYbai5cQ{WaHi`SYzS zM(1uHn#LH%U;HrUIz7`q(xFjbnUZxdDc*a0_YdRyxvj6${X}5ljnA!IdyP>Id$y0V$z(GebGXWts9<` z4gI6|ToL=2z0>_rq1KIYF!=Z4uT$u`Q}g|ktKWRnLi)|v^)YeJ$+|w0>q9N|oNV+2 z>`R7}<&FbO=VVi6CMdKoX?I1_$LIOuhx|F&%bDDI`O-J%oNQD@sm=5CH6>!9Ht$oQ z&2#(9-2V;#a&@ll^5IJ+H2?M)bkq2)xU#`%;q(|D8JsZ7F{`et(PS&S> z%rDj2SOxBH_3~x4VCU;!br#$y&UDMbm(=oXt>b*^-CbMq0wUXOyTjf6&(ms7W3Gq)^ z{4>_`)?6>{&J=lGQss@Gx8Z8*jO%$-vBLQ7-@Z*=HIr%X?=uXXDc4uxdAYt3pYWb~ z|8o64_Z_lDrWJJqEV}3}pd&gCB zyR(VWY+j>O(}jM_wR@*-6LpMa{yBYciHSRV{Bvq%m5!@S)IL)horOl{DxD^7AMD;~ zDsQ>QhZ4QgLxV#5fmPODKY3{NZtEs7jsgBo^NfA2F==wrzqgRwV#A#D$hnH2YeXdu zoTKw zSgiP55&M|y)BRAPmX2}o;iAP~r_gh!=KCjCzd5Fb^qaBkW8$6@eV^`gTgo|6!+l9y z1L|^h(_^66zGQ}_a?dH9J58CHpwPagSK5|68x<=zcUELZxxYh$aT}|BGk4nl>HVYK zH@s8szT7cnCbLM#-0g}q)_CBUu4Aq{yD z<;Oe#_0mmDCm(SI2>D+b7w11&FwcX%cyEH!D7<;amH0Q4U8yw5Dlylc1 zD;A$CVjt5d-47LN?HC7xRw({Dg`PV#-#@wf&B-mK-;7-!6ZhP;Zq{5MYN_Y0ebV`- zai1=Bd_K5)ZktQT=Z$M^^4u=8FX>-kUy?t5$e)uvot}5*OWT}tvXQHn+B{!hQz8~> z^AQEwyy5l4r`O1}T|S4WqLuOIkiXHmQ(7S zY(NV+wr+Sman-e(?*I9gjbp{%)BRBXzQ!@eLFcuKzfR-lw1nGZ?_(y-x%^ozq~DBP z9~1YSY=PNweW<0LlMS4JeaQ+vbK6`xCz~=eLZN-h&;t9C{P9EnoUHeHW6pccIVanH z!%~}1nbyv|YoRu;xi;4>jgKE1o|E<7B)3lfeCv^oa6p&1vv=A@dNk@Q zQ?d>w#e0wM{^9@HyMov@iYRJ9sDczBBRB-9NS4SUAP#mDP>!+VghT|}O_LHzic?5I zpa2CSu&61}78)RJQ`&=tdPq?Z5fr!-;X~n+LqvsC^#r0w6)I8$1yULyKq>6(|G(Lt z$;^1y>rK|$Rh#dbo%w&}{Xc)^uh%ojuo0DhPqu*b1FHwv2IqUSv5jCSwZJ{-JjtiV zP_M%{4*7nmVzTMYfG_jQ;pIO9GM`$I_*BtX)Mjn{YCwL!WR1zb9#;DbHpfiiJS5XJ z8wYa_s`<$3uH}5c>}F3u>_)`H+nDUoda$9O#$jzhj*s+g>O4DbzO zG9ER5(lVbqBk`%Cuc%E-wl5%SYimq4{4o0@C%lKm%-b(SyZr%xq z-H3R28Sy9VXWotn5>kWY>rrx%n{%d*F{DR0TZ9uf8%!XQ%KJu zZ8jE!&G?-Mt-Fi;pzlGXt;UTLxCW;((JfGB{vn{9jL(zsnaUKOfb{*i|5MJmu@%P! zm6_cIW$wZJg3;#Auk39;ej3t6q?O{PD@W@mib*G)g0@h-N@CKPm!M8KHV8F;scdZY zo&de5V$vHpTRc;MI^R9LtkZV%ePpjCw2>X0t@zvP+Dq$7ba}d^Y=j0|%xF6UvxExb zyCPF)S)x!Y-)4hZ<42&pO8K^8dEQWr`mCAkf8A_FS~nf(+K}?rI_n0Ry6H$$q|+FB zYydVGJ8?EfXfnRV$h*zVXLlo!79Yc-zhjxi^=1%%$5MK6<>gkr=)RhMsGg}5cLHuK_6#ro5fI08 zZJwha49N3P>vQyzuc*f~d)6`jvbqej>*Gar8UM9jy+pt4=5RplM#RJ0=jhv>1ske| z=jemGp)cXH!s^GN8xHiSi1{Y=T&M7w-9J%?shYPZ_l7!jgS}UEWRC|6lE-*3ufhIl zg?*qqrh9gsdjrxZk+N~wf@74*OrVX7a<*bJsG~nl{kYQ@=dK-qbr55m;vQ&w9jV*1 zu8>cS864S|nUg$zSNYWP1mGLSLY}F`5hIyTotOAj(O1+acG_?Geh$6?o^sSLzY1Gp zr-irGzJkp$GdK^)+Q-Jh`M1=3WOdhazF&58C?Iwt;^A%Vv=istpu|ozm(cpWdD1=x zl7oY$d8_7<`GZg=jImb76UgS0j*mevIj&ix^O%v()(;a{jw=>X={)u>@Md-sUj8E> z)A@`<=P+NwS>ZB}_839rudB)iOXascvslAFvlt7n~qZ#GgauYk;QNSh*YEZ<29zKDr4xQufM-L5897JjC6i;wm*?iXU&FVdIOhkv!+wo;Y5DZ&_GYVXCRw_ zc!1S2@;9uMzg!CBWwM#>1U87(Gg%px+cOrL2|iuSVrGJNBZG^w zE(5<-qyj%ZUbgn@?Cbav$SWePR-Vqj7OsN4Ii!L-JzjrU@wyNJe|QS1z|Uj6I@W=_ zDAH=>>G0ay1oB3Z3i9-L{cgppa1-#$Ar<)P@v@CaUHkd7KLvUE_Aj#b)1{L)*#i9= z#=X7;dHVi2T92Q<6XcbVx{zlZue$#6=cEeq^mtxoSdxF{&z2PU>G86)U*~W5^De8E zr^AasGggqN$LlvMUi`T)0zZ%O;?JU~R-O(oe%}B=o*u7DR=oHazh9cbPmh<)KkLRLzlWO(c_v=uPx$>J1b%uvezoGk|5jh% zr^mylPaPio{sGm>)7cNdcZMKOkJm3&y!dxr1%4jm#lL^+Rvy_;E4?p*RN$w_<7b8k hT{?a9-&G6p9O6ZCLmDCwA`l`FA`l`FBCz@h{13Pb5`q8# literal 0 HcmV?d00001 diff --git a/resources/elle_3D_HPr_2x2x2_2.med b/resources/elle_3D_HPr_2x2x2_2.med new file mode 100644 index 0000000000000000000000000000000000000000..7ddd0228c6ba69a9ecb5a4d52b2d118ab686b33f GIT binary patch literal 100352 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 LIgoN-^&I$r__<00 literal 0 HcmV?d00001 diff --git a/resources/elle_3D_HPr_4x4x4_2.med b/resources/elle_3D_HPr_4x4x4_2.med new file mode 100644 index 0000000000000000000000000000000000000000..690d3ee5c452d431c11c5bb1cc4db32048567bf1 GIT binary patch literal 121264 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 1) : - print "PROBLEME there are more than one instance of ",objNameInStudy," in the Study under the component ",compNameInStudy + print "there are more than one instance of ",objNameInStudy," in the Study under the component ",compNameInStudy return None mySO = listOfSO[0] if (mySO == None) : - print "PROBLEM ",objNameInStudy," cannot be found in the Study" + print objNameInStudy," cannot be found in the Study" return mySO else: anAttr = mySO.FindAttribute("AttributeIOR")[1] obj = salome.orb.string_to_object(anAttr.Value()) myObj = obj._narrow(SALOME_MED.MED) if (myObj == None) : - print "PROBLEM ",objNameInStudy," has been found in the Study but with the wrong type" + print objNameInStudy," has been found in the Study but with the wrong type" return myObj def getMeshObjectFromStudy(meshName): objNameInStudy = "/Med/MEDMESH/"+meshName mySO = salome.myStudy.FindObjectByPath(objNameInStudy) if (mySO == None) : - print "PROBLEM ",objNameInStudy," cannot be found in the Study" + print objNameInStudy," cannot be found in the Study" return mySO else: anAttr = mySO.FindAttribute("AttributeIOR")[1] obj = salome.orb.string_to_object(anAttr.Value()) myObj = obj._narrow(SALOME_MED.MESH) if (myObj == None) : - print "PROBLEM ",objNameInStudy," has been found in the Study but with the wrong type" + print objNameInStudy," has been found in the Study but with the wrong type" return myObj def getSupportObjectFromStudy(meshName,supportName): @@ -76,14 +76,14 @@ def getSupportObjectFromStudy(meshName,supportName): objNameInStudy = "/Med/MEDMESH/MEDSUPPORTS_OF_"+meshNameStudy+"/"+supportName mySO = salome.myStudy.FindObjectByPath(objNameInStudy) if (mySO == None) : - print "PROBLEM ",objNameInStudy," cannot be found in the Study" + print objNameInStudy," cannot be found in the Study" return mySO else: anAttr = mySO.FindAttribute("AttributeIOR")[1] obj = salome.orb.string_to_object(anAttr.Value()) myObj = obj._narrow(SALOME_MED.SUPPORT) if (myObj == None) : - print "PROBLEM ",objNameInStudy," has been found in the Study but with the wrong type" + print objNameInStudy," has been found in the Study but with the wrong type" return myObj def getFieldObjectFromStudy(dt,it,fieldName,supportName,meshName): @@ -91,7 +91,7 @@ def getFieldObjectFromStudy(dt,it,fieldName,supportName,meshName): objNameInStudy = "/Med/MEDFIELD/"+fieldName+"/("+str(dt)+","+str(it)+")_ON_"+supportName+"_OF_"+meshNameStudy mySO = salome.myStudy.FindObjectByPath(objNameInStudy) if (mySO == None) : - print "PROBLEM ",objNameInStudy," cannot be found in the Study" + print objNameInStudy," cannot be found in the Study" return mySO else: anAttr = mySO.FindAttribute("AttributeIOR")[1] @@ -100,7 +100,7 @@ def getFieldObjectFromStudy(dt,it,fieldName,supportName,meshName): if (myObj == None): myObj = obj._narrow(SALOME_MED.FIELDDOUBLE) if (myObj == None) : - print "PROBLEM ",objNameInStudy," has been found in the Study but with the wrong type" + print objNameInStudy," has been found in the Study but with the wrong type" return myObj fileName = "cube_hexa8_quad4.med" diff --git a/src/MEDMEM/MEDMEM_MedMeshDriver21.cxx b/src/MEDMEM/MEDMEM_MedMeshDriver21.cxx index 4c1924843..0e91bf2ef 100644 --- a/src/MEDMEM/MEDMEM_MedMeshDriver21.cxx +++ b/src/MEDMEM/MEDMEM_MedMeshDriver21.cxx @@ -175,10 +175,13 @@ void MED_MESH_RDONLY_DRIVER21::read(void) buildAllGroups(_ptrMesh->_groupNode,_ptrMesh->_familyNode) ; // on cell buildAllGroups(_ptrMesh->_groupCell,_ptrMesh->_familyCell) ; - // on face - buildAllGroups(_ptrMesh->_groupFace,_ptrMesh->_familyFace) ; - // on edge - buildAllGroups(_ptrMesh->_groupEdge,_ptrMesh->_familyEdge) ; + + if (_ptrMesh->_meshDimension == 3) + // on face + buildAllGroups(_ptrMesh->_groupFace,_ptrMesh->_familyFace) ; + else if (_ptrMesh->_meshDimension == 2) + // on edge + buildAllGroups(_ptrMesh->_groupEdge,_ptrMesh->_familyEdge) ; // MESSAGE(LOC<<"Checking of CellModel !!!!!!!"); diff --git a/src/MEDMEM/MEDMEM_MedMeshDriver22.cxx b/src/MEDMEM/MEDMEM_MedMeshDriver22.cxx index 6088176a1..2ba0c1b20 100644 --- a/src/MEDMEM/MEDMEM_MedMeshDriver22.cxx +++ b/src/MEDMEM/MEDMEM_MedMeshDriver22.cxx @@ -176,10 +176,13 @@ void MED_MESH_RDONLY_DRIVER22::read(void) buildAllGroups(_ptrMesh->_groupNode,_ptrMesh->_familyNode) ; // on cell buildAllGroups(_ptrMesh->_groupCell,_ptrMesh->_familyCell) ; - // on face - buildAllGroups(_ptrMesh->_groupFace,_ptrMesh->_familyFace) ; - // on edge - buildAllGroups(_ptrMesh->_groupEdge,_ptrMesh->_familyEdge) ; + + if (_ptrMesh->_meshDimension == 3) + // on face + buildAllGroups(_ptrMesh->_groupFace,_ptrMesh->_familyFace) ; + else if (_ptrMesh->_meshDimension == 2) + // on edge + buildAllGroups(_ptrMesh->_groupEdge,_ptrMesh->_familyEdge) ; // MESSAGE(LOC<<"Checking of CellModel !!!!!!!"); diff --git a/src/MEDMEM/duplicateMED.cxx b/src/MEDMEM/duplicateMED.cxx index 9e0f28ec3..31af1a789 100644 --- a/src/MEDMEM/duplicateMED.cxx +++ b/src/MEDMEM/duplicateMED.cxx @@ -3,10 +3,6 @@ #include "MEDMEM_Exception.hxx" #include "MEDMEM_Med.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; void usage(char * name) @@ -17,10 +13,6 @@ void usage(char * name) } int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - if (argc != 3) usage(argv[0]); string filenameIN = argv[1] ; diff --git a/src/MEDMEM/duplicateMEDMESH.cxx b/src/MEDMEM/duplicateMEDMESH.cxx index 6257bc523..87e705fe7 100644 --- a/src/MEDMEM/duplicateMEDMESH.cxx +++ b/src/MEDMEM/duplicateMEDMESH.cxx @@ -13,17 +13,9 @@ #include "MEDMEM_MedMedDriver.hxx" #include "MEDMEM_MedMeshDriver.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string filenameIN = argv[1] ; string filenameOUT = argv[2] ; diff --git a/src/MEDMEM/med2vtk.cxx b/src/MEDMEM/med2vtk.cxx index 57d87ec5f..4f27d17f1 100644 --- a/src/MEDMEM/med2vtk.cxx +++ b/src/MEDMEM/med2vtk.cxx @@ -11,10 +11,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_VtkMedDriver.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; void usage(char * name) @@ -25,10 +21,6 @@ void usage(char * name) } int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - if (argc != 3) usage(argv[0]); string filenameIN = argv[1] ; diff --git a/src/MEDMEM/med_test.cxx b/src/MEDMEM/med_test.cxx index 0c35fe95f..ef03111c7 100644 --- a/src/MEDMEM/med_test.cxx +++ b/src/MEDMEM/med_test.cxx @@ -14,10 +14,6 @@ #include "MEDMEM_MedFieldDriver.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -85,10 +81,6 @@ void affiche_groupe(MESH *myMesh,medEntityMesh Entity) } int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - int read; if ((argc !=3) && (argc != 4)) { diff --git a/src/MEDMEM/test_MEDMEM_Array.cxx b/src/MEDMEM/test_MEDMEM_Array.cxx index 8117c696f..6b03fa969 100644 --- a/src/MEDMEM/test_MEDMEM_Array.cxx +++ b/src/MEDMEM/test_MEDMEM_Array.cxx @@ -1,18 +1,10 @@ #include "utilities.h" #include "MEDMEM_Array.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - int SpaceDimension = 3 ; int NumberOfNodes = 4 ; MEDARRAY * myArray = new MEDARRAY(SpaceDimension,NumberOfNodes,MED_EN::MED_FULL_INTERLACE) ; diff --git a/src/MEDMEM/test_MEDMEM_CellModel.cxx b/src/MEDMEM/test_MEDMEM_CellModel.cxx index a760d0c07..304506283 100644 --- a/src/MEDMEM/test_MEDMEM_CellModel.cxx +++ b/src/MEDMEM/test_MEDMEM_CellModel.cxx @@ -2,19 +2,11 @@ #include "MEDMEM_CellModel.hxx" #include "MEDMEM_DriversDef.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - list geomList = meshEntities[MED_CELL] ; list::iterator itGeomList ; for(itGeomList=geomList.begin();itGeomList!=geomList.end();itGeomList++) { diff --git a/src/MEDMEM/test_MEDMEM_Meshing.cxx b/src/MEDMEM/test_MEDMEM_Meshing.cxx index b1ccc387e..5326e8723 100644 --- a/src/MEDMEM/test_MEDMEM_Meshing.cxx +++ b/src/MEDMEM/test_MEDMEM_Meshing.cxx @@ -2,10 +2,6 @@ #include "MEDMEM_Group.hxx" #include "MEDMEM_Field.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -20,10 +16,6 @@ int main (int argc, char ** argv) { exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - // filename to save the generated MESH string filenameRoot = argv[1] ; diff --git a/src/MEDMEM/test_MEDMEM_MeshingPoly.cxx b/src/MEDMEM/test_MEDMEM_MeshingPoly.cxx index 408f741c5..f10b09088 100644 --- a/src/MEDMEM/test_MEDMEM_MeshingPoly.cxx +++ b/src/MEDMEM/test_MEDMEM_MeshingPoly.cxx @@ -1,14 +1,11 @@ #include "MEDMEM_Meshing.hxx" #include "MEDMEM_Field.hxx" -#include "LocalTraceCollector.hxx" using namespace std; using namespace MEDMEM; using namespace MED_EN; int main (int argc, char ** argv) { - LocalTraceCollector::instance(); - double Coordinates[57] = { 2.0, 3.0, 2.0, 3.0, 2.0, 2.0, diff --git a/src/MEDMEM/test_MEDMEM_ModulusArray.cxx b/src/MEDMEM/test_MEDMEM_ModulusArray.cxx index dff337530..e9022a381 100644 --- a/src/MEDMEM/test_MEDMEM_ModulusArray.cxx +++ b/src/MEDMEM/test_MEDMEM_ModulusArray.cxx @@ -2,18 +2,10 @@ #include "MEDMEM_ModulusArray.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - using namespace std ; int array[5]={0,1,2,1,4} ; diff --git a/src/MEDMEM/test_MEDMEM_PolyConnectivity.cxx b/src/MEDMEM/test_MEDMEM_PolyConnectivity.cxx index c1c324320..a1406f535 100644 --- a/src/MEDMEM/test_MEDMEM_PolyConnectivity.cxx +++ b/src/MEDMEM/test_MEDMEM_PolyConnectivity.cxx @@ -2,20 +2,12 @@ #include "MEDMEM_Connectivity.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; int main(void) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - CONNECTIVITY myNodalConnectivity; CONNECTIVITY myDescendingConnectivity; diff --git a/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshRead.cxx b/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshRead.cxx index be1886b86..fb10dcb9e 100644 --- a/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshRead.cxx +++ b/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshRead.cxx @@ -4,10 +4,6 @@ #include "MEDMEM_Mesh.hxx" #include "MEDMEM_MedMeshDriver.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; @@ -21,10 +17,6 @@ int main (int argc, char ** argv) exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string filename = argv[1]; string meshname = argv[2]; diff --git a/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshWrite.cxx b/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshWrite.cxx index 7f3a74d94..4433f10a4 100644 --- a/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshWrite.cxx +++ b/src/MEDMEM/test_MEDMEM_PolyDriverMedMeshWrite.cxx @@ -4,10 +4,6 @@ #include "MEDMEM_Mesh.hxx" #include "MEDMEM_MedMeshDriver.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; @@ -21,10 +17,6 @@ int main (int argc, char ** argv) exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string filename = argv[1]; string meshname = argv[2]; diff --git a/src/MEDMEM/test_MEDMEM_PolyhedronArray.cxx b/src/MEDMEM/test_MEDMEM_PolyhedronArray.cxx index 83b6239b3..020dd54aa 100644 --- a/src/MEDMEM/test_MEDMEM_PolyhedronArray.cxx +++ b/src/MEDMEM/test_MEDMEM_PolyhedronArray.cxx @@ -2,20 +2,12 @@ #include "MEDMEM_PolyhedronArray.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; int main(void) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - POLYHEDRONARRAY myPArray(2,11,40); med_int polyhedronindex[2] = {1,7}; med_int facesindex[11] = {1,5,9,13,17,21,25,28,31,34,37}; diff --git a/src/MEDMEM/test_MEDMEM_SkyLineArray.cxx b/src/MEDMEM/test_MEDMEM_SkyLineArray.cxx index ed13f443d..7aa4953ba 100644 --- a/src/MEDMEM/test_MEDMEM_SkyLineArray.cxx +++ b/src/MEDMEM/test_MEDMEM_SkyLineArray.cxx @@ -1,18 +1,10 @@ #include "utilities.h" #include "MEDMEM_SkyLineArray.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - int NumberOfCell = 3 ; // 1 triangle,1 quadrangle,1 triangle int Size = 10 ; // 10 nodes diff --git a/src/MEDMEM/test_MEDMEM_poly3D.cxx b/src/MEDMEM/test_MEDMEM_poly3D.cxx index 7e134ee51..24725cdcd 100755 --- a/src/MEDMEM/test_MEDMEM_poly3D.cxx +++ b/src/MEDMEM/test_MEDMEM_poly3D.cxx @@ -7,7 +7,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_ModulusArray.hxx" #include "MEDMEM_MedMeshDriver.hxx" -#include "LocalTraceCollector.hxx" #include #define MESHNAME "poly3D" @@ -83,7 +82,6 @@ bool SupportTester::areEquivalent(const int *nodes1, const int *nodes2, int nbOf int main (int argc, char ** argv) { - LocalTraceCollector::instance(); if (argc<2) // after 2, ignored ! { cerr << "Usage : " << argv[0] << " poly3D.med typically in ../../share/salome/resources" << endl << endl; diff --git a/src/MEDMEM/test_affect_medarray.cxx b/src/MEDMEM/test_affect_medarray.cxx index 4ae426236..cebf8ff55 100644 --- a/src/MEDMEM/test_affect_medarray.cxx +++ b/src/MEDMEM/test_affect_medarray.cxx @@ -17,10 +17,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -82,10 +78,6 @@ void affiche_medarray(MEDARRAY & myMedArray) int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - /* if ((argc !=3) && (argc != 4)) { cerr << "Usage : " << argv[0] diff --git a/src/MEDMEM/test_copie_connectivity.cxx b/src/MEDMEM/test_copie_connectivity.cxx index 87e07fb72..1b05189b8 100644 --- a/src/MEDMEM/test_copie_connectivity.cxx +++ b/src/MEDMEM/test_copie_connectivity.cxx @@ -17,10 +17,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -129,10 +125,6 @@ int main (int argc, char ** argv) { exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string filename = argv[1] ; string meshname = argv[2] ; diff --git a/src/MEDMEM/test_copie_coordinate.cxx b/src/MEDMEM/test_copie_coordinate.cxx index 72d41e69f..5bf79c979 100644 --- a/src/MEDMEM/test_copie_coordinate.cxx +++ b/src/MEDMEM/test_copie_coordinate.cxx @@ -17,10 +17,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -61,10 +57,6 @@ void affiche_coordinate(COORDINATE & myCoordinate, int _numberofNodes, int _spac int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - /* if ((argc !=3) && (argc != 4)) { cerr << "Usage : " << argv[0] diff --git a/src/MEDMEM/test_copie_family.cxx b/src/MEDMEM/test_copie_family.cxx index e09d36eee..9b7b55965 100644 --- a/src/MEDMEM/test_copie_family.cxx +++ b/src/MEDMEM/test_copie_family.cxx @@ -14,10 +14,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -74,10 +70,6 @@ void affiche_groupe(MESH *myMesh,medEntityMesh Entity) } int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - int read; if (argc <3) { // after 3, ignored ! diff --git a/src/MEDMEM/test_copie_fieldT.cxx b/src/MEDMEM/test_copie_fieldT.cxx index f25e4cd8c..b6f6b8255 100644 --- a/src/MEDMEM/test_copie_fieldT.cxx +++ b/src/MEDMEM/test_copie_fieldT.cxx @@ -17,10 +17,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -64,10 +60,6 @@ void affiche_fieldT(FIELD * myField, const SUPPORT * mySupport) } int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - // int read; !! UNUSED VARIABLE !! if ((argc !=3) && (argc != 4)) { diff --git a/src/MEDMEM/test_copie_field_.cxx b/src/MEDMEM/test_copie_field_.cxx index 1be674414..da73f5657 100644 --- a/src/MEDMEM/test_copie_field_.cxx +++ b/src/MEDMEM/test_copie_field_.cxx @@ -17,10 +17,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace MEDMEM; using namespace MED_EN; @@ -58,10 +54,6 @@ void affiche_field(FIELD_ * myField, const SUPPORT * mySupport) int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - // int read; !! UNUSED VARIABLE !! if ((argc !=3) && (argc != 4)) { diff --git a/src/MEDMEM/test_copie_group.cxx b/src/MEDMEM/test_copie_group.cxx index a2bc356cf..58cac0c5b 100644 --- a/src/MEDMEM/test_copie_group.cxx +++ b/src/MEDMEM/test_copie_group.cxx @@ -14,10 +14,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -69,10 +65,6 @@ void affiche_groupe(const GROUP * myGroup) } int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - int read; if (argc <3) { // after 3, ignored ! diff --git a/src/MEDMEM/test_copie_medarray.cxx b/src/MEDMEM/test_copie_medarray.cxx index 9cfd93c88..e1eac4846 100644 --- a/src/MEDMEM/test_copie_medarray.cxx +++ b/src/MEDMEM/test_copie_medarray.cxx @@ -17,10 +17,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -82,10 +78,6 @@ void affiche_medarray(MEDARRAY & myMedArray) int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - /* if ((argc !=3) && (argc != 4)) { cerr << "Usage : " << argv[0] diff --git a/src/MEDMEM/test_copie_mesh.cxx b/src/MEDMEM/test_copie_mesh.cxx index d24215b5f..9e5098b6c 100644 --- a/src/MEDMEM/test_copie_mesh.cxx +++ b/src/MEDMEM/test_copie_mesh.cxx @@ -14,18 +14,10 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - int read; if (argc <3) { // after 3, ignored ! diff --git a/src/MEDMEM/test_copie_support.cxx b/src/MEDMEM/test_copie_support.cxx index f4ad559bd..43b98d6fa 100644 --- a/src/MEDMEM/test_copie_support.cxx +++ b/src/MEDMEM/test_copie_support.cxx @@ -14,10 +14,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -79,10 +75,6 @@ void affiche_groupe(MESH *myMesh,medEntityMesh Entity) } int main (int argc, char ** argv) { -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - int read; if (argc <3) { // after 3, ignored ! diff --git a/src/MEDMEM/test_gibi_driver.cxx b/src/MEDMEM/test_gibi_driver.cxx index 6d877695c..b2a1ed9df 100644 --- a/src/MEDMEM/test_gibi_driver.cxx +++ b/src/MEDMEM/test_gibi_driver.cxx @@ -1,10 +1,6 @@ #include "MEDMEM_GibiMeshDriver.hxx" #include "MEDMEM_Mesh.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; int main (int argc, char ** argv) @@ -18,10 +14,6 @@ int main (int argc, char ** argv) exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string gibifilename = argv[1]; // Construction des noms de fichier diff --git a/src/MEDMEM/test_grid.cxx b/src/MEDMEM/test_grid.cxx index 3a33db75c..4825b9acb 100644 --- a/src/MEDMEM/test_grid.cxx +++ b/src/MEDMEM/test_grid.cxx @@ -1,9 +1,5 @@ #include "MEDMEM_Grid.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace MEDMEM; using namespace MED_EN; @@ -21,10 +17,6 @@ int main (int argc, char ** argv) { if (argc != 3) usage(argv[0]); -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - const int SpaceDimension=atoi(argv[1]); const int nbMaille=atoi(argv[2]); if(SpaceDimension>3 || SpaceDimension<1 || nbMaille<1) diff --git a/src/MEDMEM/test_operation_fielddouble.cxx b/src/MEDMEM/test_operation_fielddouble.cxx index 312066689..18737e79e 100644 --- a/src/MEDMEM/test_operation_fielddouble.cxx +++ b/src/MEDMEM/test_operation_fielddouble.cxx @@ -16,10 +16,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - double myfunction1(double x) { return 0.25*(x-1.0); @@ -195,10 +191,6 @@ int main (int argc, char ** argv) exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string filename = argv[verbose+1]; string meshname = argv[verbose+2]; string fieldname = argv[verbose+3]; diff --git a/src/MEDMEM/test_operation_fieldint.cxx b/src/MEDMEM/test_operation_fieldint.cxx index 59b1a6335..334f9f811 100644 --- a/src/MEDMEM/test_operation_fieldint.cxx +++ b/src/MEDMEM/test_operation_fieldint.cxx @@ -16,10 +16,6 @@ #include "MEDMEM_Field.hxx" #include "MEDMEM_define.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace MEDMEM; using namespace MED_EN; @@ -106,10 +102,6 @@ int main (int argc, char ** argv) exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string filename = argv[1] ; string meshname = argv[2] ; string fieldname = argv[3]; diff --git a/src/MEDMEM/test_porflow_driver.cxx b/src/MEDMEM/test_porflow_driver.cxx index 6371c6aee..a56d604d7 100644 --- a/src/MEDMEM/test_porflow_driver.cxx +++ b/src/MEDMEM/test_porflow_driver.cxx @@ -1,10 +1,6 @@ #include "MEDMEM_PorflowMeshDriver.hxx" #include "MEDMEM_Mesh.hxx" -#ifdef _DEBUG_ -#include "LocalTraceCollector.hxx" -#endif /* ifdef _DEBUG_*/ - using namespace std; using namespace MEDMEM; using namespace MED_EN; @@ -20,10 +16,6 @@ int main (int argc, char ** argv) exit(-1); } -#ifdef _DEBUG_ - LocalTraceCollector::instance(); -#endif /* ifdef _DEBUG_*/ - string porflowfilename = argv[1]; // Construction des noms de fichier diff --git a/src/MEDMEM_I/MEDMEM_Field_i.cxx b/src/MEDMEM_I/MEDMEM_Field_i.cxx index 556e72bd1..71fb67476 100644 --- a/src/MEDMEM_I/MEDMEM_Field_i.cxx +++ b/src/MEDMEM_I/MEDMEM_Field_i.cxx @@ -545,6 +545,10 @@ void FIELD_i::addInStudy(SALOMEDS::Study_ptr myStudy, delete [] supportEntryPath; delete [] fieldEntryName; + // register the Corba pointer: increase the referrence count + MESSAGE("Registering of the Corba Field pointer"); + Register(); + MESSAGE("FIELD_i::addInStudy"); //END_OF("FIELD_i::addInStudy"); diff --git a/src/MEDMEM_I/MEDMEM_Med_i.cxx b/src/MEDMEM_I/MEDMEM_Med_i.cxx index 896917c0b..3ae43045f 100644 --- a/src/MEDMEM_I/MEDMEM_Med_i.cxx +++ b/src/MEDMEM_I/MEDMEM_Med_i.cxx @@ -1177,6 +1177,10 @@ throw (SALOME::SALOME_Exception,SALOMEDS::StudyBuilder::LockProtection) _medId = newObj->GetID(); myBuilder->CommitCommand(); + // register the Corba pointer: increase the referrence count + MESSAGE("Registering of the Corba Med pointer"); + Register(); + END_OF("Med_i::addInStudy(SALOMEDS::Study_ptr myStudy)"); } @@ -1260,6 +1264,9 @@ void MED_i::addInStudy(SALOMEDS::Study_ptr myStudy, SALOME_MED::MED_ptr myIor, // delete [] medObjName1; + // register the Corba pointer: increase the referrence count + MESSAGE("Registering of the Corba Med pointer"); + Register(); + END_OF("Med_i::addInStudy(myStudy, myIor, medObjName)"); } - diff --git a/src/MEDMEM_I/MEDMEM_Med_i.hxx b/src/MEDMEM_I/MEDMEM_Med_i.hxx index 0dbeb12de..cfc71c664 100644 --- a/src/MEDMEM_I/MEDMEM_Med_i.hxx +++ b/src/MEDMEM_I/MEDMEM_Med_i.hxx @@ -13,6 +13,7 @@ #include +#include "SALOME_GenericObj_i.hh" #include CORBA_SERVER_HEADER(MED) #include CORBA_SERVER_HEADER(SALOMEDS) #include CORBA_SERVER_HEADER(SALOMEDS_Attributes) @@ -22,7 +23,8 @@ namespace MEDMEM { typedef map MAP_IOR_DT_IT_; -class MED_i: public POA_SALOME_MED::MED +class MED_i: public POA_SALOME_MED::MED, + public SALOME::GenericObj_i { private : diff --git a/src/MEDMEM_I/MEDMEM_Mesh_i.cxx b/src/MEDMEM_I/MEDMEM_Mesh_i.cxx index bd1115b23..a25961b33 100644 --- a/src/MEDMEM_I/MEDMEM_Mesh_i.cxx +++ b/src/MEDMEM_I/MEDMEM_Mesh_i.cxx @@ -1354,6 +1354,10 @@ throw (SALOME::SALOME_Exception,SALOMEDS::StudyBuilder::LockProtection) _meshId = newObj->GetID(); myBuilder->CommitCommand(); + // register the Corba pointer: increase the referrence count + MESSAGE("Registering of the Corba Mesh pointer"); + Register(); + END_OF("Mesh_i::addInStudy(SALOMEDS::Study_ptr myStudy)"); } //============================================================================= @@ -1416,6 +1420,10 @@ throw (SALOME::SALOME_Exception,SALOMEDS::StudyBuilder::LockProtection) _meshId = newObj->GetID(); myBuilder->CommitCommand(); + // register the Corba pointer: increase the referrence count + MESSAGE("Registering of the Corba Mesh pointer"); + Register(); + END_OF("Mesh_i::addInStudy(SALOMEDS::Study_ptr myStudy)"); } //============================================================================= diff --git a/src/MEDMEM_I/MEDMEM_Support_i.cxx b/src/MEDMEM_I/MEDMEM_Support_i.cxx index a8e302c29..64ea4a7b6 100644 --- a/src/MEDMEM_I/MEDMEM_Support_i.cxx +++ b/src/MEDMEM_I/MEDMEM_Support_i.cxx @@ -433,7 +433,7 @@ throw (SALOME::SALOME_Exception) SALOME_MED::long_array_var myseq= new SALOME_MED::long_array; try { - MESSAGE ("Nombre d'elements mis de façon stupide a MED_ALL_ELEMENTS"); + MESSAGE ("Nombre d'elements mis de façon stupide a MED_ALL_ELEMENTS"); int nbelements=_support->getNumberOfElements(::MED_ALL_ELEMENTS); myseq->length(nbelements); const int * numbers=_support->getNumberIndex(); @@ -465,7 +465,7 @@ SALOME::SenderInt_ptr SUPPORT_i::getSenderForNumberIndex() SALOME::SenderInt_ptr ret; try { - MESSAGE ("Nombre d'elements mis de façon stupide a MED_ALL_ELEMENTS"); + MESSAGE ("Nombre d'elements mis de façon stupide a MED_ALL_ELEMENTS"); int nbelements=_support->getNumberOfElements(::MED_ALL_ELEMENTS); const int * numbers=_support->getNumberIndex(); ret=SenderFactory::buildSender(*this,numbers,nbelements); @@ -709,6 +709,9 @@ void SUPPORT_i::addInStudy (SALOMEDS::Study_ptr myStudy, SALOME_MED::SUPPORT_ptr delete [] medsupfatherName; delete [] supportEntryPath; + // register the Corba pointer: increase the referrence count + MESSAGE("Registering of the Corba Support pointer"); + Register(); + END_OF(LOC); } - diff --git a/src/MEDMEM_SWIG/testMedMemGeneral.py b/src/MEDMEM_SWIG/testMedMemGeneral.py index bf477ff86..e2c25505b 100755 --- a/src/MEDMEM_SWIG/testMedMemGeneral.py +++ b/src/MEDMEM_SWIG/testMedMemGeneral.py @@ -119,6 +119,18 @@ meshNameFiles.append("Mistrat_Hexa") ##files.append("TimeStamps.med") ##meshNameFiles.append("dom") +files.append("Darcy3_3D_H_10x10x10_2.med") +meshNameFiles.append("Darcy3_3D_H_10x10x10") + +files.append("elle_3D_HPr_10x10x10_2.med") +meshNameFiles.append("elle_3D_HPr_10x10x10") + +files.append("elle_3D_HPr_2x2x2_2.med") +meshNameFiles.append("elle_3D_HPr_2x2x2") + +files.append("elle_3D_HPr_4x4x4_2.med") +meshNameFiles.append("elle_3D_HPr_4x4x4") + # # Castem or Gibi file list # @@ -856,7 +868,7 @@ for i in range(nbOfFiles): print " Norme 2 : ", fieldint.norm2() print " Norme Max : ", fieldint.normMax() - if fielddouble.getSupport().getEntity()!=MED_NODE: + if fieldint.getSupport().getEntity()!=MED_NODE: fieldint_vol=fieldint.getSupport().getMesh().getVolume(fieldint.getSupport()) print " Norme L1 : ", fieldint.normL1() print " Norme L2 : ", fieldint.normL2() @@ -871,7 +883,7 @@ for i in range(nbOfFiles): print " Name:",compName print " Description:",compDesc print " Unit:",compUnit - if fielddouble.getSupport().getEntity()!=MED_NODE: + if fieldint.getSupport().getEntity()!=MED_NODE: print " Norme L1 : ", fieldint.normL1(kp1) print " Norme L2 : ", fieldint.normL2(kp1) print " Norme L2(vol) : ", fieldint.normL2(kp1,fieldint_vol) diff --git a/src/MedClient/src/FIELDClient.cxx b/src/MedClient/src/FIELDClient.cxx index a082b0741..617a22d11 100644 --- a/src/MedClient/src/FIELDClient.cxx +++ b/src/MedClient/src/FIELDClient.cxx @@ -2,7 +2,11 @@ template FIELDClient::FIELDClient(typename MapCppFieldServ::FieldPtrType ptrCorba,MEDMEM::SUPPORT * S):_fieldPtr(MapCppFieldServ::FieldGlobalType::_duplicate(ptrCorba)),_refCounter(1) { if (!S) - MEDMEM::FIELD::_support=new MEDMEM::SUPPORTClient(_fieldPtr->getSupport()); + { + SCRUTE(_fieldPtr); + SCRUTE(_fieldPtr->getSupport()); + MEDMEM::FIELD::_support=new MEDMEM::SUPPORTClient(_fieldPtr->getSupport()); + } else MEDMEM::FIELD::setSupport(S); diff --git a/src/MedClient/src/Makefile.in b/src/MedClient/src/Makefile.in index 0c567262d..4bf19794f 100644 --- a/src/MedClient/src/Makefile.in +++ b/src/MedClient/src/Makefile.in @@ -61,7 +61,8 @@ else SWIG_DEF = libMEDClient.i endif -EXPORT_PYSCRIPTS = libMEDClient.py +EXPORT_PYSCRIPTS = libMEDClient.py \ + medClient_test.py # Libraries targets diff --git a/src/MedClient/src/libMEDClient.i b/src/MedClient/src/libMEDClient.i index 8be804bcf..da8a5f756 100644 --- a/src/MedClient/src/libMEDClient.i +++ b/src/MedClient/src/libMEDClient.i @@ -16,6 +16,11 @@ %include "libMedCorba_Swig.i" %include "libMEDMEM_Swig.i" +%typecheck(SWIG_TYPECHECK_POINTER) SALOME_MED::FIELDDOUBLE_ptr, SALOME_MED::FIELDINT_ptr +{ + $1 = ($input != 0); +} + class MESHClient : public MESH { public: diff --git a/src/MedClient/src/medClient_test.py b/src/MedClient/src/medClient_test.py new file mode 100644 index 000000000..719fed5ee --- /dev/null +++ b/src/MedClient/src/medClient_test.py @@ -0,0 +1,295 @@ +#################################################################################################### +# +# Test the MedClient classes: mounting in Memory a .med file and using this file as a client of +# the MED component we try +# +#################################################################################################### +from libMEDClient import * + +import string + +import salome + +import SALOME_MED + +from libSALOME_Swig import * +sg = SALOMEGUI_Swig() + +def print_ord(i): + if i == 0: + return 'first' + elif i == 1: + return 'second' + elif i == 2: + return 'third' + else: + return `(i+1)`+'th' + +def changeBlankToUnderScore(stringWithBlank): + blank = ' ' + underscore = '_' + decompString = string.split(stringWithBlank,blank) + length = len(decompString) + stringWithUnderScore = decompString[0] + for i in range(1,length): + stringWithUnderScore += underscore + stringWithUnderScore += decompString[i] + return stringWithUnderScore + +def getMedObjectFromStudy(file): + objNameInStudy = "MED_OBJECT_FROM_FILE_"+file + compNameInStudy= "MED" + listOfSO = salome.myStudy.FindObjectByName(objNameInStudy,compNameInStudy) + listLength = len(listOfSO) + if (listLength == 0) : + print objNameInStudy," cannot be found in the Study under the component ",compNameInStudy + return None + elif (listLength > 1) : + print "there are more than one instance of ",objNameInStudy," in the Study under the component ",compNameInStudy + return None + mySO = listOfSO[0] + if (mySO == None) : + print objNameInStudy," cannot be found in the Study" + return mySO + else: + anAttr = mySO.FindAttribute("AttributeIOR")[1] + obj = salome.orb.string_to_object(anAttr.Value()) + myObj = obj._narrow(SALOME_MED.MED) + if (myObj == None) : + print objNameInStudy," has been found in the Study but with the wrong type" + return myObj + +def getMeshObjectFromStudy(meshName): + objNameInStudy = "/Med/MEDMESH/"+meshName + mySO = salome.myStudy.FindObjectByPath(objNameInStudy) + if (mySO == None) : + print objNameInStudy," cannot be found in the Study" + return mySO + else: + anAttr = mySO.FindAttribute("AttributeIOR")[1] + obj = salome.orb.string_to_object(anAttr.Value()) + myObj = obj._narrow(SALOME_MED.MESH) + if (myObj == None) : + print objNameInStudy," has been found in the Study but with the wrong type" + return myObj + +def getSupportObjectFromStudy(meshName,supportName): + meshNameStudy = changeBlankToUnderScore(meshName) + objNameInStudy = "/Med/MEDMESH/MEDSUPPORTS_OF_"+meshNameStudy+"/"+supportName + mySO = salome.myStudy.FindObjectByPath(objNameInStudy) + if (mySO == None) : + print objNameInStudy," cannot be found in the Study" + return mySO + else: + anAttr = mySO.FindAttribute("AttributeIOR")[1] + obj = salome.orb.string_to_object(anAttr.Value()) + myObj = obj._narrow(SALOME_MED.SUPPORT) + if (myObj == None) : + print objNameInStudy," has been found in the Study but with the wrong type" + return myObj + +def getFieldObjectFromStudy(dt,it,fieldName,supportName,meshName): + type = -1 + meshNameStudy = changeBlankToUnderScore(meshName) + objNameInStudy = "/Med/MEDFIELD/"+fieldName+"/("+str(dt)+","+str(it)+")_ON_"+supportName+"_OF_"+meshNameStudy + mySO = salome.myStudy.FindObjectByPath(objNameInStudy) + if (mySO == None) : + print objNameInStudy," cannot be found in the Study" + return -1,-1 + else: + anAttr = mySO.FindAttribute("AttributeIOR")[1] + obj = salome.orb.string_to_object(anAttr.Value()) + myObj = obj._narrow(SALOME_MED.FIELDINT) + type = 0 + if (myObj == None): + myObj = obj._narrow(SALOME_MED.FIELDDOUBLE) + type = 1 + if (myObj == None) : + print objNameInStudy," has been found in the Study but with the wrong type" + return myObj,type + +fileName = "cube_hexa8_quad4.med" + +#fileName = "carre_en_quad4_seg2.med" + +medComp=salome.lcc.FindOrLoadComponent("FactoryServer", "MED") + +import os + +filePath=os.environ["MED_ROOT_DIR"] +filePath=filePath+"/share/salome/resources/" + +filePathName = filePath + fileName + +print "Reading the .med file ",filePathName," and pushing corba objects in the SALOME study" +medComp.readStructFileWithFieldType(filePathName,salome.myStudyName) +sg.updateObjBrowser(1) + +print "getting the MED object from the study" +medObj = getMedObjectFromStudy(fileName) + +nbOfMeshes = medObj.getNumberOfMeshes() +meshNames = medObj.getMeshNames() + +print "in this med file there is(are) ",nbOfMeshes," mesh(es):" +for i in range(nbOfMeshes): + meshName = meshNames[i] + print " - the ",print_ord(i)," mesh is named ",meshName + print " getting the distant MESH object using the API of the corba object MED" + meshObj = medObj.getMeshByName(meshName) + + + + print " getting mesh information using the API of the corba object MESH but corba objects are obtained from the Study" + for entity in [SALOME_MED.MED_NODE,SALOME_MED.MED_CELL, + SALOME_MED.MED_FACE,SALOME_MED.MED_EDGE]: + nbFam = meshObj.getNumberOfFamilies(entity) + nbGrp = meshObj.getNumberOfGroups(entity) + if (entity == SALOME_MED.MED_NODE): + print " this mesh has ",nbFam," Node Family(ies) and ",nbGrp," Node Group(s)" + elif (entity == SALOME_MED.MED_CELL): + print " ",nbFam," Cell Family(ies) and ",nbGrp," Cell Group(s)" + elif (entity == SALOME_MED.MED_FACE): + print " ",nbFam," Face Family(ies) and ",nbGrp," Face Group(s)" + elif (entity == SALOME_MED.MED_EDGE): + print " ",nbFam," Edge Family(ies) and ",nbGrp," Cell Group(s)" + + if nbFam > 0: + for j in range(nbFam): + familyName = (meshObj.getFamily(entity,j+1)).getName() + familyObj = getSupportObjectFromStudy(meshName,familyName) + print familyObj + + if nbGrp > 0: + for j in range(nbGrp): + groupName = (meshObj.getGroup(entity,j+1)).getName() + groupObj = getSupportObjectFromStudy(meshName,groupName) + print groupObj + + print "let's get other SUPPORT object from the Study" + for entity in [SALOME_MED.MED_NODE,SALOME_MED.MED_CELL, + SALOME_MED.MED_FACE,SALOME_MED.MED_EDGE]: + + if entity == SALOME_MED.MED_NODE : + entitySupport = "MED_NOEUD" + elif entity == SALOME_MED.MED_CELL : + entitySupport = "MED_MAILLE" + elif entity == SALOME_MED.MED_FACE : + entitySuppor = "MED_FACE" + elif entity == SALOME_MED.MED_EDGE : + entitySupport = "MED_ARETE" + + supportName = "SupportOnAll_"+entitySupport + supportObj = getSupportObjectFromStudy(meshName,supportName) + + + + + + meshLocalCopy = MESHClient(meshObj) + print " getting information from the local copy of the distant mesh" + name = meshLocalCopy.getName() + spaceDimension = meshLocalCopy.getSpaceDimension() + meshDimension = meshLocalCopy.getMeshDimension() + numberOfNodes = meshLocalCopy.getNumberOfNodes() + print " Name = ", name, " space Dim = ", spaceDimension, " mesh Dim = ", meshDimension, " Nb of Nodes = ", numberOfNodes + coordSyst = meshLocalCopy.getCoordinatesSystem() + print " The coordinates system is",coordSyst + print " The Coordinates :" + coordNames = [] + coordUnits = [] + for isd in range(spaceDimension): + coordNames.append(meshLocalCopy.getCoordinateName(isd)) + coordUnits.append(meshLocalCopy.getCoordinateUnit(isd)) + + print " names:", coordNames + print " units", coordUnits + print " values:" + coordinates = meshLocalCopy.getCoordinates(MED_FULL_INTERLACE) + for k in range(numberOfNodes): + kp1 = k+1 + print " ---- ", coordinates[k*spaceDimension:(kp1*spaceDimension)] + print "" + print " The Cell Nodal Connectivity of the Cells:" + nbTypesCell = meshLocalCopy.getNumberOfTypes(MED_CELL) + print "" + if (nbTypesCell>0): + print " The Mesh has",nbTypesCell,"Type(s) of Cell" + types = meshLocalCopy.getTypes(MED_CELL) + for k in range(nbTypesCell): + type = types[k] + nbElemType = meshLocalCopy.getNumberOfElements(MED_CELL,type) + print " For the type:",type,"there is(are)",nbElemType,"elemnt(s)" + connectivity = meshLocalCopy.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,type) + nbNodesPerCell = type%100 + for j in range(nbElemType): + print " Element",(j+1)," ",connectivity[j*nbNodesPerCell:(j+1)*nbNodesPerCell] + + +nbOfFields = medObj.getNumberOfFields() +print "in the considered .med file there is(are) ",nbOfFields," field(s):" +fieldNames = medObj.getFieldNames() +for i in range(nbOfFields): + fieldName = fieldNames[i] + nbOfIt = medObj.getFieldNumberOfIteration(fieldName) + print " - the ",print_ord(i)," field is name ",fieldName," and has ",nbOfIt," iteration(s)" + for j in range(nbOfIt): + dtitfield = medObj.getFieldIteration(fieldName,j) + dt = dtitfield[0] + it = dtitfield[1] + print " * Iteration:",dt,"Order number:",it + meshName = meshNames[0] + for entity in [SALOME_MED.MED_NODE,SALOME_MED.MED_CELL, + SALOME_MED.MED_FACE,SALOME_MED.MED_EDGE]: + if entity == SALOME_MED.MED_NODE : + entitySupport = "MED_NOEUD" + elif entity == SALOME_MED.MED_CELL : + entitySupport = "MED_MAILLE" + elif entity == SALOME_MED.MED_FACE : + entitySuppor = "MED_FACE" + elif entity == SALOME_MED.MED_EDGE : + entitySupport = "MED_ARETE" + supportName = "SupportOnAll_"+entitySupport + print " getting a corba object Field from the study iteration ",dt," order number ",it," on the support ",supportName," from the mesh ",meshName + fieldObj,type = getFieldObjectFromStudy(dt,it,fieldName,supportName,meshName) + print fieldObj + + if ((fieldObj != None) and (fieldObj != -1)): + if(type == 1): + fieldTyped = FIELDDOUBLEClient(fieldObj) + elif (type == 0): + fieldTyped = FIELDINTClient(fieldObj) + + type = fieldTyped.getValueType() + print " * Iteration:",dt,"Order number:",it,"Type:",type + name = fieldTyped.getName() + desc = fieldTyped.getDescription() + nbOfComp = fieldTyped.getNumberOfComponents() + print " Field",name," : ",desc + print " Number Of Components:",nbOfComp + iterationNb = fieldTyped.getIterationNumber() + orderNb = fieldTyped.getOrderNumber() + time = fieldTyped.getTime() + print " Iteration Number",iterationNb + print " Order Number",orderNb + print " Time",time + support = fieldTyped.getSupport() + nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS) + print " Values:",nbOf + for k in range(nbOf): + valueI = fieldTyped.getValueI(MED_FULL_INTERLACE,k+1) + print " *",valueI[:nbOfComp] + + + + + + + + + + + + +print "" +print "END of the Pyhton script ..... Ctrl D to exit" -- 2.39.2