From 3302782c77867215774d0beed188c2e0bc8a579f Mon Sep 17 00:00:00 2001 From: vsr Date: Wed, 15 Jan 2014 10:08:00 +0000 Subject: [PATCH] Merge from BR_imps_2013 14/01/2014 --- .../gui/NETGENPLUGIN/images/netgen2d3d.png | Bin 32806 -> 26499 bytes .../NETGENPLUGIN/images/netgen2d3d_only.png | Bin 28481 -> 29046 bytes .../NETGENPLUGIN/input/netgen_2d_3d_hypo.doc | 58 ++++++----- idl/NETGENPlugin_Algorithm.idl | 6 ++ resources/NETGENPlugin.xml | 2 + src/GUI/NETGENPluginGUI_HypothesisCreator.cxx | 92 ++++++++++++++---- src/GUI/NETGENPluginGUI_HypothesisCreator.h | 5 +- src/GUI/NETGENPlugin_msg_en.ts | 8 ++ src/GUI/NETGENPlugin_msg_fr.ts | 8 ++ src/GUI/NETGENPlugin_msg_ja.ts | 8 ++ src/NETGEN/netgen49ForSalome.patch | 35 +++++++ src/NETGENPlugin/NETGENPluginBuilder.py | 16 +++ src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx | 80 +++++++++++++-- src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx | 10 ++ .../NETGENPlugin_Hypothesis_i.cxx | 40 ++++++++ .../NETGENPlugin_Hypothesis_i.hxx | 10 +- src/NETGENPlugin/NETGENPlugin_Mesher.cxx | 41 ++++---- .../NETGENPlugin_NETGEN_2D_ONLY.cxx | 3 +- 18 files changed, 347 insertions(+), 75 deletions(-) diff --git a/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png b/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png index 97b95486e44943aa4a47e11848bdebfd6fe95c7e..dbf97953f7e9b4726feae01078fa7d685564e411 100644 GIT binary patch literal 26499 zcmb5V1ymeSv?baRpmB!)!5V@~f(3U?kc6PY-Q7L71rHG1-Q6J&g1fuB1b6#4@BNuI z>%E!(*A$RIbys!Ot$WVdXYYN3Kgmj8Y;Nm$t1O4By}|aOE)18G=51 zY4^MgXh|iOgHyn1N~amizQTigH+vP=b+J7s|8eZjOloy@a4^71D`05!{)~dm4<1D= z2wYI&P*#&0;)?)Ag+twusRRgQgq)VPkBq`^Z-0M|8yf=QrXzzvAVF|JP)Id-XD*H< z#u3fQ{3bd9`NS_>_8jqaxOz9fm*myfQakYzR);0EXfhIRwAo^!+^dq5TU%&;BllwM zX>INzPzTo0Mbh0s3_@O86MDA5v(s5F(OtT-bSlG#ZDzin-dpRtTN2bp-=G>=x}L$G z9L;T6HF3FwRpA%3Z`MafiL919Fj=uRUtVYk$G%_BG5#_qEed`4TsUaZ@a*sUEF28> zb9$JWJrZSOW0G*ME#l7_$?F3i?cD67^`HtO!o5zf2MXA5wwIKkWUwSGSUxGFvg0pt zYomQwad9#>wQNkUAGt`tjtMpi|9x(LF|8qs`|7ll9|kN&ib2T(S!rn^KC{H6HHfzv zo3{B}FkVc6^y0;H?`me-H^HLnn{Cu>>3(+cwQ*mM#nHuOO75Z$c@Iwmzhe{{ow$^k z{D9{WHV5C7)W371gIiGT2P1wpgK61BPHa_=g0<(MSh`EmY2d@lIHOb+fyxe zRnmCyf(Z-yeUW$^%Q35GMsvM;L>AuJhzbjUpPLz<`S}8xq0yAp{m3Et@ylU*Rwv_p z_{0I(wAyHhKtVCWW!Fic4WGwO7By%<&y@gm-4go&7#NwVxed5+5A$;kzUx z66P9hJl5>~il1O$_uZ+{FYcpNfZ$F1uB9T)}UX*8UQPRd`IDx)AjMHS@}i`x^6QrYa2 zcpUC`#LI4~@1>{5Z8X$@y}rkT2hM+4H~QlIyxNoCK%5MNt4VuK=IQuRaA?|eApcoR z7y3K4kpe4Y$(!WeR!&LhO%*=Wi(R0}XlJp8iVL|L2jm%`|6->%4&dn-VEUHib5fgKEuDF#n zY=D$)OV60|ei=okx+vB22Y!z7VVFUG^Zu-@K9Y=>7-lG2IZ>(R)3nEK4 zx^D`CY{HK48&==iG#HkY(a>Tliw&pn&iO7YoWDP!4Yk`;0;N0zMu}&XFV&SCq>fv|`#+9eLXfQe6N+4T3@ z+W@m^OB`HW6ap5?-9bjyB64B6?!AN~jurwBlXmo<(4aT42lydOh4bFuB2OM=Hy;Ea zbjwQA-ZNJm8nn7~hr|{+H9IGmFL%S7$K|=W61Ib-ilz=WBH=JavjaYNH8Int(TZ54 z)5o4?E6+PlDvwsc%usbF6e{RiD~kjwibDDkCzzK%$;gQ51fwhy&Ix?UlU+rtnB8Vx z`YGUa-x-X}VUA?C$Ad|3zc*omBo-hF(-TuFJr3n}Yag^|FHMgOUgcX z(Q&h0+hRV}%FF(D%BfEj-|v%fN7Y_oVRrVg2l4A1r$l||OH}x3 zZDFB^nk6j>f@X04<2b*_nh<5Q7crOM$Ewiu=QnU-?;l-eM!w0&-BZG16(@yTonE`$ z3h+AP0)fRv!`Msp`t#KhI5RU zmmXSep1v4+v*T3ctF(9w40LYSoI1zpt>GSSXoMTzFt{D|sw?S;y<+*j9*eV#R5itf zp(duLaj_ew`(I5>3(5VWV`6G97z#}{F+j!>l8qbrWl0w0nY>?MmeA8fwa9 zhV2!+x1@PBig12?wzPzxAh<8}K7AgrP?) znB)qdRcR^J!du+il0^MJ5f|w^bS0bWD1!X&X^*F+k z*OyT5sg~}aUs3K)LNJ1qOZf$%F0M=mCKiv69%F&%qzX+ts}c_TQ(@v?-m*-HK{vOz zr>lO7K7ZGi{)&8}#m$L;;EkRLpC3lj;Lu>NiT1nTmoSb|88VD|to)*)n0Vzkk5?Yr zRYXBAbu~TT2^$Z+eov=}=Vre@^)Q;%eZjCbI3IC$@wAwobTgK-MA!F$|Kp>wX7u1J zG0dALA7y)eH47g~uC;8S44!`aDWFH!_HFHC7LSql~%aCcj88R#^ebYhrTpgs-+aQ(khg z`AQ{>7C_zf{=ZFy) zLD@6ZWoKu|2K2;v<~fOt!8nLZ3OB!Pjz zCukUVxc_nMnpsegk@4&yzI{Ajp&?26s>S&xBR_wlI_a5ker6^w^}cUn0H%=>A+0Zl zu<=p5-K7V^?Zv*^`rhhxFljGNrG{0J+55-En!EhSaA>cpWR~!)EM?Tmu;yuZ8DDXu z#VpqO+GJiqOqaEi=jlKgE`OD;uWta#U0rRQh1K+LhiH5bEKGSW7)H`G{wirg+@{UK z{w;iMVq$dqb8rW8sm+@NUobF*6(>>1XKfE~Ik7T6^;p_zxXn8`?SEg0W~KR@AlIRq8nxgG4b zGi#s;);FAyXRPP(6_PK zP35~&ez?giOeFCa7J(kl;vZIMcZ`sOBwqBWUSy{IVE0_0#&d5#;E(_8cBh?K z?Jcv`SZ3yBuKV?LmX-k!>E8g;2kL$oB7-Ih2d77?Q_NC+iA*@wM4 zW?Hi(!tO23)91c!CDk1bi;*%h_TepI3UMKuR9Ccm$uV$l90|k^S65WT#l|iYG54n|^ zmRBvqE!g(7GW9QZW5SLyt7(>F+TA_Z`b82B`c<%_2g8rp4W}bMEe#C{;YTRB=&QHp zs}U{?o{>T3b}4}Z+(pl8YRR)?5HY%fEQ^g2TVr_0H z);KWY;7t14i%Jd&6XGs8@sf%=n7HnR5{mnOFV6gm|6rAH#HkgT=~L~~%*_5B>A5!< zeV)1DE`#po;Lb<-vHK#{CW;4MJUC>!zKZxK4_J}%;MDjy11;@x!@jw!B{^Q+IC~sJ zVsU0>WKt9#qZHo>PPIAknoYkN6M$o`fR#g>DOw%z`VTMP^s8LZh@@Z(6c+~`#n zI5EDG2h>-!7;ReEzg$S%LL^~Mqih@prro#_P}NI9 zTI#Yn@q%Y#qJdA(NPWPGqWGLf~EC8Bx> z5$yK4U1lcHk$nk)R6sDFK?E5DMIjIjWDHCQq%)HXhDC@)NQgDJRsh;bOq0qWzW_g1 zrqdLjc6@tq2xUmnaX61YCf%S8l=%fjkU9es6A=}0vDM@5@^F5a+x~!7ILI4=0)JIb zL`0Zx(LFE1rvedTFP>OFqGK$Xe+1L=`y|E0;wYLL-kS4mt58F)$)@;PpkXIs==i|zk58QNpPu1T}@4k=Q_6$ zB@eaQHF*bekesyiz~B5uL_|bTYD5CiPOh$$6&1yvE)u1woIW3oO=lcM=X@+KE~ZQb zSHzHC`C-Q5C~P=bTWh^&f4LH~vGI{nxM!@QC?_jCM{k-C{>3}}k7lpJ=%4|Wm8Y@& z%ALclaI;NLWle#1O;<;M7g|K9qFUlySDPyBD%-L>8=O}&V`C@%POz7nUB&}ko(ndK zWd|$zjr#)c^?s4aLrwbICKIXx5*5O92a+=}MG zIKb%c?p|0_H0q`ItPzd4ETLDw^i<8jLRhH#avn-p+liv9Ym9cB91!iK-X{_l?J_`5F&z${68UIyOvNl(Vb> zgVWwmS;o2l?9akNbK93Ekw7$?KUYV~r1!6^XGh>m4NHHie1?kJs}>%FL}zUH2SRtExW7 zzn`Vs!K`IpHj%z$4WOYFi>u{U=ECti(^|ly_$y2&yd$iRv;2j~+$SqNUHd$L)ahtZ zQC_|yj~5>8mGjOqIW{)7ABNJ3Y6oj4EA`sU@X5@H-eRMJ2-M^Dyw@etE-SFj_2I*p zFWBUr+HZ>)O61#ekzC1_THM|bTP*c{p>A?K?3=fjkqJvEP!%^6kI~YGM9Lp?Vd^Lw znYLyw$csxcRa%P%8By9=Jj^dYZ*znDqakUqk(tcq_lY9lJs}|>tKmQpG(v@_91q>l zz<>+gRvcO}dk_!+FOBR|H8maziWfw|*?D>IUF(C?8{FSmYpg_3NSK?Ozl?2g z-7NI=6*=2Ofb5FTB=@i^8!Y2yyv#_Gfc^C8)Q~KR5`tzdB$f%p;)i_y{=KZs>eD9- zk_2|MsngB=FY@wxdwbE*(F==<74?aUUq5_6(j1tabkJC7Y+h&v-wxjUgna5amwy+V zbbbd^84aH*V&H|w#>Lgzbq_5zIo&awVYYmQ?C`RARuS-1l9P3A5&HI!B@imehln4Xq6n}!dUZF*VR(|(WE{@$MW z_gAZRg;96>5Qs4xAtvUK8QZHldkSI-T=BW97HG!qcx!~v*HwGNrF)mNt>GAZdXVYE zC9#WwM95@Q8_Ba^YCf-;4Iq#mKQNWbokWDzBG0d6eY}S zZEelY76s3;ygbrPS%mLs?IOjyv5{L^A|xbqjvGHc>=`CzFt?J1i;D|>4U_tELcndn z5G@Rv(b(8{{@vcg;~_d))=3z_8it9vyWA!q4ApWeCLTkv;-iXDRaGp=EmTsM|Bf(k zP5G}9j2p?#XPYEPM`Lj$mE`3qD=AIYCO|AC`P1o<=zXzL=uJ&g4FH7cmoDQn1%d7YGt~PqF zHZha*eY*EcuC7PdSDAi?g?$HEUN)7JHrwetA$&})g3_MkC1$jyXk~eMd3w6wXQ9uT zC6L27JUmRQ7?+3J3q)*c>14K(xf-)%Wu~?Db*qK?6UI9ttOEmTzx(EUzimWMPtVlU z)CQLZximfiZ2wHVTSX(1l+`UozxmkQ+`{j9>wGfy2R}FrB^^{D)eD9VJPq-l5aYC`}^r> z89zrJeXm=3#>fDBZ?#liTQN2IZ`;*bT%RgYyDmi~;xINb)0xL-)>N_b~@NJt1am27@#sb+;PTy5C=ek!LYjE1J?*Dpa;RW7o(E1>hb_Ez($+u7gm z@9lMQc5e2#i?iCK#G++>UshiJNm=>*#&+z&wY;L@AH%8woI;v}GuxfxjES;>z=+rU z?i=G);(Y-*Wi*TcO{`gnFWHh{|fCYn7L zZ@KKY7Mh%_hL`w`mRi;qE;e?t4=P*-_eS-^Df|G55%crsD*{}X)ipRJKC|Ukk1!>e z-@(BFh&L{-hTLYXZ)_tSFk6n>12DZR4#5;l3*!$x8k?N_QwQfVi})-l7zAwc{Iw(k zYy0>#_?p}|8E56W>&`Bqp>hsHBXzyMuIPUo|M+mX+~%eA!<~+f9!LeaxJj%5Z4PHs zl?MH6?Ekj-8>S|geJZ>*$HT-UTP+Pf4KXn>D^e>4=ljkRevjJ`V>UQAI4ATg>XVKk z8A(cc9U&bXsfya#%RTlY7i2J)mt7Y`MfXbNeoPvz)$V_6xl>B>^Xu(*$9~?ugDJs+ z1_lNa6A8IgN1}$rK5C}W($HLAEqfg;Hq|+gt{v6H^n&w)y1Qe(!JfX&Nf#b;)=--iA$Xjt{{r~#wdqUkcxg6!gEX;mrJk00ro%S^5;@o;cf zq6^E)v?8A#;!5uC-Itgs-@Fm~8*+brq9-N>CoCD+P17}Hq4vaoedYZE;m403ag1tP zI~zR>b>-#O^R*V_)D~s=&fZ3gPFO(NZZpt)YWBp^>=Y{a*}|6K;|^vv=EUbzAiN|up8ht z6$U)vAVEqfe|S>mDGMqp&=VX+(S@KU#>VbW&sHjg2wn?ZD}M>)@B09meOo-PXIplAHE^Iy{=)$KNq^vk{YLmz0Dl z65*3xfl60@T`x|L>CddyT8^0{p2dD4nC?3k4Z|WP=5y)OAA(M^6TSuynmgq$n0RYz zx<}e_8K26X0Z0W8PAN_aB$wB`&gDBY!wyM2y4TRU2Fu(q+-P>XPI{6JcH#s54s zf`FBZl9G~#r>U}%g_rj=^3+>X@Up&vft{V*yQ9xSlUPu{8nfx#oE(sMuz`GZlK0Zb z*H=4K|0E>6H9yWMUu2S6M zcB$Fq2&Umcn!r;8fftz{3Fy8Fu@Ylrb4pA3?WP7w+SRbNsB|ZFiINu@9n6kWTV`ix zHJThRRJZi3tRmt!WU?|c$ho<>Z>8-W9c#Tayz{`7R#l~cNEC9a`a6SrvPFzmZFkJB zG%qds{Ka#8M$JxrmUu=rLld0_%ZJ9e!iJKa%&9l5^w@2mkjVU`n-b!bf9P!ofBWGb zDw*`)D1O^~0BR))DhewLEB9fUiL=y4Io4fMd3AYpP-*2G6e%pFZOnCNptCuuJj21BtfU5t{9wEBV zV9z1nRK5Yxk__*EN|OISyMI|3WhY$MU)Rb$Gmc<0IXM)6h8bl$!9IxyBIZ<;zNX~M zi#hnR9L;U!WUF>0A<^vD>Ow)HuTfRtRPBQ@VN$es|eL^HS}r}#wV%F{SgZbi?ZeVA%gajDsLrtqTonLN~{D? zs;H9UV%N(9mzz@qmW1yzp*wqfy0TxB`SV_ZG`)_hYvVU^cXd=}J{uhw`AeV0?R=-g zdbIKp;vp8q2p8pR*4|L{{%Q$!0S<6Rn=u@B*Sc~_%o<5MQ>tyH5%=0tgTfl z^@C$$ajh(!_X`UPFE20mr^~ug)znB^iGT1@o^DI3s^0W%(ziuCXkf*@ka^CU4vTKx zhYCxIiEVBTCaqI{@7`7_s6HCnfb)k_4_wDYbwC|z>FwcTBF+*CM%T-2lOG@Qap`jrZ6cjBU&1D)*Q#(bJT+Tc+9+LWwjAU=goXy^r z*$JDP?g1Ff$jH!?L(U|zF!7&}!D zjz<53sIzF=k_U+0Tj#rps=bOV3}M1OLhvmda*~TliZ5Wk^VWm!VX3x7E{&UUL&jt& z>yLmQ7AB^h-Pxn;13EExCvF;;K?ht_Alp#!%8g8o0=j{f-R1mNkgKjg>n2m7j zXMasQerZbt311?cNi@wHuJzj5T3-b8EsL)hfK708baY3SOJLdD9nTZ~T9%&=MMmDA zEW!^HPXaw;rdVjJ=fmx0KRzE{3&3Y9{_CKC=;@i6n)>0>GcerW-<$#5wYacwdUht@ zal3JJ)MhwHSo{lcN8oKo3k@;J$qOSR7&thhS)-EMX{N#}=$#sz3wcH}dP*3v^k9o&DwgLaW6!Co@x+4CAd6@)C~(rv~$}?kjzk2GC52iwB$u zu3l)fZ)|Q}9L~oVnY1>$-`IBeAp!);#>%=b^Q~Q*hL-ju-0@^;a$+JmIl1Ha?}`Xi zSr?ZE5cG!0vSb)zV`C_&s4i;TbV>>e*}1t&YHIWp6uwsU^z_pc6J&l23=B*fjsHX) zKa8pN>T0&7WPhA>>EFM8Y5xhqEiEkt9J!C?Ya44@TdYm~C~MCziaR4S^5FB}(`ZTM z;H#?ANmOD0$Pi%OHj{CxQqDUgzlrqR+_P(nOc%4`F_FQkz zO{9gKdxwU)sMKBB2^s0=8eK2wa><6%1W38<^8xbn7W|~7G}L=@vK?tRrzrUjfKES* zOQYAzU0sCGjPrAQaKkJK(y*xNnwodJt74MxhS{Pm)Bg z5KAEAG1a^58!9Q`k(^jx{bX~IzmK^dC>}tUA{DI*9-o{H3ytU>=o`3=i%p41xnL|h z(Su}MUtg=Yx^scK>Jo_ln)7%p=OdQs?LY#n*ZoPiKQjL7*RNm328V|~ZpLegn%nG6 z6jT`w-rnD^hW-Kc;@bU+O?Z+Y4tBV=_cKQY4-dYi!7lU-!XJoqU5b@XM@sF;Dh=YQCdb0T1OO1!;q-JeUU?0TlKgxcYU=pd*c#m%q|u_p|IWg^iL}}lR#M`4 z`_}qmZ*q{w{cx^ENJt12n&JNbqSDexKf*1=`co)6?DEU1U54jH*}6BqStf+rx4nKIpO}0PZA(+kp;GSy>tE zFs*)tKb{MykJT5Bxl`np3~}Zm08)OuOAHV|MMRygwuv!$KOT%t#m&vJN-b!&xE212 zzr&(53GDq7iWgx=Jbl{W$e$~h_IPtw`$Pf=R>dr3)25FelO@k*g$5%4J>pp)<# zkC43!J*fmWYT4__1HgE2YyX~DwaIw-HFz6{s$*rrPw$wz!ijl2@0|?{HUVS=SWW$$ zZ7w7(O$BZay&1bmfiCt#j&9ZYF;Vl7RA7P%93(vk^4~zpJ&AhX$=AKfDO!j;T2K(% z`p(8oCGzSs2(vZ!i~lpA`87#k0{{9L!t{0O4()}gXy4~)h3+_2I0Rl37%PR{z|VIw ze0{UCs#x*&|4<7I=BZV5V}!sv5*3aX`e%(OK0dyzu+Vf+T2M5bcnuw!7c1EBDRfs- zjT(WCv=x?FT+9plX&0B9%F0Tmeo@$#;(V>u-Fk$;aSurLM)&Wsa_);jl6`MEbA7z} zdu&V|#LTc*DiaeEl%ewFH@6|}^XePRiPJY1$az8Kvj+gW%B66NkzwS@q}A&FK{B`c zvMyNEP7ebSm%!o>0!ZJduU=p%K`T4eD+;5CTJH`AN8mcSg@t@KZSRX`(l9mAaoPS$ z4BiB$zNnbE4(vHnM?C40q9_1RkJl#@3DO+z-er9D`ubyMra}*tlRC>qz>%qx|H>}v zJ>MNq!bJFrs`MZS%giabxSLtt)ZYZqA8c0#v*S4*kj`yEf*UfA93%nkt>t5v9Uop zx_^ntk0?wP)2q+oFWkOhRIkLrhgOHEBoJ^JJ7Bl1K=^)HiWtBeN0q~!G$gaY-X!mfKXYgtU^@&3l^;bMA7 zgC{}S(AxSKK)MQCCwv#CM!PFCZ$TCOdP~3@2-DS7R3IWDC2n&J_sj%2G4qpfIh;-a zLKY+NBo@qxC&DKSwK~92n$JGg8kHj|s7nAC>n|(>{Y-;1B=#*PCI+ZAp{kCYoSc-@ z)OzzWVJ}MHnP36%0niK{r@zOHxgV!xhK;upA7Ow@d-oP>Z1pzl@Ug-mmmE%&5Vay} z4JnI@8%`D~4*4cyf-I#pH8lm|lM*ZV1p*q|UsHzc)0Vr-0CRK#0Z(@ahl>#%krz|& zfU~iQbvd~g0~}ex4l6VRyIbxxw>$Lg0t!WW#b;`7gpKJg|B@(J8z!7J$|;szSolFi zUo@^SHW)&!daVv~~`N6@%6aO1>ety2uc%BlUbhVx4MZ)KZ zb2lGEphfOCW9}#-A`+&63bVhD&vW1QU$R&L3xj-Ap^yTsJia^Q_lPV%|zW&6EG%z>w;FY@#A)AD-2B|pEv zu>*f@{qa_ML8_(l^(zwd&FXK2U_)5@o#>;-HM3RZc$+C8(p27pP!|yJ>YJc7=WyHT ziIS3%0x8yqX?Ey-SsGm~0%#*Z8ao8h)72GVSGN42?F74Petv!(bKu$(qRU)B*IB(nQnL6K*J28 zzuDzXd@PT(gs*mcUkkUAuhS})lw;;`zpRbpzD7tAmDOl)fv~xzN%czT1wxL8%zT3x z_4X3r2(L@dv-U?S5T36WrHxKZC@3k3L!%@qhl*H{@tIz8+Z%(~4=TqY_?WG&sbCTsji&#TRD zTNeD0J*;aDq|$Ve4rK}wepgQGU%vt)NNN*($bfXZlMamzzI%721_T7)wzdECRh8Bc z0)uUSbBR@`1Z~r=Z2Jg#iKg|JWES8)Xx`Eqh)MIipMO{dbP% zTZ)4F&$blDkbWvZD}no|EJd3#-CQ_}_hm(OlDB@KC`eS-+4*{Qr%Ic9a&)(OOL6eA z!`DdhY=xza8{B5hHT86v7Il;)7|EC81>qmJ*~>Z*(CmqCK|C}${-vX#*#T~!+Qa#B zI3BoXsfvTX{mpwo7ot}#WdnKp6Ad_T#=r9>^9H$CKX%*zICd~w)oqot3}{aO3B>>R z5YTCYJ^|EMX)51cg}~giL}i=GH_oBCxm3bEzkln2?AEdWa=37--9S?jz@Xe*@f>+t z9HgJJ4#wPNF1XY`eaQSk;{Vq+C`14Aq#rajQ`@!k^YcFyOk`%l-lpu;+iRZDoje<+ zv)KVtLRWVUTs$T?h4t~tpRDc(zxdb3{g8iw(Kh_Ve}AT>MVWOq&U0iG-(1_&El}@Mx3RiV?HGs;ucXz|7d`%^+&l3^< zQmxO(&7>TJKfHc($TO~E$?==FNVCm~NmJ$t^J@hHu&eFeLU#`*BfG zI=Z@*0HD?OG%mig+Zq716m&_LP(P3he0CMO{lDNG93Eh&QXj`v)Kyve=cu$de@J|G zMrYz*<}wKcC9br&xj9?h$VeAl_wWCv-&*_J9O1H=g~gznpm2iy&v60>gmaZ12}JmR z#<{j897K=;8jbkn%NH<-An7*0nvsm({A&I{2hN)w3nmq9?n85xwFCVB&IIsW^ndRS z*tFs>n|M;hvP@?b?*BUTjT~)6%2)?8I3lz=8Rqx03X&ZPhU}?Q#nuvnu4+{(Xnu?;htL5O8UC05lM6 zQmeF`9b@E=p|wNEkU3PqGM_kgkJRG@r-m{hyT*QSu(#)RynlsfWo!&ZM?cyh zneJHV=H~%j#VM3=F`~RB&npdYE1+0U*xl=#WkT6d-Qx_s|Gvq5(}zeLcgO23`fl z^D;-k`*^rsfg+DoAoB^o9u46eT8OBqXpj#S3v(ce?$C@-`Sn%0>*+aSQFx8TJ_iE{ z0l^JGIaS+3{2rHV)OUA{VVJ9!qynDJF8f=9YVTwCDG!5Yyr+E$3|gL!J&z;XujPw* zV2+^F*$Qkuf_Lcs?LL+{*zAx09f;nY7XIqp+GM}-^*Cr`h~8UjQ|bAbVo$)80N z7Z*1%zwIk#0sUi)rOxjtVf;Dn9fPVrr40e4sWslJJIVjiIX5pa@DNKODV@oh7!7iW zG&-#k+mjrG0f)(kg}EW~rpK3#nx}ha=4Vm#!h$*|yyo*WGn~}hfqN(HeSN*Xs|>^M z-!U?lbaV)FKQu*&>F8v{O`&h|X)KZ&!N6VXX8m#D1UZ+|ftx~7h)_f4^;xd#!!7%z z0?=`o_?cMgS@+eH9AzD+>KGVgr*pg>Ze#aVEG!Ps&yQ-efRS}_bQE(bE<7Aflb?|> z%ql^%#T7VOh`e0)r%E(iJg*IHOf%ExUIGE!8f1D&N8Q*X6#8Y6mo8rrPty}wTtWci z0#E|b*6zX7%F5HA_u1w1y`UOaz(9jCfi!=~@nlfvT! zx=8?Ii3qV8^>?GGCgC~0ezPAZ%wx@zE=D@d#o7?sT;2UVm`@^L32;=+FbgTe&f$6s z$WKue;xIqYyNCD8N8(EG=ckuQDnxH*T;BQ%+gw?DokvCxXMp7cl9D~SVM&0QF*P@T zO-M-B<0}8jLOTmi@;z39ip=9rh7G#1)KZd#K19f2G6zQ)APm5o5m3Oc?cwhij+y29qClIw8|} zihK)49wjOBAXekwASQ1cy>a?7@mc5}(|sI_=a^BhK|wnkJJp7RiJ(h}e5Byua0DD# zK|z5`VTgE6aGD%wjFaY=$e^H^%FPY1z`@6_lO<$ihS?KyZ;u}&o4@^GE&{GWcxUZT zDA4jK|DpZ_Q5Z3&HH2I=i(LjM@vG+81*F*Zks=E8@p5uh$fcy2xz`y|z>=X!b$pNVkDzVo|hnU|;{Rx;BFWz~fP{lM%c^&=< z#qZUx+=j^kyG!do7L?)sI(Qv-6Spn=)}cR+5kx4I9MvHVuxkfPEj++M+eY>TN(6}i z?;fxFbt~Y}UcVwFESwUP5z%<@P}k)lq~jeq2l9=uOuwGhtgKm*)K2 z7?VeyKZn=-Utby6E7c3M>&`U*A8v0i%-r4YL1uc#%*5b%{Hy(6TAH>3P%t;6RcC(6 zLgh92KUo}5;2=y0V>yN`QtyPXK#XK(Q)*}|0vtJ>UwwLN>-Px={D2WVo?98+c|qQ} zh9I0@SovW@Q%X9k`f||FJ!Qwwxs$!%{=cZz%ziI<(0>NK`j2e^z{GZ61kk>=PbKD# z0&bHL2rmo_#b)5iH#wrBqep~?cdZ!>C4;7om4l;e&H08xBK%;XVSHdf`r}74&>tz6 zs<*E}GXPNy8192zfGyS4)fE&J*x1-OEavR5{%SP83VR_`^DN8aEkQ-HWTHA+SP{BlDHd6IgCFR; zDcPpkU0fV~tJ&AhX7%zL$m!R(X@IM{ySZs`zp2d5en}3*k7M2IfaAGu;_Y%OjSl-= z1ZBm=qEG^&2kTFF_cv7=W05_Qz)45sWqr7|FB<65xw{X(_AaV-6H-zZn@|6ndMsIv zJ=W&+l=vSTSbJsNwQJAq*{}h4rFz;lfTu{FPB)P?mwx?P0lOIRidtJ!2MwpEpEysp znhkj!_9j%T40YawhJ+mJs!zxIPr$Pwc?S5T>>|L!-!ffk?6j5_R`xk07lnp~#>8L? z({ORA7Rnl3!#XKSr8WUG^u&LD1#Eaz0HX~UB}8g(Q&LfF0RdKBYu#i#7fhl5AP)?{ zFEU9SsG)Lc{EOY)+o1e`(tUP$+12mn>x)ySA8g%Zi>r+`^Y ze82nx4JUZ`z(7 z@2*eQV}Ja3yk19Fx3A~?ue=v;tLY>ihK{Cb z$5AE>Jz2u_k*IfEl_Me~L?h(}p{lb$VcFS(IY{GmGq!m+Uk40K35kjDrN{@%ZEfk= z)a3k3n#+P|A9BWw+5Yij?#sU(Ehg{@jEB|ht=oHgg5EFX$&pf1=hfHO<1=4tiK{d_ zSJ1SjU@kTnZi>A$7657c-M`*ye0sg9s7z!zZ#Wf+dt|=9$w2I-r5iB4g{0fX%+$|J z-K(Ph>y8vw5P-2YNQ|ceh6YGCV%%53kP>fTmIGQ}BorhxbQGxhKEuCMZuvUpwVES2 zZ@R{)?2>wY55oT)?MAJ=q`2~pT1?+iKb&A(|BlCK8}G99Hv}k&K|w*mP)m0NH0Lqz z^m)aIG*15Y2!fIXsct+>>uQtNu#Pt`SzCWUS`@w@8ChDPhvf|?i$jS8Y~1&LOsP@G z!eFPsNWmzimdfYW1vEdED{ChwQa)Gv(1`_<$zRH0N}$6Y&l?7sM_3afGBdMGhbR!R zM6swrhb$>8OGW0Rh)ypd!Ee+9h}mFfth3WoV-{eGdLcnAaqMFfcpTExaJGGXIBp~> zm;AQEfyKlH^9D?j>VomO8>abIkEW2qzWMi7fNfrshmG;R{S4FvuJWf}@?|;7WttYh z^}iAvs0WBr>g2N0f>&m_#&cyUq9j2Iyvx4qotsPCkDM;k1Sw>9e;*s_*V)J zJoAB6LeRcm>0^uiE|#*l-S%)pV`Hr_6{wFo89J$fr`WDdOlO@kp!HT>75FSihR6$jz>#jd@?dJsB^Dz zh=_oV>R81q1gi_=IF`m%`>|_l+`&_ZD*#6^{(-F=Rgj4L^Jc0hAZ; zk^yAo=olUv3RL%XZvC$Bq(&3r;o&@v2kG7?26w)8l(vU+?5zg>6qfHd)45}(SHYcK zT}T8@o!#Bb0K%zVzW4hi>fG5KL29+s=yEnSn2jz4FglrE015#XK7JquNUeCWA6fui zr?d@JwF)ctcx*T=C;HYOadF~+6vd;1X54^$n99m?VxZe`_R@m*5R|^GCqLgRMDnh$ z#Lvy2<4#8b;f#-u55!`|Cm;tQBO@31kYhm0G+O{YjwKIojE&JvH|T@&avj*bqSZ19 zvNk1PIXOA?swn)V-d@!2&1cecO8hOf>aACMMkzq)gJz%-y&p(nb-D@J6bV4#0*t`Z z<5e3^-BJCZU6bA25FpCd*4Of+Q#$InTK_7kub2Q;N29?NZobv&h@_UBf}#p!A0Vf> zN8sufPm+^icuI#v_HKYt1rO{$t~6hPE~XcUtxu)Jm0cKg8#=%c^A^h_a3%At`OI6) zj~{~K@G)_5V}T6^D3j-Dj@E>0t4or=lKQ`ZerjO509#vETVdfIz(b##vTiR9yS3kf zHk+V=!pF+aeX*pzXQ3}TRH7Ztgk zPDn{RWkUc@dT?Nli;L?A)Ui0QMRxqtLlDs1k5`1~-ypETxx1h2oKUR3LAYlT%uJ}h zUsePHc?yqXDyL0mdO8pod0lDB1Az_*3d|tT{d;>6RfxU~Q=${F=x-0D_$DKe`@y3U zRs%|F;pVf93?tw^W*c_*_P9AY)tjBclD7Y%Of{n@W6Q8lnQp77s{ZNh1O_PpmY>ds z1%Nq01@Ky%&Iy2G-`v~;mYn#wxJU2`03a4W7|2lEbAMN)mGjIJ-*J6#mCfE1>m2Jl zJ&yVv&#d8ius!p;P{P^S`Fz&6^$qY3fN_%uf5m0nDOvT`P;+S+|CESDUlM2>>E2+$ zlrKCQ9W!&cnEpxhpSG}@u(SL8g8O&t5kQ8Z@Dmmm;jmcHpBuDa^9xR{`)JMnZrb8+ z&??2kR%3!At46c&3FoxUpk*VUwwak3=z@UYgo&wRXt=eq@=L92Z0r;y)gtAxr5ZD3 zKsMKp)yQ$m90F42<{u*ypMOOR59l^lfq|lY0p6lkB2{k}MTxBrf8<;Eg}fPHrP^=@ zYIVQjFSCO9o&TtcNc`epE&eL|>}Ipo$lP4xHwjj^|KSC|Rd;^JeQ9L`NgwY}#sPXR zuv~+Ge?3Eod=tl@#LmslEjf^Q@vkgKJFcnw0}Y4-keMImBJ6Pg)kDDIgqR2%F{r2f zm$e)JD{Zr~_x&Hy2*C$b5E~#8qd)v(fcU_%Uw5+s0cp4kLo2zG2gKqJ*x;6;J#k}6 z$>9ajG#AC-UB|}uw$(!U2>|#Yr2qo}$oLxS>R*|@1pjK%mY?6F!o-w%iS<{@0q`db ze|L8gVPhGqrzt|v6rQUp7e%uMI4ONfAX2$+p2jYBKQbBefpxPr)#c50SK(kG1pv~S zu&lYZp!8ZLRHkwrXzSda4;*rjzO8}+PMG)$%-s>|FwyIu$|?KhTZ+((Z@(a*YG_G3 zfMi(jC?+O;I9nC?M>h;KJ&U&v&2XG9|5M9>l1oTPxMPY41;|TNv1(iV0?!Snyx!Ccq=dH;@lNHLj7 zJ+qubw>y4<`AY9E@b$57d7_Zu|FHX*U}%$|3>a}~(s$F)bYGvj7#GFNx}pC7!z(5Hz_N(xn-wBhi>;I_a1q++ZhDH#NCQ2;8@am_lBjC7D4ZXPl|zWcT) zXq`Ay8jtJKlhyjzLi?MMc(Q;ZrjxOS7S5KWyvm?buMIp|c3VTMC~KCA;J$vU#nONk zvUf~Zhm&Vb=SVC+#-^r*dU}3676R+uy3PN_f$E&JlJpZ}yD(RlW@l$-MJ78Zhdr_C zM}pxq#{c*bApKn5-onGd*}%W}pM21Z=inhlz`@=04BRgdfW{dRzChv#3W5?55iv0J zeCqoz%P@{zd3kw(57)0{=OyfkSzx*I>qvv?LcNVMHsCp()jti%8z#b4a~^g#f2e$) z1VZKSinnia)H5KhI}vCqD{t@ZHBOin9RD^NN^D?v-UpByRGqtv{W`m8SqA?9#$JD5 z_zO6vDX)^MDpr5t1Xd?mb8`kfQZC)>dG)&DVumkY#x1 z(}M`q-fqW1`m^|(_&q$%54*EO%O5K%+U75ctU-s(D9<=@YaQa#lHvi7&=Si}m)LC9 zsIO;*0965|+~xEg| z0hUCNC9AQtHQ&U3bHN??0J0*^xaX3pNfQwH1?m5#;{Tm@@&8+*xi`6qhYl2F0p)$9F$5a-GWaE56WJtisBSs}2VpZ{G{laq@WH0%ajXJ>VI8|KJbHR%~$ zu=*M*6a~6OsIIKs-9%5v($_WDHP&G}xX12}Yz-DSGyqFCuo~0F?g1tJ;QAfI5-?qn zkStASl=(OKM?}auII!axu_OThw(3`vf0Q{cfj>GDiGVBbf%2ni-#%n7BFHQv0gn_Qt9rF4M;h3 z2+{(Bw19x%fHX=YAW~A&5|Sd_q5=Yfgc2g162gEWL!O(x&tC6-zwdl!edoAXEY>LS zpPB#jJokNFzw35&ZZ1AGRqZz^#+7BINH5BB^ML1+z2YQIF(S~=yt-2ioK(>VPAH7m zzXMig|0y+NUswq6x7sIrXQp{Qqh5(JX}+E+yrIz0>TtsK0SDwvzR4!9Ns?le({G7_ z!_8xHl@c`({ud`UCSmdPCFOEdr?+FUoO89F>Z`Nw<>Td*@!no|{>Oa?q=y0&dwA|+ z2}!)?4!3xEMrP)Zjm6_1lhT?w+3IV^}(D>;~gS?0#F4i~A+&nyM zaGhXrQZUQQOT(@D;#>1$c}5yqS|w$rC-h=IZyw?RnN0tKUbfe7Z)3W!sK{7X*V4f< zGKs>*G4y)gAPrF%EHp(<;1bm`=6Znw0wLoXa3E&)9zDTNG4deX;Wjrn$HNPU1C}`i zk{ht17Z(=J7!h8JN6Dn{W2~*MtH3{noL6)-k@hcIU8xQYMa8$kq(W`j`^$`IMgHs# z>OMh0YQ)WKI5$P*Gb~_mgPGHeJS5g+@62RZS2#RhGGGady_ddb2Q?Qaw`1O{%hK)N zsqxs<{@l}#C4VvClrE@_q?GJ1+BhFgt87G#LoF#^y6fB-oQ*LA(5qK4en5W!p;R=p0i`& z!#%{ZEw!(-Z>z1~PVp0o%CFih5laSqu*B7PU~MbB!6#f{g|+_6+Qe>|MqheQrsK9kOQ zZ=KjxDIZ(VWn9g_uJF|c=TW+ZYq?1aI|m0|z~*n&?=H2!*H&E$( znZw6OMuyT6YFr_@hLH->wg;OiXsmNkHQ!I7Frh(}7Xha=PF0q>o*Vc9$;I^nuVh!Q$4biG*3NFPa*ZYDn{4yx%*JAi z^Ik=f!h-Pm%!OB=9-CRtCIs4~kN zc?$Q3+EZexW!?SX2x`mbf_k@$!OILcAlA0#UZaO_P-w3G+q%PgT`Ir|2L>KGGq#68 zzQGB!-#yR0rO7_vc!JL>eb+@I-#<>`QGRljOF+QY#)g85p54aLisaX{EB+VqSxR=LUE=wr< z{&94)-@(uC|l;uB7!3>tPoC|?PM#*D%d!oDhE!D#XtIgIH zU~i$(fZUhBt!hpIiP*Z2QOg3kd3liCU)OTd zK-1#nbhzqhKV0To+zfb(WE>*K&MeMe$aijn_LznEx=YcbNhWqJX@XU{? zsw+4z`#h&~6P{DS}Mw>;)h_78R|4rk}DAmQ9qd``3%F7Kz^) zFPR*qiVk(tr6AmCKePSpA@0%G)a3fLSE{;@){NoG4iKTiT?!h7q<>Os7(}mYSNw%BviBu_55~Q83vOZWu-3h1IwSe`<^t&MjI3 z?Nax0iC7-h9c5-_Fr1#n$G?4$%*en?)Rq(g%zjJFfY?W# z$uug>W_4`k6Ny8n7*r^NWENVyPk3OW5E6kux*KQr%By=0%X zN+(m5O8$zjT3%dkDkRcPUtdT51?$5q{5(P4-Q#(wQPJ*}uy4ErN3w;1AspQ;ZOc;} za%!rZ$z*rnv{286%j0~+4wS~ZG_a zjTB5jL0@sI<311G#>8-KU3E18%N#(ibUmP`6hI)(A6%*s77}7=)Oquzv7~^#06*uT zWLK)s{&7rX-^Y(;%{CY~F|DnwV(FzFU0o~kCULf!3P-oNx1-3QTnG&bIfsWwO-UJd z*YDmv9ab{1_u(TF$-JJn`QyhA;BV#e!3t#$j$9P{1`$FmZYYSfZdvcK`v;oo;(c9R z9OC@q5**Y`QJjjAoGgxz{^b&iwC-|qM}LLM2}k6MEXfg>{n;Xy7-ZL%Ry$wYVcV8t zIc^hOy2SpTqj~J^32L$A8kw!6d2!>y+I;V8yM~5FI_wYpZlQDXQ9r3sN&zun+S}V1 z0`{2%IR!Z-SAaocbt3_B8&YsQ{9OF}T&=@icuqKG{B^*BFzMgCDeN}){`GxZ{G2R+ z#xovF>3V@AKME2ghT-_=h@$+cJere*TY}@4LT~Wnp2u_XR-s5r><6~oLP%vAWy-m2 zzu)Mbm@?bkzcF9gzFxWxnlTImgSAmy%)RInA^aRR@$-u9Ed{;+85Xx0-jL-&R4dhK zAsd28#Ll!_JQX~t4DG^UYDr#@=$XFmgB1+)>*H(gYqez@H!_j1YCJjv~SIW z#Y>8xkx!`UhzSVVUBW{`t_nzLSG%QZhN&o58uRiB_W%$z>+=qfE)Y&ZQU{)5bb1=_ z36I4(5x|YMXY1kg=p1^bN@9mp%isRjRY9$fiR6UlHT`d&q6 zq&*b5&-l%6>FO%{`BH_?8gNTT^lTMFE*bbVr2o}WHgTki5;z2{g@r1MoerXx>1n@w z{rXr*Su0Z}wZn>zTV`Q>UB>?at-{e2Y(ZyJHJ-q(b<^trv>pu&4Ge>Zy82ca4)Y;mBH5;aILe(M zHZ%x$TYR*iz;UD8tby#tmmi6q7tZ4WC$GNP3H%1kF3Z0Ok_IJP6fQ3AD>we+^yK8_ z?~9Qn+dqGP?CsSH5C|rDJVn7b&IjcOym&y>nia6_%ooL0HbpQe!W(H=YWyhN2$oiE zp2ANwGxY6TbBX*WM#-fbOx0JfC(crkk^%!MDkBq3l6HIhu&r2@hUF*5b18|TlnRz= zDPbG~6ZT4spz;U1D(?W9Ot2)5ym507SC-uyT3T8%U45BDWTyAlH#Q8$k?@&~Ozmr} z=o7l-cVZ0ctYr4~_UrtAy*`h01bz4Jx(c{jFj#=B^4A5urC|zg-vU4ygK_h?FD4?Q z=Y`M>BmWfJMZEaQ`cv;%Y9;tUMnCWoWrC|)+yR`^7jUBr=a+u2h9V6O)63OxmP7UNYB{e?!pbU8;a?rP1T? zSx$*g`_Pd4AFkMe0hozr;iuS~(~I+vD8wj6$#T{bKEldz5jAh}Vah?GJUI?R2UiPb z+YpFCzlyldl*Fr69*;Rj$^!E01yoZ zPLOyS*e{lOJn$GbFN=zejg5{@^yqf1_}tmi!DaT7rj4^2$!t>NNXdLD6c_Pyz>?g} zcqaRs0)4fN4whn3lM7oyWkstidU*rR6FJOrq!HDY!%-mwKYk}7^xIn>KWm~VytMP1 z;rM{(D=p&5Jg376^K>)(*n=#-WLS4KK+MVykEyYf`x#fq?Pf0xP|>ZSAwNRNyaR9X zvPKDW_@b`Xb4lHkT6ac*R`QzPK8Z$&V%x=tp*J%#GhizY*A@cIaW@2nScJS{I74ZVg)99g zeBY5)kQQO;&2693|M}-)k-;Cxk4?|RY^crbTsHDjn>C!i=Yl0YtTdTPqW+M0zS2oJ$1eCch;Op_&Ig&_na zrl0SN-jyH_pJRfzxV;2^dt-dTA{6mIxoQ7#dqXuabfDeUTIsD2TxpUNBxJgf!l(I( zh#Zygw?Zk5L8DzDY&|?YoSvQrCA&Q58~$x=WEETPZm800g$o&H$yA1bBZUmSScM*i zi1{Kf+v$MAjr?MbGiQos`c*)1*91M3w*iY(qW#t)y#C=vsVONW=A81QT_qULJRQbw zHNMH=;VQ6KK*8=!K3GbBEo*la<-76mGy}VH7&x-5U315*S@ko;)vLVYeBM7-;_~y^ zWcQ)S1DtqaY0>djJI4K9=MSYwij&m0fzA3J-J@N}wtepRJ*2lMN$=`pe0vFnXJ3}f z62>d=Xr2LhkE+*IuQ2WH3UR6n3oGyeQG>0hx4ngybh3V9eP3d1`?do=F~nxlfRvR~ z+54sAi)ZTwa2*txFoPj6G39;byyPEJ8MT4Nxr)MD>oU*qCD-^-{ZC{kZL(r z8@!bHy1E{*lKnEc=mQiPA^RcJ^H^Vub*>wRkB@KGa`vip|B?3&Hs|Q}ir1<{eFsiXl%@ucqGqgp|t9 z7*p;~%1W2@mpZwfs}@tsoup#gmsjX6MYzio{gk1REh^b>XF~!2W+i+GBzk-M=<=da z78Y5_h17e+EHd-wLc29IRjaFCgHnsc-{_k@ggg2t-FH@wWA(`-;F-F!bV7Hc@D0-p z?X(n+ok~~t95;LDLKY-Q#intn=(!<;7_Z7Ig37A&STp2Lj{4l20drjT52sI`bdAiw z3_JQK9afe4Vb+#w1Wcl~J&BMmT(7Ox>#?egSWQ&V-%ju7Qd2i*fT6Y$5|Bmp(Du}R z&52F=&v#ZPKCiGJt)Gd`WrmzONaUVZ0uf1bAm+u@@@>GL4pNQ+KCnOW@UEsbgSY_E zl2VH{i0UnaegiH9$4inkK+(WuSppCFMSa+7brBE)9@7&BQQ(qi>R)`s7QP5|NQFd~5?Q)qX&c5mQ zzB6Lx=}cO$SgaJi*pvf!w}YjE-XpwD@cThdg_gS$=E9`eYTaZy*ub($jdB~Mbykf? zO$NLw-X=E`lYqFGv5w9bv=@8z<$7Dot?D|890|fZK}udK%J3fy=Tnerr9>| z+2D7=6qdU(jEsx`oSo57H+5fgGBV2d5gLV-9^CD<2kqT&dm+-8)v*2nWNy8do~g3F z?NYfCm#?in3WOu1o`;5qF{FRrVVRvOvFCK-{#oG3W}45>WnJ?HjVok8onx88o?IyNVuHQ-1`)|X#;b-suahbK|uL*=rKo$ZgWEm788 z*qLDBXT08+3<=BVr!as0$V*0Usu{a;PVrG1r7}{vzP_>4tkNBX-H#@Z+Y$*wf*`Ht z>+5}Zu;n4cr34?ds|5ZTd88@@) z#nS%F(cw(oNisDs_o6~l3H9uGOokWgg{)VJo`Ta{<|_&aX;ou+UjNhk(@x|J<0yDrQfUj?&{(>fB+dK%CaL?$LBIZxD<<>%YNA_I;D@Z)#ThrukxcPhf}JP6`;XCM_+!wy_fJsS*Pu^Wg(bM)W$` zKN~=xqx1BMV*;L*&BvjUm%3B^Jau>97%1$;d?B6u(A^DS88pq%4DaskQ4xm1V6HLq zF>N47&*QcyTLgTcnaR$(TrE5ebT(v00iA(H{1Zet;d~kMg38*7@QicU%-tU z#Nz!n!fhu9PQV|4vS`=6G(Ny9l9ThOcX3Xxb*En% zd^xWi7-*xWp>epB?h0f5(E4v8o~3;N4;KbICUybHQ17$53e+tK%&8*wkgb@Pz6L>5 z7&ZcD^3wP3P^(46EW-@wk&%F3lMf(|2bcN&0%Y8E^z`n7V+tKM$Srep>Qy_rvrf3t z@&CF?d3^I`FAVIJa>qZ1AxjKMV)e}-{O@GKZzfVf00Lir=1P{3weo`p5+~LWyRtYv zFoM}=c`XSv8}yXyLDIf^yq@nqe&iJwf7UfW8>^n7gjDzZh7_&XFgdbF%V`_1AUO!qsJqtc*EdNPx&@e)t!w zhto(ZUSk~;>Lj`C==@>jkr@`)mMwo6SaQ<-lbFGOf3WrVQ1a>%enLj!uULK%^ZgdF zGf!`aVrVQikv2#>!=iGQ!Cs2J6~cq`Qvwn!9es^R`Jq^AKtsAY9-?}TYnh1wZXAfG`rCQdbE zVXA`r^TSE6)8k*mwfWGUZDpMvah%|&19HJ>^7-3085mUnOR0WLGU-Z=utm1V<>!}^ zIHK+>B$ePYRkQeq{~5cN9(vGx_@n6-mxE2IKl@v|stzkRLpwuX-zF$UC6zwfRjC9_ z==l5jYierc%0B5CORBsx$ZVdNbGLd2@-i;!j_N3vDGs-+fjiY(yR&0d@42kHUAp0c zX6#Zrga6OLhS&F5UbIC*E#3!XP)5tlLA8o?WwkMYNjaPpo+m?pz*_te%MvM$+j$9w z0xfP7wQ-wGnq3dN9u^*c>=m%4IQrePMzcPk&;!P13>Tza-22rtt*d7)GT~EO{=k)U zPD4RMFCAb9d+bEeWb;Pfwf# z<;mSF=Csj99$Gd0dqo9<{mFNj!!phbGL|*laJI@v=SJ$A7Z2^we-ZuKLat@QdvyOC zks?oFX3y_0R&OThipB}`{=L_W#wABPx5}?Y-zQKY_wN4tVH0xFsP{f4*1UqXSllv^ zem3O(HIPIY9|hhxN4E7}$RYx#QX+0W=-)5j9>l4?rY$a2NoLH_~xAZ4Ne literal 32806 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
JX=1cnHu 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 D66+`x literal 28481 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 diff --git a/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc b/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc index 8cc306e..d80dff0 100644 --- a/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc +++ b/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc @@ -10,8 +10,8 @@ hypotheses and algorithms (2D and 1D for meshing 3D objects and 1D for meshing 2D objects). \image html netgen2d3d.png -

Dialog boxes of Netgen 1D-2D and Netgen -1D-2D-3D algorithms
+
Hypothesis dialog boxes of Netgen 1D-2D and Netgen +1D-2D-3D algorithms are same

\image html netgen2d3d_only.png @@ -24,21 +24,35 @@ algorithms - Min Size - minimum linear dimensions for mesh cells. It is ignored if it is more than Max Size. - Second Order - if this box is checked in, the algorithm will -create second order nodes on the mesh, which will then become quadratic. -- Fineness - ranging from Very Coarse to Very Fine allows to set the -level of meshing detalization using the three parameters below. You -can select Custom to define them manually. +create second order mesh. +- Fineness - ranging from Very Coarse to Very Fine +allows to set the level of meshing detalization using the three +parameters below. You can select \a Custom to define them manually. - Growth rate - allows to define how much the linear dimensions of two adjacent cells can differ (i.e. 0.3 means 30%). -- Nb. Segs per Edge and Nb Segs per Radius - allows to define the -minimum number of mesh segments in which edges and radiuses will be -split. -- Allow Quadrangles - allows to use quadrangle elements in a -triangle 2D mesh. This checkbox is not present in Netgen 3D parameters -because currently building a tetrahedral mesh with quadrangle faces is -not possible. -- Optimize - if this box is checked in, the algorithm will try to -create regular (possessing even sides) elements. +- Nb. Segs per Edge - allows to define the minimum number of +mesh segments in which edges will be split. This parameter is used +only if Limit Size by Surface Curvature is checked. +- Nb Segs per Radius - allows to define the size of +mesh segments and mesh faces in which curved edges and surfaces will +be split. This parameter is used only if Limit Size by Surface +Curvature is checked. +- Limit Size by Surface Curvature - if this box is checked in, +then size of mesh segments and mesh faces on curved edges and surfaces +is defined using value of Nb Segs per Radius parameter, and +number of segments on straight edges is defined by values of +Nb. Segs per Edge parameter. If this box is not checked in, +then size of elements is defined by three parameters only: +Max Size, Min Size and Growth rate. +- Allow Quadrangles - if this box is checked in, the mesher +tries to generate quadrangle 2D mesh. Triangle elements are created +where quadrangles are not possible. +- Optimize - if this box is checked in, the algorithm will modify +initially created mesh in order to improve quality of elements. Optimization +process is rather time consuming comparing to creation of initial mesh. +- Fuse Coincident Nodes on Edges and Vertices - allows merging +mesh nodes on vertices and edges which are geometrically coincident +but are topologically different. \image html netgen3d_local_size.png @@ -66,14 +80,12 @@ consists of setting required \b length of segments. \b 2D group allows defining the size of 2D elements - Length from edges if checked in, hypothesis forces building of -2D mesh segments having a length calculated as an average edge length +2D mesh elements having a length calculated as an average edge length for a given wire, else - Max. Element Area specifies expected maximum element area for each 2d element. -- Allow Quadrangles - allows to use quadrangle elements in a -triangle 2D mesh. This checkbox is not present in Netgen 3D simple parameters -because currently building a tetrahedral mesh with quadrangle faces is -not possible. +- Allow Quadrangles - allows to generate quadrangle elements +wherever possible. \b 3D groups allows defining the size of 3D elements. - Length from faces if checked in, the area of sides of @@ -89,13 +101,9 @@ edge. This parameter is used only to define the local element size (size at the given point), so local sizes of adjacent edges influence each other. - NETGEN additionally restricts the element size according to edge curvature. -- The local size of edges influences the size of close triangles. +- The local size of segments influences the size of close triangles. - The order of elements and their size in the 1D mesh generated by NETGEN differ from those in the 1D mesh generated by Regular_1D algorithm, resulting in different 2D and 3D meshes. -\note In the case where two points are geometrically confounded, a single node is generated. - */ - - diff --git a/idl/NETGENPlugin_Algorithm.idl b/idl/NETGENPlugin_Algorithm.idl index 05fab2a..19ca826 100644 --- a/idl/NETGENPlugin_Algorithm.idl +++ b/idl/NETGENPlugin_Algorithm.idl @@ -97,6 +97,12 @@ module NETGENPlugin void SetQuadAllowed(in boolean value); boolean GetQuadAllowed(); + + void SetUseSurfaceCurvature(in boolean value); + boolean GetUseSurfaceCurvature(); + + void SetFuseEdges(in boolean value); + boolean GetFuseEdges(); void SetLocalSizeOnShape(in GEOM::GEOM_Object GeomObj, in double localSize); void SetLocalSizeOnEntry(in string entry, in double localSize); diff --git a/resources/NETGENPlugin.xml b/resources/NETGENPlugin.xml index 3adfc5b..c679d92 100644 --- a/resources/NETGENPlugin.xml +++ b/resources/NETGENPlugin.xml @@ -67,6 +67,7 @@ opt-hypos="ViscousLayers" need-geom="false" input="TRIA,QUAD" + output="TETRA,PYRAMID" dim="3"> NETGEN_3D=Tetrahedron() @@ -114,6 +115,7 @@ label-id="Netgen 1D-2D-3D" icon-id="mesh_algo_netgen_2d3d.png" hypos="NETGEN_Parameters, NETGEN_SimpleParameters_3D" + output="TETRA,PYRAMID" dim="3" support-submeshes="true"> diff --git a/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx b/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx index abb45c4..c8415e2 100644 --- a/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx +++ b/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx @@ -89,7 +89,7 @@ NETGENPluginGUI_HypothesisCreator::NETGENPluginGUI_HypothesisCreator( const QStr { myGeomSelectionTools = NULL; myLocalSizeMap.clear(); - myIs2D = ( theHypType.startsWith("NETGEN_Parameters_2D")); + myIs2D = ( theHypType.startsWith("NETGEN_Parameters_2D")); myIsONLY = ( theHypType == "NETGEN_Parameters_2D_ONLY" || theHypType == "NETGEN_Parameters_3D"); } @@ -166,7 +166,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() if ( !myIsONLY ) { mySecondOrder = new QCheckBox( tr( "NETGEN_SECOND_ORDER" ), GroupC1 ); - aGroupLayout->addWidget( mySecondOrder, row, 0 ); + aGroupLayout->addWidget( mySecondOrder, row, 0, 1, 2 ); row++; } @@ -177,6 +177,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() tr( "NETGEN_FINE" ) << tr( "NETGEN_VERYFINE" ) << tr( "NETGEN_CUSTOM" ); myFineness->addItems( types ); aGroupLayout->addWidget( myFineness, row, 1 ); + connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) ); row++; aGroupLayout->addWidget( new QLabel( tr( "NETGEN_GROWTH_RATE" ), GroupC1 ), row, 0 ); @@ -203,19 +204,35 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() aGroupLayout->addWidget( myNbSegPerRadius, row, 1 ); row++; } + + mySurfaceCurvature = 0; + if ( myIs2D || !myIsONLY ) + { + mySurfaceCurvature = new QCheckBox( tr( "NETGEN_SURFACE_CURVATURE" ), GroupC1 ); + aGroupLayout->addWidget( mySurfaceCurvature, row, 0, 1, 2 ); + connect( mySurfaceCurvature, SIGNAL( stateChanged( int ) ), this, SLOT( onSurfaceCurvatureChanged() ) ); + row++; + } + myAllowQuadrangles = 0; - if ( myIs2D || !myIsONLY ) // issue 0021676 + if ( myIs2D || !myIsONLY ) // disable only for NETGEN 3D { myAllowQuadrangles = new QCheckBox( tr( "NETGEN_ALLOW_QUADRANGLES" ), GroupC1 ); - aGroupLayout->addWidget( myAllowQuadrangles, row, 0 ); + aGroupLayout->addWidget( myAllowQuadrangles, row, 0, 1, 2 ); row++; } myOptimize = new QCheckBox( tr( "NETGEN_OPTIMIZE" ), GroupC1 ); - aGroupLayout->addWidget( myOptimize, row, 0 ); + aGroupLayout->addWidget( myOptimize, row, 0, 1, 2 ); row++; - connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) ); + myFuseEdges = 0; + if (!myIsONLY) + { + myFuseEdges = new QCheckBox( tr( "NETGEN_FUSE_EDGES" ), GroupC1 ); + aGroupLayout->addWidget( myFuseEdges, row, 0, 1, 2 ); + row++; + } myLocalSizeTable = 0; if ( !myIsONLY ) @@ -306,13 +323,21 @@ void NETGENPluginGUI_HypothesisCreator::retrieveParams() const if (myAllowQuadrangles) myAllowQuadrangles->setChecked( data.myAllowQuadrangles ); + if (mySurfaceCurvature) + mySurfaceCurvature->setChecked( data.mySurfaceCurvature ); + + if (myFuseEdges) + myFuseEdges->setChecked( data.myFuseEdges ); + // update widgets bool isCustom = (myFineness->currentIndex() == UserDefined); - myGrowthRate->setEnabled(isCustom); + bool isSurfaceCurvature = (mySurfaceCurvature ? mySurfaceCurvature->checkState() == Qt::Checked : true); + myFineness->setEnabled(isSurfaceCurvature); + myGrowthRate->setEnabled(isCustom && isSurfaceCurvature); if ( myNbSegPerEdge ) - myNbSegPerEdge->setEnabled(isCustom); + myNbSegPerEdge->setEnabled(isCustom && isSurfaceCurvature); if ( myNbSegPerRadius ) - myNbSegPerRadius->setEnabled(isCustom); + myNbSegPerRadius->setEnabled(isCustom && isSurfaceCurvature); if ( myLocalSizeTable ) { @@ -357,6 +382,12 @@ QString NETGENPluginGUI_HypothesisCreator::storeParams() const if ( myIs2D && data.myAllowQuadrangles ) valStr += "; " + tr("NETGEN_ALLOW_QUADRANGLES"); + if ( data.mySurfaceCurvature ) + valStr += "; " + tr("NETGEN_SURFACE_CURVATURE"); + + if ( data.myFuseEdges ) + valStr += "; " + tr("NETGEN_FUSE_EDGES"); + return valStr; } @@ -382,6 +413,8 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromHypo( NetgenHypothesisData h_data.myNbSegPerRadiusVar = getVariableName("SetNbSegPerRadius"); h_data.myMinSize = h->GetMinSize(); h_data.myMinSizeVar = getVariableName("SetMinSize"); + h_data.mySurfaceCurvature = h->GetUseSurfaceCurvature(); + h_data.myFuseEdges = h->GetFuseEdges(); //if ( myIs2D ) { @@ -425,23 +458,25 @@ bool NETGENPluginGUI_HypothesisCreator::storeParamsToHypo( const NetgenHypothesi if( isCreation() ) SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().data() ); h->SetVarParameter( h_data.myMaxSizeVar.toLatin1().constData(), "SetMaxSize"); - h->SetMaxSize( h_data.myMaxSize ); - h->SetSecondOrder( h_data.mySecondOrder ); - h->SetOptimize( h_data.myOptimize ); + h->SetMaxSize ( h_data.myMaxSize ); + h->SetSecondOrder ( h_data.mySecondOrder ); + h->SetOptimize ( h_data.myOptimize ); int fineness = h_data.myFineness; - h->SetFineness( fineness ); + h->SetFineness ( fineness ); if( fineness==UserDefined ) { - h->SetVarParameter( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate"); - h->SetGrowthRate( h_data.myGrowthRate ); - h->SetVarParameter( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge"); - h->SetNbSegPerEdge( h_data.myNbSegPerEdge ); - h->SetVarParameter( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius"); + h->SetVarParameter ( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate"); + h->SetGrowthRate ( h_data.myGrowthRate ); + h->SetVarParameter ( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge"); + h->SetNbSegPerEdge ( h_data.myNbSegPerEdge ); + h->SetVarParameter ( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius"); h->SetNbSegPerRadius( h_data.myNbSegPerRadius ); } - h->SetVarParameter( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize"); - h->SetMinSize( h_data.myMinSize ); + h->SetVarParameter ( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize"); + h->SetMinSize ( h_data.myMinSize ); + h->SetUseSurfaceCurvature( h_data.mySurfaceCurvature ); + h->SetFuseEdges ( h_data.myFuseEdges ); //if ( myIs2D ) { @@ -507,6 +542,12 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromWidgets( NetgenHypothesisD if ( myAllowQuadrangles ) h_data.myAllowQuadrangles = myAllowQuadrangles->isChecked(); + if ( mySurfaceCurvature ) + h_data.mySurfaceCurvature = mySurfaceCurvature->isChecked(); + + if ( myFuseEdges ) + h_data.myFuseEdges = myFuseEdges->isChecked(); + if ( myLocalSizeTable ) { NETGENPluginGUI_HypothesisCreator* that = (NETGENPluginGUI_HypothesisCreator*)this; @@ -521,6 +562,17 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromWidgets( NetgenHypothesisD return true; } +void NETGENPluginGUI_HypothesisCreator::onSurfaceCurvatureChanged() +{ + bool isSurfaceCurvature = (mySurfaceCurvature ? mySurfaceCurvature->isChecked() : true); + bool isCustom = (myFineness->currentIndex() == UserDefined); + myGrowthRate->setEnabled(isCustom); + if ( myNbSegPerEdge ) + myNbSegPerEdge->setEnabled(isCustom && isSurfaceCurvature); + if ( myNbSegPerRadius ) + myNbSegPerRadius->setEnabled(isCustom && isSurfaceCurvature); +} + void NETGENPluginGUI_HypothesisCreator::onFinenessChanged() { bool isCustom = (myFineness->currentIndex() == UserDefined); diff --git a/src/GUI/NETGENPluginGUI_HypothesisCreator.h b/src/GUI/NETGENPluginGUI_HypothesisCreator.h index aaba4fc..395ecfb 100644 --- a/src/GUI/NETGENPluginGUI_HypothesisCreator.h +++ b/src/GUI/NETGENPluginGUI_HypothesisCreator.h @@ -46,7 +46,7 @@ typedef struct { double myMaxSize, myMinSize, myGrowthRate, myNbSegPerEdge, myNbSegPerRadius; int myFineness; - bool mySecondOrder, myAllowQuadrangles, myOptimize; + bool mySecondOrder, myAllowQuadrangles, myOptimize, mySurfaceCurvature, myFuseEdges; QString myName; QString myMaxSizeVar, myMinSizeVar, myGrowthRateVar, myNbSegPerEdgeVar, myNbSegPerRadiusVar; } NetgenHypothesisData; @@ -76,6 +76,7 @@ protected: protected slots: virtual void onFinenessChanged(); + virtual void onSurfaceCurvatureChanged(); virtual void onAddLocalSizeOnVertex(); virtual void onAddLocalSizeOnEdge(); virtual void onAddLocalSizeOnFace(); @@ -100,6 +101,8 @@ private: SMESHGUI_SpinBox* myNbSegPerEdge; SMESHGUI_SpinBox* myNbSegPerRadius; QCheckBox* myAllowQuadrangles; + QCheckBox* mySurfaceCurvature; + QCheckBox* myFuseEdges; bool myIs2D; bool myIsONLY; diff --git a/src/GUI/NETGENPlugin_msg_en.ts b/src/GUI/NETGENPlugin_msg_en.ts index 55e4ceb..0f0d221 100644 --- a/src/GUI/NETGENPlugin_msg_en.ts +++ b/src/GUI/NETGENPlugin_msg_en.ts @@ -55,6 +55,10 @@ NETGEN_FINENESS Fineness + + NETGEN_FUSE_EDGES + Fuse Coincident Nodes on Edges and Vertices + NETGEN_GROWTH_RATE Growth Rate @@ -87,6 +91,10 @@ NETGEN_SEG_PER_RADIUS Nb. Segs per Radius + + NETGEN_SURFACE_CURVATURE + Limit Size by Surface Curvature + NETGEN_VERYCOARSE Very Coarse diff --git a/src/GUI/NETGENPlugin_msg_fr.ts b/src/GUI/NETGENPlugin_msg_fr.ts index 01acbc0..e9043f8 100755 --- a/src/GUI/NETGENPlugin_msg_fr.ts +++ b/src/GUI/NETGENPlugin_msg_fr.ts @@ -55,6 +55,10 @@ NETGEN_FINENESS Finesse + + NETGEN_FUSE_EDGES + Fuse Coincident Nodes on Edges and Vertices + NETGEN_GROWTH_RATE Taux d'accroissement @@ -87,6 +91,10 @@ NETGEN_SEG_PER_RADIUS Nb. segments par rayon + + NETGEN_SURFACE_CURVATURE + Limit Size by Surface Curvature + NETGEN_VERYCOARSE Très grossier diff --git a/src/GUI/NETGENPlugin_msg_ja.ts b/src/GUI/NETGENPlugin_msg_ja.ts index d423ab1..e83c72e 100644 --- a/src/GUI/NETGENPlugin_msg_ja.ts +++ b/src/GUI/NETGENPlugin_msg_ja.ts @@ -55,6 +55,10 @@ NETGEN_FINENESS 細かさ + + NETGEN_FUSE_EDGES + Fuse Coincident Nodes on Edges and Vertices + NETGEN_GROWTH_RATE 増加率 @@ -87,6 +91,10 @@ NETGEN_SEG_PER_RADIUS 半径毎の分割数 + + NETGEN_SURFACE_CURVATURE + Limit Size by Surface Curvature + NETGEN_VERYCOARSE 非常に粗く diff --git a/src/NETGEN/netgen49ForSalome.patch b/src/NETGEN/netgen49ForSalome.patch index 0be0d34..f246a50 100644 --- a/src/NETGEN/netgen49ForSalome.patch +++ b/src/NETGEN/netgen49ForSalome.patch @@ -1012,3 +1012,38 @@ diff -Naur netgen-4.9.13_orig/nglib/nglib.h netgen-4.9.13_new/nglib/nglib.h #define DLL_HEADER __declspec(dllexport) #else #define DLL_HEADER __declspec(dllimport) + } +diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp /netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp +--- netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp 2013-12-04 14:39:45.000000000 +0400 ++++ netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp 2013-12-04 15:20:24.000000000 +0400 +@@ -564,17 +564,20 @@ + bool exists = 0; + int j; + for (j = first_ep; j <= mesh.GetNP(); j++) ++ { ++ if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges + if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps) + { + exists = 1; + break; + } ++ } + + if (exists) + pnums[i] = j; + else + { +- mesh.AddPoint (mp[i-1]); ++ mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges + (*testout) << "add meshpoint " << mp[i-1] << endl; + pnums[i] = mesh.GetNP(); + } +@@ -658,6 +661,8 @@ + // (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si + // << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl; + // exit(10); ++ for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero ++ mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) ); + + mesh.CalcSurfacesOfNode(); + multithread.task = savetask; diff --git a/src/NETGENPlugin/NETGENPluginBuilder.py b/src/NETGENPlugin/NETGENPluginBuilder.py index 11369c7..87c4fd4 100644 --- a/src/NETGENPlugin/NETGENPluginBuilder.py +++ b/src/NETGENPlugin/NETGENPluginBuilder.py @@ -218,6 +218,16 @@ class NETGEN_1D2D3D_Algorithm(NETGEN_Algorithm): def SetQuadAllowed(self, toAllow=True): if self.Parameters(): self.params.SetQuadAllowed(toAllow) pass + ## Sets @c UseSurfaceCurvature flag + # @param toUse new value of the @c UseSurfaceCurvature parameter (@c True by default) + def SetUseSurfaceCurvature(self, toUse=True): + if self.Parameters(): self.params.SetUseSurfaceCurvature(toUse) + pass + ## Sets @c FuseEdges flag + # @param toFuse new value of the @c FuseEdges parameter (@c False by default) + def SetFuseEdges(self, toFuse=False): + if self.Parameters(): self.params.SetFuseEdges(toFuse) + pass ## Sets number of segments overriding the value set by SetLocalLength() # @param theVal new value of number of segments parameter @@ -335,6 +345,12 @@ class NETGEN_2D_Only_Algorithm(NETGEN_Algorithm): def LengthFromEdges(self): hyp = self.Hypothesis("LengthFromEdges", UseExisting=1, CompareMethod=self.CompareEqualHyp) return hyp + + ## Sets @c SurfaceCurvature flag + # @param toAllow new value of the @c SurfaceCurvature parameter (@c True by default) + def SetSurfaceCurvature(self, toAllow=True): + if self.Parameters(): self.params.SetSurfaceCurvature(toAllow) + pass ## Sets @c QuadAllowed flag. # @param toAllow new value of the @c QuadAllowed parameter (@c True by default) diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx index e33e401..ad439a2 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx @@ -43,16 +43,18 @@ using namespace std; NETGENPlugin_Hypothesis::NETGENPlugin_Hypothesis (int hypId, int studyId, SMESH_Gen * gen) : SMESH_Hypothesis(hypId, studyId, gen), - _maxSize (GetDefaultMaxSize()), - _minSize (0), - _growthRate (GetDefaultGrowthRate()), - _nbSegPerEdge (GetDefaultNbSegPerEdge()), - _nbSegPerRadius(GetDefaultNbSegPerRadius()), - _fineness (GetDefaultFineness()), - _secondOrder (GetDefaultSecondOrder()), - _optimize (GetDefaultOptimize()), - _localSize (GetDefaultLocalSize()), - _quadAllowed (GetDefaultQuadAllowed()) + _maxSize (GetDefaultMaxSize()), + _minSize (0), + _growthRate (GetDefaultGrowthRate()), + _nbSegPerEdge (GetDefaultNbSegPerEdge()), + _nbSegPerRadius (GetDefaultNbSegPerRadius()), + _fineness (GetDefaultFineness()), + _secondOrder (GetDefaultSecondOrder()), + _optimize (GetDefaultOptimize()), + _localSize (GetDefaultLocalSize()), + _quadAllowed (GetDefaultQuadAllowed()), + _surfaceCurvature(GetDefaultSurfaceCurvature()), + _fuseEdges (GetDefaultFuseEdges()) { _name = "NETGEN_Parameters"; _param_algo_dim = 3; @@ -274,6 +276,54 @@ bool NETGENPlugin_Hypothesis::GetDefaultQuadAllowed() * */ //============================================================================= +void NETGENPlugin_Hypothesis::SetSurfaceCurvature(bool theVal) +{ + if (theVal != _surfaceCurvature) + { + _surfaceCurvature = theVal; + NotifySubMeshesHypothesisModification(); + } +} + +//============================================================================= +/*! + * + */ +//============================================================================= +bool NETGENPlugin_Hypothesis::GetDefaultSurfaceCurvature() +{ + return true; +} + +//============================================================================= +/*! + * + */ +//============================================================================= +void NETGENPlugin_Hypothesis::SetFuseEdges(bool theVal) +{ + if (theVal != _fuseEdges) + { + _fuseEdges = theVal; + NotifySubMeshesHypothesisModification(); + } +} + +//============================================================================= +/*! + * + */ +//============================================================================= +bool NETGENPlugin_Hypothesis::GetDefaultFuseEdges() +{ + return false; +} + +//============================================================================= +/*! + * + */ +//============================================================================= ostream & NETGENPlugin_Hypothesis::SaveTo(ostream & save) { save << _maxSize << " " << _fineness; @@ -294,6 +344,8 @@ ostream & NETGENPlugin_Hypothesis::SaveTo(ostream & save) } save << " " << _minSize; save << " " << _quadAllowed; + save << " " << _surfaceCurvature; + save << " " << _fuseEdges; return save; } @@ -385,6 +437,14 @@ istream & NETGENPlugin_Hypothesis::LoadFrom(istream & load) if ( !isOK ) _quadAllowed = GetDefaultQuadAllowed(); + isOK = ( load >> _surfaceCurvature ); + if ( !isOK ) + _surfaceCurvature = GetDefaultSurfaceCurvature(); + + isOK = ( load >> _fuseEdges ); + if ( !isOK ) + _fuseEdges = GetDefaultFuseEdges(); + return load; } diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx index 9d4b654..3c95ce8 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx @@ -93,6 +93,12 @@ public: void SetQuadAllowed(bool theVal); bool GetQuadAllowed() const { return _quadAllowed; } + void SetSurfaceCurvature(bool theVal); + bool GetSurfaceCurvature() const { return _surfaceCurvature; } + + void SetFuseEdges(bool theVal); + bool GetFuseEdges() const { return _fuseEdges; } + // the default values (taken from NETGEN 4.5 sources) static double GetDefaultMaxSize(); @@ -103,6 +109,8 @@ public: static bool GetDefaultSecondOrder(); static bool GetDefaultOptimize(); static bool GetDefaultQuadAllowed(); + static bool GetDefaultSurfaceCurvature(); + static bool GetDefaultFuseEdges(); // Persistence virtual ostream & SaveTo(ostream & save); @@ -134,6 +142,8 @@ private: bool _optimize; TLocalSize _localSize; bool _quadAllowed; + bool _surfaceCurvature; + bool _fuseEdges; }; #endif diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx index 0deff9a..dce341f 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx @@ -382,6 +382,46 @@ CORBA::Boolean NETGENPlugin_Hypothesis_i::GetQuadAllowed() return this->GetImpl()->GetQuadAllowed(); } +//============================================================================= + +void NETGENPlugin_Hypothesis_i::SetUseSurfaceCurvature (CORBA::Boolean theValue) +{ + if ( NETGENPlugin_Hypothesis_i::isToSetParameter( GetUseSurfaceCurvature(), + theValue, + METH_SetSurfaceCurvature )) + { + this->GetImpl()->SetSurfaceCurvature(theValue); + SMESH::TPythonDump() << _this() << ".SetSurfaceCurvature( " << theValue << " )"; + } +} + +//============================================================================= + +CORBA::Boolean NETGENPlugin_Hypothesis_i::GetUseSurfaceCurvature() +{ + return this->GetImpl()->GetSurfaceCurvature(); +} + +//============================================================================= + +void NETGENPlugin_Hypothesis_i::SetFuseEdges (CORBA::Boolean theValue) +{ + if ( NETGENPlugin_Hypothesis_i::isToSetParameter( GetFuseEdges(), + theValue, + METH_SetFuseEdges )) + { + this->GetImpl()->SetFuseEdges(theValue); + SMESH::TPythonDump() << _this() << ".SetFuseEdges( " << theValue << " )"; + } +} + +//============================================================================= + +CORBA::Boolean NETGENPlugin_Hypothesis_i::GetFuseEdges() +{ + return this->GetImpl()->GetFuseEdges(); +} + //============================================================================= /*! * NETGENPlugin_Hypothesis_i::GetImpl diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx index 075cd12..2a3c8f3 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx @@ -88,6 +88,12 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Hypothesis_i: void SetQuadAllowed(CORBA::Boolean theVal); CORBA::Boolean GetQuadAllowed(); + void SetUseSurfaceCurvature(CORBA::Boolean theVal); + CORBA::Boolean GetUseSurfaceCurvature(); + + void SetFuseEdges(CORBA::Boolean theVal); + CORBA::Boolean GetFuseEdges(); + // Get implementation ::NETGENPlugin_Hypothesis* GetImpl(); @@ -109,7 +115,9 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Hypothesis_i: METH_SetNbSegPerRadius = 128, METH_SetLocalSizeOnEntry = 256, METH_SetQuadAllowed = METH_SetLocalSizeOnEntry * 2, - METH_LAST = METH_SetQuadAllowed + METH_SetSurfaceCurvature = METH_SetQuadAllowed * 2, + METH_SetFuseEdges = METH_SetSurfaceCurvature * 2, + METH_LAST = METH_SetFuseEdges }; int mySetMethodFlags; diff --git a/src/NETGENPlugin/NETGENPlugin_Mesher.cxx b/src/NETGENPlugin/NETGENPlugin_Mesher.cxx index 8587523..d926f21 100644 --- a/src/NETGENPlugin/NETGENPlugin_Mesher.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Mesher.cxx @@ -83,6 +83,7 @@ namespace netgen { //extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh); extern MeshingParameters mparam; extern volatile multithreadt multithread; + extern bool merge_solids; } #include @@ -184,22 +185,24 @@ void NETGENPlugin_Mesher::SetDefaultParameters() { netgen::MeshingParameters& mparams = netgen::mparam; // maximal mesh edge size - mparams.maxh = 0;//NETGENPlugin_Hypothesis::GetDefaultMaxSize(); - mparams.minh = 0; + mparams.maxh = 0;//NETGENPlugin_Hypothesis::GetDefaultMaxSize(); + mparams.minh = 0; // minimal number of segments per edge mparams.segmentsperedge = NETGENPlugin_Hypothesis::GetDefaultNbSegPerEdge(); // rate of growth of size between elements - mparams.grading = NETGENPlugin_Hypothesis::GetDefaultGrowthRate(); + mparams.grading = NETGENPlugin_Hypothesis::GetDefaultGrowthRate(); // safety factor for curvatures (elements per radius) mparams.curvaturesafety = NETGENPlugin_Hypothesis::GetDefaultNbSegPerRadius(); // create elements of second order - mparams.secondorder = NETGENPlugin_Hypothesis::GetDefaultSecondOrder() ? 1 : 0; + mparams.secondorder = NETGENPlugin_Hypothesis::GetDefaultSecondOrder(); // quad-dominated surface meshing if (_isVolume) - mparams.quad = 0; + mparams.quad = 0; else - mparams.quad = NETGENPlugin_Hypothesis_2D::GetDefaultQuadAllowed() ? 1 : 0; - _fineness = NETGENPlugin_Hypothesis::GetDefaultFineness(); + mparams.quad = NETGENPlugin_Hypothesis_2D::GetDefaultQuadAllowed(); + _fineness = NETGENPlugin_Hypothesis::GetDefaultFineness(); + mparams.uselocalh = NETGENPlugin_Hypothesis::GetDefaultSurfaceCurvature(); + netgen::merge_solids = NETGENPlugin_Hypothesis::GetDefaultFuseEdges(); } //============================================================================= @@ -242,23 +245,25 @@ void NETGENPlugin_Mesher::SetParameters(const NETGENPlugin_Hypothesis* hyp) netgen::MeshingParameters& mparams = netgen::mparam; // Initialize global NETGEN parameters: // maximal mesh segment size - mparams.maxh = hyp->GetMaxSize(); + mparams.maxh = hyp->GetMaxSize(); // maximal mesh element linear size - mparams.minh = hyp->GetMinSize(); + mparams.minh = hyp->GetMinSize(); // minimal number of segments per edge mparams.segmentsperedge = hyp->GetNbSegPerEdge(); // rate of growth of size between elements - mparams.grading = hyp->GetGrowthRate(); + mparams.grading = hyp->GetGrowthRate(); // safety factor for curvatures (elements per radius) mparams.curvaturesafety = hyp->GetNbSegPerRadius(); // create elements of second order - mparams.secondorder = hyp->GetSecondOrder() ? 1 : 0; + mparams.secondorder = hyp->GetSecondOrder() ? 1 : 0; // quad-dominated surface meshing // only triangles are allowed for volumic mesh (before realizing IMP 0021676) //if (!_isVolume) - mparams.quad = hyp->GetQuadAllowed() ? 1 : 0; - _optimize = hyp->GetOptimize(); - _fineness = hyp->GetFineness(); + mparams.quad = hyp->GetQuadAllowed() ? 1 : 0; + _optimize = hyp->GetOptimize(); + _fineness = hyp->GetFineness(); + mparams.uselocalh = hyp->GetSurfaceCurvature(); + netgen::merge_solids = hyp->GetFuseEdges(); _simpleHyp = NULL; SMESH_Gen_i* smeshGen_i = SMESH_Gen_i::GetSMESHGen(); @@ -2116,8 +2121,9 @@ bool NETGENPlugin_Mesher::Compute() " growth rate = " << mparams.grading << "\n" " elements per radius = " << mparams.curvaturesafety << "\n" " second order = " << mparams.secondorder << "\n" - " quad allowed = " << mparams.quad); - //cout << " quad allowed = " << mparams.quad<rdbuf() ); +#endif _ngMesh = Ng_NewMesh(); } diff --git a/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx b/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx index 4c4fea2..cd5b8c7 100644 --- a/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx +++ b/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx @@ -283,7 +283,8 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh, // MESHCONST_ANALYSE step may lead to a failure, so we make an attempt // w/o MESHCONST_ANALYSE at the second loop int err = 1; - for ( int iLoop = 0; iLoop < 2; iLoop++ ) + int iLoop = netgen::mparam.uselocalh ? 0 : 1; // uselocalh depends on + for ( ; iLoop < 2; iLoop++ ) { bool isMESHCONST_ANALYSE = false; InitComputeError(); -- 2.39.2