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