53
54
55
57 USE elbufdef_mod
60 USE multi_fvm_mod
63 use element_mod , only : nixq,nixc,nixtg
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "vect01_c.inc"
72#include "mvsiz_p.inc"
73#include "com01_c.inc"
74#include "com04_c.inc"
75#include "param_c.inc"
76
77
78
80 . quad_vector(3,*),x(3,numnod),v(3,numnod),w(3,numnod),thke(*),ehour(*),geo(npropg,numgeo),
81 . anim(*),pm(npropm,*),err_thk_sh4(*), err_thk_sh3(*)
82 INTEGER IPARG(NPARG,NGROUP),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),EL2FA(*),
83 . IXQ(NIXQ,NUMELQ),IFUNC,NBF,
84 . IADP(*),NBF_L, NBPART,IADG(NSPMD,*),IPM(NPROPMI,NUMMAT),
85 . IGEO(NPROPGI,NUMGEO),INVERT(*), NV46,ID_ELEM(*),
86 . INFO1,INFO2,IS_WRITTEN_QUAD(*),IPARTQ(*),IPARTTG(*),H3D_PART(*),
87 . LAYER_INPUT ,IPT_INPUT,GAUSS_INPUT,PLY_INPUT,IUVAR_INPUT,
88 . IR_INPUT,IS_INPUT,IT_INPUT,IS_WRITTEN_VECTOR(MVSIZ)
89 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
90 TYPE (STACK_PLY) :: STACK
91 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
92 TYPE (MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
93
94
95
97 . dam1(mvsiz),dam2(mvsiz),
98 . wpla(mvsiz),dmax(mvsiz),wpmax(mvsiz),fail(mvsiz),
99 . epst1(mvsiz),epst2(mvsiz),epsf1(mvsiz),epsf2(mvsiz),
100 . value(3),ff0,gg0,hh0,ll0,mm0,nn0,mass(mvsiz)
102 . off, p,vonm2,s1,s2,s12,s3,dmgmx,fac,
103 . dir1_1,dir1_2,dir2_1,dir2_2,aa,bb,v1,v2,v3,x21,x32,x34,
104 . x41,y21,y32,y34,y41,z21,z32,z34,z41,suma,vr,vs,x31,y31,
105 . z31,e11,e12,e13,e21,e22,e23,sum,
area,x2l,var,
106 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,rx,ry,rz,sx,sy,sz,
107 . vg(5),vly(5),ve(5),bufmat(*),
108 . s11,s22,s33,s4,s5,s6,crit,value1,value2
110 . evar(3,mvsiz)
111 INTEGER I, NG, NEL, NPTR, NPTS, NPTT, NLAY, ILAY,
112 . IR,IS,IT,IL,MLW, NUVAR,IUS,LENF,PTF,PTM,PTS,NFAIL,
113 . N,NN,K,K1,K2,JTURB,MT,IMID,IALEL,IPID,ISH3N,NNI,
114 . NN1,NN2,NN3,NN4,NN5,NN6,NN9,NF,BUF,NVARF,
115 . OFFSET,IHBE,NPTM,NPG, MPT,IPT,IADD,IADR,IPMAT,IFAILT,
116 . IIGEO,IADI,ISUBSTACK,ITHK,NERCVOIS(*),NESDVOIS(*),
117 . LERCVOIS(*),LESDVOIS(*),ID_PLY,NB_PLYOFF,IOK,IADBUF,NUPARAM,
118 . IMAT,IVISC,IPOS,ITRIMAT
119 INTEGER
120 . PTE(4),PTP(4),PTMAT(4),PTVAR(4),NPT_ALL,IPLY,
121 . ID_ELEM_TMP(MVSIZ),NIX,IOK_PART(MVSIZ),JJ(6),NPGT,IUVAR,
122 . IS_WRITTEN_VALUE(MVSIZ)
123
124
125 TYPE(G_BUFEL_) ,POINTER :: GBUF
126 TYPE(L_BUFEL_) ,POINTER :: LBUF
127
128
130 . DIMENSION(:), POINTER :: uvar
131
132
133
134 TARGET :: bufmat
135
136 ilay = layer_input
137 iuvar = iuvar_input
138 ir = ir_input
139 is = is_input
140 it = it_input
141
142 DO i=1,numelq
143 is_written_quad(i) = 0
144 ENDDO
145
146 DO 900 ng=1,ngroup
148 2 mlw ,nel ,nft ,iad ,ity ,
149 3 npt ,jale ,ismstr ,jeul ,jturb ,
150 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
151 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
152 6 irep ,iint ,igtyp ,israt ,isrot ,
153 7 icsen ,isorth ,isorthg ,ifailure,jsms )
154 IF(mlw /= 13) THEN
155 nft =iparg(3,ng)
156 iad =iparg(4,ng)
157 isubstack = iparg(71,ng)
158 ivisc = iparg(61,ng)
159 iok_part(1:nel) = 0
160 lft=1
161 llt=nel
162
163 DO i=1,6
164 jj(i) = nel*(i-1)
165 ENDDO
166
167 value(1:3) = zero
168 DO i=1,nel
169 is_written_value(i) = 0
170 ENDDO
171 evar(1:3,1:nel) = zero
172 is_written_vector(1:nel) = 0
173
174
175
176 IF (ity == 2) THEN
177
178 gbuf => elbuf_tab(ng)%GBUF
179 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
180 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
181 jale=(iparg(7,ng)+iparg(11,ng))
182 jturb=iparg(12,ng)*jale
183 nptr = elbuf_tab(ng)%NPTR
184 npts = elbuf_tab(ng)%NPTS
185 nptt = elbuf_tab(ng)%NPTT
186 nlay = elbuf_tab(ng)%NLAY
187 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
188
189 DO i=1,nel
190 id_elem(nft+i) = ixq(nixq,nft+i)
191 IF( h3d_part(ipartq(nft+i)) == 1) iok_part(i) = 1
192 ENDDO
193
194 DO i=1,nel
195 quad_vector(1:3,nft+i) = zero
196 ENDDO
197
198 iuvar = iuvar_input
199
200 IF (keyword == 'VECT/VEL') THEN
201
202 IF (mlw == 151) THEN
203 DO i = 1, nel
204 evar(1,i) = multi_fvm%VEL(1, i + nft)
205 evar(2,i) = multi_fvm%VEL(2, i + nft)
206 evar(3,i) = multi_fvm%VEL(3, i + nft)
207 is_written_vector(i) = 1
208 ENDDO
209 ELSE
210 DO i=1,nel
212 evar(1,i) = gbuf%MOM(jj(1) + i) / gbuf%RHO(i)
213 evar(2,i) = gbuf%MOM(jj(2) + i) / gbuf%RHO(i)
214 evar(3,i) = gbuf%MOM(jj(3) + i) / gbuf%RHO(i)
215 is_written_vector(i) = 1
216 ENDIF
217 ENDDO
218 ENDIF
219 IF (jcvt == 0 .OR. isorth /= 0) THEN
220
221 CALL qrota_vect(x,ixq(1,nft+1),jcvt,evar,gbuf%GAMA,nel)
222 ENDIF
223
224 ELSEIF (keyword == 'VECT/ACC') THEN
225
226 IF (mlw == 151 .AND. ALLOCATED(multi_fvm%ACC)) THEN
227 DO i = 1, nel
228 evar(1,i) = multi_fvm%ACC(1, i + nft)
229 evar(2,i) = multi_fvm%ACC(2, i + nft)
230 evar(3,i) = multi_fvm%ACC(3, i + nft)
231 is_written_vector(i) = 1
232 ENDDO
233 ENDIF
234
235 ENDIF
236
237 CALL h3d_write_vectors(iok_part,is_written_quad,quad_vector,nel,0,nft,evar,is_written_vector)
238
239 ENDIF
240
241
242 ENDIF
243 900 CONTINUE
244
245 RETURN
subroutine h3d_write_vectors(iok_part, is_written, vector, nel, offset, nft, value, is_written_vector)
subroutine area(d1, x, x2, y, y2, eint, stif0)
type(alefvm_param_), target alefvm_param
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
integer, parameter ncharline100
subroutine qrota_vect(x, ixq, kcvt, vect, gama, nel)