Salome HOME
Merge branch 'V8_3_BR' into ngr/python3_dev
[modules/smesh.git] / src / Tools / ZCracksPlug / Zset.py
1
2 import os, tempfile, shutil
3 from . import utilityFunctions as uF
4 from .output import message
5
6 def medToGeo(medFile, geoFile, tmpdir, opt=[], verbose=0):
7   medLoc=os.path.dirname(medFile)
8   medName=os.path.basename(medFile)
9   inpFile=os.path.join(tmpdir,'import.inp')
10   zfile = open(inpFile,'w')
11   zfile.write('****mesher\n')
12   zfile.write(' ***mesh %s\n' %(geoFile.replace('.geo','')+'.geo'))
13   zfile.write('  **import med %s\n' %medName)
14   for x in opt:
15     zfile.write(x+'\n')
16   zfile.write('****return\n')
17   zfile.close()
18   commande='cd %s; Zrun -m %s' %(medLoc,inpFile)
19   if verbose!=0: commande+=' >> %s' %os.path.join(tmpdir,'log.msg')
20   res=os.system(commande)
21
22   return(res)
23
24   #os.remove(inpFile)
25
26
27 def geoToMed(medFile, geoFile, tmpdir, opt=[], verbose=0):
28   medLoc=os.path.dirname(medFile)
29   medName=os.path.basename(medFile)
30   inpFile=os.path.join(tmpdir,'export.inp')
31   zfile = open(inpFile,'w')
32   zfile.write('****mesher\n')
33   zfile.write(' ***mesh\n')
34   zfile.write('  **open %s\n' %geoFile)
35   for x in opt:
36     zfile.write(x+'\n')
37   zfile.write('  **export med %s\n' %medName)
38   zfile.write('****return\n')
39   zfile.close()
40   commande='cd %s; Zrun -m %s' %(medLoc,inpFile)
41   if verbose!=0: commande+=' >> %s' %os.path.join(tmpdir,'log.msg')
42   res=os.system(commande)
43   #print ' -------- '
44   #print res
45   #print ' -------- '
46   return(res)
47
48
49 def launchZcrack(minS, maxS,
50                 saneN, crackN, crackedN,
51                 grad, quad, extrL,
52                 nbLay, nbIter,
53                 Gvol, Gfac, Gedg, Gnod,
54                 surfOpt, tmpdir, cas2D, refine, verbose=0, ):
55
56   zfile = open(os.path.join(tmpdir,'insert.z7p'),'w')
57   zfile.write('   #include <Zcracks_base.z7p> \n')
58   zfile.write(' int main()\n{\n')
59   zfile.write('   init_var();\n')
60
61   if cas2D==True:
62     zfile.write('   if_2D=1;\n')
63     zfile.write('   thickness.resize(1);\n')
64     zfile.write('   thickness[0]=-1.;\n')
65
66   zfile.write('   format="geo";\n')
67   zfile.write('   gradation=%e;\n' %grad)
68   zfile.write('   min_size= %e;\n' %minS)
69   zfile.write('   max_size=%e;\n' %maxS)
70   zfile.write('   nb_velem=%d;\n' %(nbLay*2))
71   zfile.write('   nb_iter=%d;\n' %nbIter)
72   zfile.write('   sane_name="%s";\n' %saneN.replace('.geo',''))
73   #zfile.write('   crack_name="%s";\n' %crackN.replace('.geo',''))
74   zfile.write('   convert_surface("%s");\n' %crackN.replace('.geo',''))
75   zfile.write('   cracked_name="%s";\n' %crackedN.replace('.geo',''))
76
77   if Gfac!='': zfile.write('   faset_names="%s";\n' %(Gfac[0] if isinstance(Gfac, list) else Gfac))
78   if Gnod!='': zfile.write('   nset_names="%s";\n' %(Gnod[0] if isinstance(Gnod, list) else Gnod))
79   if Gvol!='': zfile.write('   elset_names="%s";\n' %(Gvol[0] if isinstance(Gvol, list) else Gvol))
80   if Gedg!='': zfile.write('   liset_names="%s";\n' %(Gedg[0] if isinstance(Gedg, list) else Gedg))
81   if surfOpt!='':
82     zfile.write('   yams_options="%s";\n' %surfOpt)
83
84   if refine: zfile.write('   if_must_refine=1;\n')
85
86   if extrL<=1.E-12:
87     zfile.write('   if_must_define_elset=0;\n')
88   else:
89     zfile.write('   if_must_define_elset=1;\n')
90     if extrL==[]:
91       zfile.write('   elset_radius=%e;\n' %maxS)
92     else:
93       zfile.write('   elset_radius=%e;\n' %extrL)
94
95   zfile.write('   nice_cut(20.0);\n}\n\n')
96   zfile.close()
97   commande='Zrun -zp %s' %(os.path.join(tmpdir,'insert.z7p'))
98   if verbose!=0: commande+=' >> %s' %os.path.join(tmpdir,'log.msg')
99   res=os.system(commande)
100   #print ' -------- '
101   #print res
102   #print ' -------- '
103   return(res)
104
105
106
107 def insertCrack(data, names, tmpdir='./zcracks_temp', verbose=0):
108
109   saneN=names['saneGeoName']
110   crackN=names['crackGeoName']
111   crackedN=names['crackedGeoName']
112
113   minS=data['minSize'][0]
114   maxS=data['maxSize'][0]
115   extrL=data['extractLength'][0]
116
117   grad = data['gradation'][0] if 'gradation' in list(data.keys()) else 1.3
118   quad = data['quad'] if 'quad' in list(data.keys()) else False
119   cas2D = data['is2D'] if 'is2D' in list(data.keys()) else False
120   refine = data['refine'] if 'refine' in list(data.keys()) else False
121   nbLay = data['layers'][0] if 'layers' in list(data.keys()) else 5
122   nbIter = data['iterations'][0] if 'iterations' in list(data.keys()) else 2
123
124   Gvol = data['grVol'] if 'grVol' in list(data.keys()) else ''
125   Gfac = data['grFace'] if 'grFace' in list(data.keys()) else ''
126   Gedg = data['grEdge'] if 'grEdge' in list(data.keys()) else ''
127   Gnod = data['grNodes'] if 'grNodes' in list(data.keys()) else ''
128   surfOpt = data['surfopt'] if 'surfopt' in list(data.keys()) else ''
129
130
131   if not os.path.isdir(tmpdir): os.mkdir(tmpdir)
132   curDir=os.getcwd()
133   os.chdir(tmpdir)
134   res=launchZcrack(minS, maxS, saneN, crackN, crackedN,grad, quad, extrL,
135                 nbLay, nbIter,Gvol, Gfac, Gedg, Gnod,surfOpt, tmpdir, cas2D, refine, verbose)
136   os.chdir(curDir)
137   return(res)
138
139
140 #def TUI(data, names, tmpdir='./zcracks_temp', verbose=0)