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