52
53
54
56 USE elbufdef_mod
59 USE multi_fvm_mod
62 use element_mod , only : nixq,nixc,nixtg
63
64
65
66#include "implicit_f.inc"
67
68
69
70#include "vect01_c.inc"
71#include "mvsiz_p.inc"
72#include "com01_c.inc"
73#include "com04_c.inc"
74#include "param_c.inc"
75
76
77
79 . shell_vector(3,*),x(3,numnod),v(3,numnod),w(3,numnod),d(3,numnod),thke(*),ehour(*),geo(npropg,numgeo),
80 . anim(*),pm(npropm,nummat),err_thk_sh4(*), err_thk_sh3(*)
81 INTEGER IPARG(NPARG,NGROUP),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),EL2FA(*),
82 . IXQ(NIXQ,NUMELQ),IFUNC,NBF,
83 . IADP(*),NBF_L, NBPART,IADG(NSPMD,*),IPM(NPROPMI,NUMMAT),
84 . IGEO(NPROPGI,NUMGEO),INVERT(*), NV46,ID_ELEM(*),ITY_ELEM(*),
85 . INFO1,INFO2,IS_WRITTEN_SHELL(*),IPARTC(*),IPARTTG(*),H3D_PART(*),
86 . LAYER_INPUT ,IPT_INPUT,GAUSS_INPUT,PLY_INPUT,IUVAR_INPUT,NG
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 INTEGER , NEL, NPTR, NPTS, NPTT, NLAY, ILAY, MLW, JTURB,
96 . OFFSET,IHBE,NPG,MPT,IPT,ISUBSTACK,ITHK,NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*)
97 INTEGER NPT_ALL,IPLY,
98 . IOK_PART(MVSIZ),JJ(5),IUVAR,
99 . IS_WRITTEN_VALUE(MVSIZ)
100
101 TYPE(G_BUFEL_) ,POINTER :: GBUF
102
103
104
105
107 2 mlw ,nel ,nft ,iad ,ity ,
108 3 npt ,jale ,ismstr ,jeul ,jturb ,
109 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
110 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
111 6 irep ,iint ,igtyp ,israt ,isrot ,
112 7 icsen ,isorth ,isorthg ,ifailure,jsms )
113
114 IF(mlw /= 13) THEN
115
116 nft = iparg(3,ng)
117 iad = iparg(4,ng)
118 isubstack = iparg(71,ng)
119
120 iok_part(1:nel) = 0
121
122 DO i=1,5
123 jj(i) = nel*(i-1)
124 ENDDO
125
126 DO i=1,nel
127 is_written_value(i) = 0
128 ENDDO
129
130
131
132 IF (ity == 3.OR.ity == 7) THEN
133
134 gbuf => elbuf_tab(ng)%GBUF
135 npt = iparg(6,ng)
136 ihbe = iparg(23,ng)
137 irep = iparg(35,ng)
138 igtyp = iparg(38,ng)
139 ithk = iparg(28,ng)
140 mpt = iabs(npt)
141 nptr = elbuf_tab(ng)%NPTR
142 npts = elbuf_tab(ng)%NPTS
143 nptt = elbuf_tab(ng)%NPTT
144 nlay = elbuf_tab(ng)%NLAY
145 npg = nptr*npts
146
147 IF (ity == 3) offset = 0
148 IF (ity == 7) offset = numelc
149
150 DO i=1,nel
151 IF (ity == 3) THEN
152 id_elem(offset+nft+i) = ixc(nixc,nft+i)
153 ity_elem(offset+nft+i) = 3
154 IF( h3d_part(ipartc(nft+i)) == 1) iok_part(i) = 1
155 ELSEIF (ity == 7) THEN
156 id_elem(offset+nft+i) = ixtg(nixtg,nft+i)
157 ity_elem(offset+nft+i) = 7
158 IF( h3d_part(iparttg(nft+i)) == 1) iok_part(i) = 1
159 ENDIF
160 ENDDO
161
162 IF (igtyp == 51 .OR. igtyp == 52) THEN
163 npt_all = 0
164 DO ipt=1,nlay
165 npt_all = npt_all + elbuf_tab(ng)%BUFLY(ipt)%NPTT
166 ENDDO
167 IF (nlay == 1) mpt =
max(1,npt_all)
168 ENDIF
169
170 ilay = layer_input
171 ipt = ipt_input
172 iply = ply_input
173
174 iuvar = iuvar_input
175 IF (ilay == -2) ilay = 1
176 IF (ilay == -3) ilay = nlay
177 IF (ipt == -2) ipt = 1
178 IF (ipt == -3) ipt = npt
179 value(1:3) = zero
180
181 DO i=1,nel
182 shell_vector(1:3,offset+nft+i) = zero
183 ENDDO
184
185
186 IF (keyword == 'VECT/VEL') THEN
187
188 IF (mlw == 151) THEN
189 DO i = 1, nel
190 value(1) = multi_fvm%VEL(1, i + nft)
191 value(2) = multi_fvm%VEL(2, i + nft)
192 value(3) = multi_fvm%VEL(3, i + nft)
194 . VALUE)
195 ENDDO
196 ELSE
197 DO i=1,nel
199 value(1) = gbuf%MOM(jj(1) + i) / gbuf%RHO(i)
200 value(2) = gbuf%MOM(jj(2) + i) / gbuf%RHO(i)
201 value(3) = gbuf%MOM(jj(3) + i) / gbuf%RHO(i)
202 CALL h3d_write_vector(iok_part,is_written_shell,shell_vector,i,offset,nft,
VALUE)
203 ENDIF
204 ENDDO
205 ENDIF
206
207 ELSEIF (keyword == 'VECT/ACC') THEN
208
209 IF (mlw == 151 .AND. ALLOCATED(multi_fvm%ACC)) THEN
210 DO i = 1, nel
211 value(1) = multi_fvm%ACC(1, i + nft)
212 value(2) = multi_fvm%ACC(2, i + nft)
213 value(3) = multi_fvm%ACC(3, i + nft)
214 CALL h3d_write_vector(iok_part,is_written_shell,shell_vector,i,offset,nft,
VALUE)
215 ENDDO
216 ENDIF
217
218 ENDIF
219 ENDIF
220
221
222 ENDIF
223
224 RETURN
subroutine h3d_write_vector(iok_part, is_written, vector, i, offset, nft, value)
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