55 2 XMAS ,IN ,NVC ,DTELEM,
56 3 XREFTG,OFFSET,NEL ,ITHK ,THK ,
57 4 ISIGSH,SIGSH ,STIFN ,STIFR,PARTSAV ,
58 5 V ,IPART ,MSTG ,INTG ,PTG,
59 8 SKEW ,ISH3N ,NSIGSH ,IGEO ,IPM ,
60 9 IUSER ,ETNOD,NSHNOD ,STTG ,PTSH3N,
61 A BUFMAT,SH3TREE ,MCP ,MCPS , TEMP ,
62 B IPARG,CPT_ELTENS,PART_AREA ,NPF, TF ,
63 C SH3TRIM,ISUBSTACK,STACK,RNOISE ,DRAPE,
64 D SH3ANG,GEO_STACK,IGEO_STACK,STRTG,
65 E PERTURB,IYLDINI,ELE_AREA,NLOC_DMG,
66 G IDRAPE ,DRAPEG,MAT_PARAM,GLOB_THERM)
81#include "implicit_f.inc"
93#include "vect01_c.inc"
98 INTEGER IXTG(NIXTG,*),IPART(*), OFFSET, NEL, ITHK, ISIGSH,
99 . ISH3N,NSIGSH,NLAY,NPTR,NPTS,NPTT,IL,IR,IS,IT,IYLDINI,
100 . IGEO(NPROPGI,*),IPM(NPROPMI,*),IUSER, NSHNOD(*),NPF(*),
101 . PTSH3N(*), SH3TREE(*),IPARG(*),CPT_ELTENS,SH3TRIM(*),
102 . ISUBSTACK,IGEO_STACK(*),PERTURB(NPERTURB),
104 . PM(NPROPM,*),X(*),GEO(NPROPG,*),XMAS(*),
105 . IN(*),DTELEM(*), XREFTG(3,3,*),THK(*),SIGSH(NSIGSH,*),
106 . STIFN(*),STIFR(*),(20,*), V(*), SKEW(LSKEW,*),
107 . MSTG(*),INTG(*),PTG(3,*),ETNOD(*), STTG(*),BUFMAT(*),
108 . MCP(*),MCPS(*),TEMP(*),PART_AREA(*),TF(*),
109 . RNOISE(*),SH3ANG(*),GEO_STACK(*),STRTG(*),ELE_AREA(*)
110 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
111 TYPE (STACK_PLY) :: STACK
112 TYPE (GROUP_PARAM_) :: GROUP_PARAM
113 TYPE (NLOCAL_STR_) :: NLOC_DMG
114 TYPE (DRAPE_) :: DRAPE(NUMELC_DRAPE + NUMELTG_DRAPE)
115 TYPE (DRAPEG_) :: DRAPEG
116 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
117 TYPE (glob_therm_) ,
intent(in) :: glob_therm
121 INTEGER I,J,NDEPAR,IGTYP,IMAT,IPROP,IGMAT,NVC,IHBE,NPG,MPT,
122 . PTM,,PTS,NUVAR,NUVARR,ID,LENF,LENM,LENS,IREP,IPG
123 INTEGER JJ(5),IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ),
124 . mat(mvsiz),pid(mvsiz),ngl(mvsiz)
125 INTEGER LAYNPT_MAX,LAY_MAX,NPT_ALL
127 .
DIMENSION(MVSIZ) :: px2,py2,px3,py3,x2s,y2s,x3s,y3s,
128 .
area,aldt,iorthloc,dt
129 my_real x1(mvsiz), x2(mvsiz), x3(mvsiz) ,x4(mvsiz),
130 . y1(mvsiz), y2(mvsiz), y3(mvsiz),y4(mvsiz),
131 . z1(mvsiz), z2(mvsiz), z3(mvsiz),z4(mvsiz),
132 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
133 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
134 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
135 . x31(mvsiz), y31(mvsiz), z31(mvsiz
136 . x2l(mvsiz), x3l(mvsiz), y3l(mvsiz)
137 my_real,
ALLOCATABLE,
DIMENSION(:) :: dir_a,dir_b
139 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: INDX
141 .
DIMENSION(:) ,
POINTER :: UVAR
142 parameter(laynpt_max = 10)
143 parameter(lay_max = 100)
144 INTEGER MATLY(MVSIZ*LAY_MAX)
146 . POSLY(MVSIZ,LAY_MAX*LAYNPT_MAX)
148 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
149 TYPE(L_BUFEL_) ,
POINTER :: LBUF
150 TYPE(g_bufel_) ,
POINTER :: GBUF
152 gbuf => elbuf_str%GBUF
155 iprop = ixtg(nixtg-1,1+nft)
157 igtyp = igeo(11,iprop)
158 igmat = igeo(98,iprop)
162 nlay = elbuf_str%NLAY
163 nptr = elbuf_str%NPTR
164 npts = elbuf_str%NPTS
165 nptt = elbuf_str%NPTT
167 IF (npt /= 0) npt = nptt*nlay
168 lenf = nel*gbuf%G_FORPG/npg
169 lenm = nel*gbuf%G_MOMPG/npg
170 lens = nel*gbuf%G_STRPG/npg
181 CALL c3coori(x,xreftg(1,1,nft+1),ixtg(1,nft+1),ngl,
182 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
183 . z1 ,z2 ,z3 ,ix1 ,ix2 ,ix3 )
184 CALL c3veok3(nvc ,ix1 ,ix2 ,ix3 )
186 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
187 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
188 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
189 . x31, y31, z31 ,x2l ,x3l ,y3l )
193 IF (jthe == 0 .and. glob_therm%NINTEMP > 0)
THEN
194 CALL initemp_shell(elbuf_str,temp,nel,numnod,numeltg,3,nixtg,ixtg)
198 ALLOCATE(indx(numeltg))
200 indx(1:numeltg) = drapeg%INDX(numelc + 1 : numelc + numeltg)
204 CALL c3inmas(x,xreftg(1,1,nft+1),ixtg,geo,pm,xmas,in,thk,
205 . partsav,v,ipart(nft+1),mstg(nft+1),intg(nft+1),
206 . ptg(1,nft+1),igeo ,imat ,iprop ,
area ,
207 . etnod,nshnod,sttg(nft+1),sh3tree,mcp ,
208 . mcps(nft+1) , temp,sh3trim,isubstack,nlay,
209 . elbuf_str,stack,gbuf%THK_I,rnoise,drape ,
210 . perturb,ix1 ,ix2 ,ix3 ,glob_therm%NINTEMP
211 . x2l ,x3l ,y3l ,idrape , indx)
215 npt_all = npt_all + elbuf_str%BUFLY(il)%NPTT
218 IF(npt_all == 0 ) npt_all = nlay
219 IF (iparg(6) == 0.OR.npt==0) mpt=0
221 IF((igtyp == 51 .OR. igtyp == 52) .AND. idrape > 0)
THEN
222 ALLOCATE(dir_a(npt_all*nel*2))
223 ALLOCATE(dir_b(npt_all*nel*2))
227 ALLOCATE(dir_a(nlay*nel*2))
228 ALLOCATE(dir_b(nlay*nel*2))
238 nuvar =
max(nuvar,ipm(8,imat))
239 nuvarr =
max(nuvarr,ipm(221,imat))
244 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
245 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
246 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
250 IF ((imasadd > 0).OR.(nloc_dmg%IMOD > 0))
THEN
254 ele_area(numelc+i+nft) =
area(i)
255 IF (gbuf%G_AREA > 0) gbuf%AREA(i) =
area(i)
259 CALL cdkderii(lft,llt,pm,geo,px2,py2,px3,py3,
260 . stifn ,stifr ,ixtg(1,nft+1),thk, sh3tree,
261 . aldt ,bufmat ,ipm ,igeo,stack%PM
262 . isubstack,strtg(nft+1),group_param,
263 . imat ,iprop,
area, dt ,
264 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
265 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
266 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
268 CALL c1buf3(geo,gbuf%THK,gbuf%OFF,thk,ksh3tree,sh3tree)
273 . nptr,npts,nptt,igtyp)
276 IF (( isigsh/=0 .OR. ithkshel == 2) .and. mpt>0)
THEN
278 . elbuf_str ,lft ,llt ,geo ,igeo ,
279 . mat ,pid ,matly ,posly ,igtyp ,
280 . nlay ,mpt ,isubstack ,stack ,drape ,
281 . nft ,gbuf%THK ,nel ,idrape ,
stdrape ,
292 CALL cmaini3(elbuf_str,pm ,geo ,nel ,nlay ,
293 . skew ,igeo ,ixtg(1,nft+1),nixtg ,numeltg ,
294 . nsigsh ,sigsh ,ptsh3n ,igtyp
295 . ipm ,id ,aldt ,mat_param,
296 . ir ,is ,isubstack,stack ,irep
297 . drape ,sh3ang(nft+1),geo_stack,igeo_stack,
298 . igmat ,imat ,iprop ,nummat,
299 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
300 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
301 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,x ,
302 . npt_all ,idrape ,
stdrape ,indx)
306 IF ((isigsh /= 0 .OR. ithkshel == 2).AND. ish3n == 30 )
THEN
308 .
CALL corth3(elbuf_str,dir_a ,dir_b ,lft ,llt ,
310 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
311 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
312 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
316 1 lft ,llt ,nft ,mpt ,istrain,
317 2 gbuf%THK ,gbuf%EINT,gbuf%STRPG(pts+1),gbuf%HOURG,
318 3 gbuf%FORPG(ptf+1),gbuf%MOMPG(ptm+1),sigsh ,nsigsh ,numeltg ,
319 4 ixtg ,nixtg ,numsh3n ,ptsh3n
320 5 ir ,is ,ir ,npg ,gbuf%G_PLA,
321 6 gbuf%PLA,thk ,igtyp ,nel ,isigsh ,
322 7 e1x ,e2x ,e3x ,e1y ,e2y ,e3y,
323 8 e1z ,e2z ,e3z ,dir_a ,dir_b,posly )
324 ELSEIF ( ithkshel == 1 .AND. ish3n == 30 )
THEN
325 CALL thickini(lft ,llt ,nft ,ptsh3n,numeltg,
326 2 gbuf%THK,thk ,ixtg ,nixtg ,nsigsh ,
330 IF (iuser == 1.AND.mtn>=28)
THEN
332 1 lft ,llt ,nft ,nel ,istrain ,
333 2 sigsh ,nsigsh ,numelc ,ixtg ,nixtg ,
334 3 numsh3n ,ptsh3n ,ir ,is ,npt ,
335 4 igtyp ,igeo ,nlay ,npg ,ipg )
338 IF (iyldini == 1 .AND. (mtn== 36.OR. mtn==87))
THEN
340 1 lft ,llt ,nft ,nel ,istrain ,
341 2 sigsh ,nsigsh ,numelc ,ixtg ,nixtg ,
342 3 numsh3n ,ptsh3n ,ir ,is ,npt ,
343 4 igtyp ,igeo ,nlay ,npg ,ipg )
349 CALL cfailini4(elbuf_str,nptr ,npts ,nptt ,nlay
350 . sigsh ,nsigsh ,ptsh3n ,rnoise ,perturb ,
351 . mat_param,aldt ,thk )
355 IF (istrain == 1 .AND. nxref > 0)
THEN
356 uvar => elbuf_str%BUFLY(1)%MAT(1,1,1)%VAR
357 CALL cdkepsini(elbuf_str,mat_param(imat),
358 . lft ,llt ,ismstr ,mtn ,ithk ,
359 . pm ,geo ,ixtg(1,nft+1),x ,xreftg(1,1,nft+1),
360 . gbuf%FOR,gbuf%THK,gbuf%EINT,gbuf%STRA,
361 . px2 ,py2 ,px3 ,py3 ,x2s ,
362 . y2s ,x3s ,y3s ,gbuf%OFF ,imat ,
364 . nlay ,dir_a ,dir_b ,gbuf%SIGI ,npf ,
367 CALL c3epschk(lft, llt,nft, pm, geo,ixtg(1,nft+1),gbuf%STRA,thk,
370 IF (ismstr == 1) iparg(9)=11
372 IF (ismstr == 11 .OR.(ismstr==1 .AND. mtn==19))
THEN
374 elbuf_str%GBUF%SMSTR(jj(1)+i) = x2s(i)
375 elbuf_str%GBUF%SMSTR(jj(2)+i) = y2s(i)
376 elbuf_str%GBUF%SMSTR(jj(3)+i) = x3s(i)
377 elbuf_str%GBUF%SMSTR(jj(4)+i) = y3s(i)
386 gbuf%FORPG(ptf+jj(1)+i) = gbuf%FOR(jj(1)+i)
387 gbuf%FORPG(ptf+jj(2)+i) = gbuf%FOR(jj(2)+i)
388 gbuf%FORPG(ptf+jj(3)+i) = gbuf%FOR(jj(3)+i)
390 gbuf%MOMPG(ptm+jj(1)+i) = gbuf%MOM(jj(1)+i)
391 gbuf%MOMPG(ptm+jj(2)+i) = gbuf%MOM(jj(2)+i)
392 gbuf%MOMPG(ptm+jj(3)+i) = gbuf%MOM(jj(3)+i)
394 IF (mtn == 58 .and. ir > 1)
THEN
395 uvar => elbuf_str%BUFLY(1)%MAT(ir,is,1)%VAR
396 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
398 uvar(i) = elbuf_str%BUFLY(1)%MAT(1,1,1)%VAR(i)
407 IF (igtyp /= 0 .AND. igtyp /= 1 .AND.
408 . igtyp /= 9 .AND. igtyp /= 10 .AND.
409 . igtyp /= 11 .AND. igtyp /= 16 .AND.
410 . igtyp /= 17 .AND. igtyp /= 51 .AND.
417 ndepar=numels+numelc+numelt+numelp+numelr+nft
419 dtelem(ndepar+i) = dt(i)
424 IF (gbuf%G_VOL > 0) gbuf%VOL(i) =
area(i)*gbuf%THK(i)
429 IF(
ALLOCATED(indx))
DEALLOCATE(indx)