53
54
55
56 USE mat_elem_mod
61 use law42c_ini_mod
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "mvsiz_p.inc"
70
71
72
73#include "param_c.inc"
74#include "vect01_c.inc"
75
76
77
78 INTEGER ,INTENT(IN) :: NUMMAT
79 INTEGER NEL,NLAY,NIX,NSIGSH,NUMEL,IGTYP,PROPID,IR,IS,IREP,IGMAT,IMAT,IPROP,
80 . IDRAPE ,NPT_ALL,NUMEL_DRAPE
81 INTEGER IGEO(NPROPGI,*),IX(NIX,*),PTSH(*),IORTHLOC(MVSIZ),
82 . IPM(NPROPMI,*),ISUBSTACK,IGEO_STACK(*)
83 INTEGER , DIMENSION(NUMEL_DRAPE) :: INDX
85 . pm(*),geo(npropg,*),skew(lskew,*),aldt(*),
86 . sigsh(nsigsh,*),shang(*),geo_stack(*),x(3,*)
87 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
88 TYPE (STACK_PLY) :: STACK
89 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,
90 . x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4
91 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
92
93
94
95 INTEGER IT,IL,NUVAR,NPTT,ILAW,NUPARAM
97 . vx(mvsiz),vy(mvsiz),vz(mvsiz),phi1(npt_all,mvsiz),phi2(npt_all,mvsiz)
99 . coor1(npt_all,mvsiz),coor2(npt_all,mvsiz),coor3(npt_all,mvsiz),
100 . coor4(npt_all,mvsiz)
101 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
103 . DIMENSION(:),POINTER :: uvar,dir1,dir2
104 TYPE(G_BUFEL_) ,POINTER :: GBUF
105 TYPE(L_BUFEL_) ,POINTER :: LBUF
106 TYPE(BUF_LAY_) ,POINTER :: BUFLY
107 TYPE(DRAPE_) :: DRAPE(NUMELC_DRAPE + NUMELTG_DRAPE)
108
109 coor1 = zero
110 coor2 = zero
111 coor3 = zero
112 coor4 = zero
113
114 gbuf => elbuf_str%GBUF
115
117 . lft ,llt ,nft ,nlay ,numel ,
118 . nsigsh ,nix ,ix ,igeo ,geo ,
119 . skew ,sigsh ,ptsh ,phi1 ,phi2 ,
120 . vx ,vy ,vz ,coor1 ,coor2 ,
121 . coor3 ,coor4 ,iorthloc ,isubstack ,stack ,
122 . irep ,elbuf_str ,drape ,shang ,x ,
123 . geo_stack ,e3x ,e3y ,e3z ,
124 . gbuf%BETAORTH,x1 ,x2 ,y1 ,y2 ,
125 . z1 ,z2 ,nel ,gbuf%G_ADD_NODE,gbuf%ADD_NODE,
126 . npt_all ,idrape ,indx)
127
128
129 IF(igtyp == 51 .OR. igtyp == 52 .OR. igmat > 0) THEN
131 . igeo ,geo ,vx ,vy ,vz ,
132 . phi1 ,phi2 ,coor1 ,coor2 ,coor3 ,
133 . coor4 ,iorthloc ,nlay ,irep ,isubstack,
134 . stack ,geo_stack ,igeo_stack,ir ,is ,
135 . nel ,imat ,iprop ,
136 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
137 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
138 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
139 . npt_all ,idrape)
140
141 ELSEIF (mtn == 27) THEN
143 . geo ,igeo ,pm ,ipm ,ix ,nix,
144 . nlay,ir ,is ,imat )
145 ELSEIF (mtn==15 .or. mtn==19 .or. mtn==25 .or. mtn >= 28) THEN
146 IF (mtn == 19 .and. igtyp /= 9) THEN
148 . anmode=aninfo,
149 . msgtype=msgerror,
150 . i1=ix(1,1))
151 ENDIF
152
154 . igeo ,geo ,vx ,vy ,vz ,
155 . phi1 ,phi2 ,coor1 ,coor2 ,coor3 ,
156 . coor4 ,iorthloc ,nlay ,irep ,isubstack,
157 . stack ,geo_stack ,igeo_stack,ir ,is ,
158 . nel ,imat ,iprop ,
159 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
160 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
161 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
162 . npt_all ,idrape )
163 ENDIF
164
165 IF ((mtn == 58 .or. mtn == 158) .AND.
166 . igtyp /= 16 .AND. igtyp /= 51 .AND. igtyp /= 52) THEN
168 . msgtype=msgerror,
169 . anmode=aninfo_blind_1,
170 . i1=propid,
171 . c1=titr,
172 . i2=mtn,
173 . i3=igtyp)
174 ELSEIF (mtn == 58 .or. mtn == 158 .OR. igtyp == 51 .OR. igtyp == 52) THEN
175
176 IF (idrape == 0) THEN
177 DO il = 1,nlay
178 nptt = elbuf_str%BUFLY(il)%NPTT
179 imat = elbuf_str%BUFLY(il)%IMAT
180 ilaw = elbuf_str%BUFLY(il)%ILAW
181 nuvar = elbuf_str%BUFLY(il)%NVAR_MAT
182 dir1 => elbuf_str%BUFLY(il)%DIRA
183 dir2 => elbuf_str%BUFLY(il)%DIRB
184 nuparam = mat_param(imat)%NUPARAM
185
186 IF (ilaw == 58) THEN
187 DO it=1,nptt
188 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
189 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
190 CALL cm58in3(irep ,dir1 ,dir2 ,mat_param(imat)%UPARAM,
191 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
192 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
193 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
194 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
195 ENDDO
196 ELSE IF (ilaw == 158) THEN
197 DO it=1,nptt
198 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
199 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
201 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
202 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
203 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
204 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
205 ENDDO
206 ENDIF
207 ENDDO
208 ELSE
209 DO il = 1,nlay
210 nptt = elbuf_str%BUFLY(il)%NPTT
211 imat = elbuf_str%BUFLY(il)%IMAT
212 ilaw = elbuf_str%BUFLY(il)%ILAW
213 nuvar = elbuf_str%BUFLY(il)%NVAR_MAT
214 nuparam = mat_param(imat)%NUPARAM
215
216 IF (ilaw == 58) THEN
217 DO it=1,nptt
218 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
219 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
220 dir1 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRA
221 dir2 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRB
222 CALL cm58in3(irep ,dir1 ,dir2 ,mat_param(imat)%UPARAM,
223 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
224 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
225 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
226 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
227 ENDDO
228 ELSE IF (ilaw == 158) THEN
229 DO it=1,nptt
230 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
231 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
232 dir1 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRA
233 dir2 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRB
235 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
236 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
237 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
238 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
239 ENDDO
240 ENDIF
241 ENDDO
242 ENDIF
243 ENDIF
244 IF (mtn == 42 .OR. mtn == 69 .OR. igtyp == 51 .OR. igtyp == 52) THEN
245 DO il = 1,nlay
246 nptt = elbuf_str%BUFLY(il)%NPTT
247 ilaw = elbuf_str%BUFLY(il)%ILAW
248 nuvar = elbuf_str%BUFLY(il)%NVAR_MAT
249
250 IF (ilaw == 42 .OR. mtn == 69) THEN
251 DO it=1,nptt
252 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
253 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
254 CALL law42c_ini(nuvar,uvar,llt)
255 ENDDO
256 ENDIF
257 ENDDO
258 ENDIF
259
260 RETURN
subroutine cm27in3(elbuf_str, geo, igeo, pm, ipm, ix, nix, nlay, ir, is, imat)
subroutine cm58in3(irep, dir1, dir2, uparam, uvar, aldt, nel, nuvar, tan_phi, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine corthdir(elbuf_str, igeo, geo, vx, vy, vz, phi1, phi2, coor1, coor2, coor3, coor4, iorthloc, nlay, irep, isubstack, stack, geo_stack, igeo_stack, ir, is, nel, imat, iprop, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, npt_all, idrape)
subroutine corthini(jft, jlt, nft, nlay, numel, nsigsh, nix, ix, igeo, geo, skew, sigsh, ptsh, phi1, phi2, vx, vy, vz, coor1, coor2, coor3, coor4, iorthloc, isubstack, stack, irep, elbuf_str, drape, angle, x, geo_stack, e3x, e3y, e3z, betaorth, x1, x2, y1, y2, z1, z2, nel, g_add_node, add_node, npt_all, idrape, indx)
subroutine law158_init(dir1, dir2, uvar, aldt, nel, nuvar, tan_phi, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)