64
65
66
67 USE python_funct_mod
68 USE elbufdef_mod
71 USE sensor_mod
72 USE preload_axial_mod
73
74
75
76#include "implicit_f.inc"
77
78
79
80#include "mvsiz_p.inc"
81
82
83
84#include "param_c.inc"
85#include "parit_c.inc"
86#include "com04_c.inc"
87
88
89
90 TYPE(python_), intent(inout) :: PYTHON
91 INTEGER, INTENT(IN) :: STF
92 INTEGER, INTENT(IN) :: SANIN
93 INTEGER, INTENT(IN) :: IRESP
94 INTEGER, INTENT(IN) :: SNPC
95 INTEGER, INTENT(IN) :: IGRE,NSENSOR
96 INTEGER, INTENT(IN) :: NFT
97 INTEGER, INTENT(IN) :: JSMS
98 INTEGER IXR(NIXR,*), NPF(*),IADR(3,*),IPARTR(*),
99 . IGEO(NPROPGI,*),JFT,JLT,NELTST ,ITYPTST,OFFSET,
100 . NEL,MTN,GRTH(*),IGRTH(*),FLG_KJ2,IPM(NPROPMI,*)
102 . geo(npropg,*),x(*),f(*),tf(stf),skew(lskew,*),fsky(*),
103 . vr(*), v(*), ar(*), stifn(*),stifr(*),ms(*), in(*),
104 . anim(*),partsav
105 . fr_wave(*),bufmat(*),bufgeo(*),pm
106 . fx1(mvsiz),fy1(mvsiz),fz1(mvsiz),
107 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
108 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
109 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),gresav(*),
110 . msrt(*), dmelrt(*)
111 my_real,
INTENT(IN) :: preld1,stf_f
112 DOUBLE PRECISION XDP(3,*)
113 TYPE(TTABLE) TABLE(*)
114
115 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
116 TYPE(H3D_DATABASE) :: H3D_DATA
117 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR), INTENT(IN) :: SENSOR_TAB
118
119
120
121 INTEGER NGL(),PID(MVSIZ),NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),
122 . MID(MVSIZ)
123
125 . sti(3,mvsiz),stir(3,mvsiz),visi(mvsiz),visir(mvsiz),
126 . usti(mvsiz),ustir(mvsiz),df(mvsiz),al(mvsiz),unused(mvsiz),
127 . uiner(mvsiz),fr_w_e(mvsiz),off(mvsiz),bid
129 . exx2(mvsiz), eyx2(mvsiz), ezx2(mvsiz),
130 . exy2(mvsiz), eyy2(mvsiz), ezy2(mvsiz),
131 . exz2(mvsiz), eyz2(mvsiz), ezz2(mvsiz),
132 . al2(mvsiz),x1(mvsiz),y1(mvsiz),z1(mvsiz),
133 . x2(mvsiz),y2(mvsiz),z2(mvsiz),x3(mvsiz),y3(mvsiz),z3(mvsiz),
134 . ex(mvsiz),ey(mvsiz),ez(mvsiz),
135 . exx(mvsiz),eyx(mvsiz),ezx(mvsiz),
136 . exy(mvsiz),eyy(mvsiz),ezy(mvsiz),
137 . exz(mvsiz),eyz(mvsiz),ezz(mvsiz),
138 . xcr(mvsiz),xk(mvsiz),xm(mvsiz),xc(mvsiz),rx1(mvsiz),rx2(mvsiz),
139 . ry1(mvsiz),ry2(mvsiz),rz1(mvsiz),rz2(mvsiz),xin(mvsiz),
140 . ak(mvsiz),xkm(mvsiz),xcm(mvsiz),xkr(mvsiz),
141 . ex2(mvsiz),ey2(mvsiz),ez2(mvsiz),vx1(mvsiz),vx2(mvsiz),
142 . vy1(mvsiz),vy2(mvsiz),vz1(mvsiz),vz2(mvsiz),vl12(mvsiz)
143 INTEGER IGTYP,I,I0,NUVAR,IADBUF
144 double precision
145 . x1dp(3,mvsiz),x2dp(3,mvsiz),x3dp(3,mvsiz),
146 . elx(3,mvsiz),al2dp(mvsiz),aldp(mvsiz)
147
148 TYPE(G_BUFEL_),POINTER :: GBUF
149 INTEGER II(6)
150
151 gbuf => elbuf_str%GBUF
152
153 fx1(1:mvsiz) = zero
154 fx2(1:mvsiz) = zero
155 fy1(1:mvsiz) = zero
156 fy2(1:mvsiz) = zero
157 fz1(1:mvsiz) = zero
158 fz2(1:mvsiz) = zero
159 mx1(1:mvsiz) = zero
160 mx2(1:mvsiz) = zero
161 my1(1:mvsiz) = zero
162 my2(1:mvsiz) = zero
163 mz1(1:mvsiz) = zero
164 mz2(1:mvsiz) = zero
165
166 DO i=1,6
167 ii(i) = (i-1)*nel + 1
168 ENDDO
169
170 i0 = ixr(1,1)
171 igtyp = igeo(11,i0)
172
173 bid = zero
174
175 fr_w_e(1:nel) = zero
176
177
179 1 x, vr, ixr, xdp,
180 2 x1dp, x2dp, ngl, x1,
181 3 y1, z1, x2, y2,
182 4 z2, pid, mid, rx1,
183 5 ry1, rz1, rx2, ry2,
184 6 rz2, nc1, nc2, nel)
186 1 geo, gbuf%OFF, sensor_tab, gbuf%TOTDEPL(ii(1)),
187 2 gbuf%TOTDEPL(ii(2)),gbuf%TOTDEPL(ii(3)),gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
188 3 gbuf%LENGTH(ii(3)), gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)),
189 4 igeo, pid, nel, nsensor )
190
191 DO i=jft,jlt
192 IF (gbuf%OFF(i) /= -ten) THEN
193 off(i)=
min(one,abs(gbuf%OFF(i)))
194 ELSE
195
196 off(i)=zero
197 ENDIF
198 ENDDO
199
201 1 gbuf%SKEW, v, exx2, eyx2,
202 2 ezx2, exy2, eyy2, ezy2,
203 3 exz2, eyz2, ezz2, al2dp,
204 4 x1dp, x2dp, al2, aldp,
205 5 gbuf%SKEW_ERR,ngl, al, exx,
206 6 eyx, ezx, exy, eyy,
207 7 ezy, exz, eyz, ezz,
208 8 rx1, ry1, rz1, rx2
209 9 ry2, rz2, vx1, vx2,
210 a vy1, vy2, vz1, vz2,
211 b nc1, nc2, nel)
212
213 nuvar = nint(geo(25,i0))
214 DO i=jft,jlt
215 mid(i) = ixr(5,i)
216 iadbuf = ipm(7,mid(i))
217 nuvar =
max(nuvar, nint(bufmat(iadbuf + 4 -1)))
218 ENDDO
219
221 1 skew, ipm, igeo, mid,
222 2 pid, geo, bufmat, gbuf%FOR(ii(1)),
223 3 gbuf%FOR(ii(2)), gbuf%FOR(ii(3)), gbuf%EINT, gbuf%TOTDEPL(ii(1)),
224 4 gbuf%TOTDEPL(ii(2)), gbuf%TOTDEPL(ii(3)), npf, tf,
225 5 off, gbuf%DEP_IN_TENS(ii(1)),gbuf%DEP_IN_TENS(ii(2)),gbuf%DEP_IN_TENS(ii(3)),
226 6 gbuf%DEP_IN_COMP(ii(1)),gbuf%DEP_IN_COMP(ii(2)),gbuf%DEP_IN_COMP(ii(3)),gbuf%FOREP(ii(1)),
227 7 gbuf%FOREP(ii(2)), gbuf%FOREP(ii(3)), gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
228 8 gbuf%LENGTH(ii(3)), gbuf%MOM(ii(1)), gbuf%MOM(ii(2)), gbuf%MOM(ii(3)),
229 9 gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)), gbuf%ROT_IN_TENS(ii(1)),
230 a gbuf%ROT_IN_TENS(ii(2)),gbuf%ROT_IN_TENS(ii(3)),gbuf%MOMEP(ii(1)), gbuf%MOMEP(ii(2)),
231 b gbuf%MOMEP(ii(3)), gbuf%ROT_IN_COMP(ii(1)),gbuf%ROT_IN_COMP(ii(2)),gbuf%ROT_IN_COMP(ii(3)),
232 c anim, gbuf%POSX, gbuf%POSY, gbuf%POSZ,
233 d gbuf%POSXX, gbuf%POSYY, gbuf%POSZZ, fr_wave,
234 e gbuf%E6, nel, exx2, eyx2,
235 f ezx2, exy2, eyy2, ezy2,
236 g exz2, eyz2, ezz2, al2dp,
237 h ngl, gbuf%RUPTCRIT, gbuf%LENGTH_ERR, aldp,
238 i gbuf%YIELD(ii(1)), gbuf%YIELD(ii(2)), gbuf%YIELD(ii(3)), gbuf%YIELD(ii(4)),
239 j gbuf%YIELD(ii(5)), gbuf%YIELD(ii(6)), exx, eyx,
240 k ezx, exy, eyy, ezy,
241 l exz, eyz, ezz, xcr,
242 m rx1, ry1, rz1, rx2,
243 n ry2, rz2, xin, ak,
244 o xm, xkm, xcm, xkr,
245 p vx1, vx2, vy1, vy2,
246 q vz1, vz2, nuvar, gbuf%VAR,
247 r gbuf%MASS, gbuf%DEFINI(ii(1)), gbuf%DEFINI(ii(2)), gbuf%DEFINI(ii(3)),
248 s gbuf%DEFINI(ii(4)), gbuf%DEFINI(ii(5)), gbuf%DEFINI(ii(6)), nft,
249 t stf, sanin, iresp, snpc,
250 u gbuf%G_YIELD_IN_COMP ,gbuf%G_XXOLD_IN_COMP, gbuf%YIELD_IN_COMP(ii(1)),gbuf%YIELD_IN_COMP(ii(2)),
251 v gbuf%YIELD_IN_COMP(ii(3)),gbuf%YIELD_IN_COMP(ii(4)),gbuf%YIELD_IN_COMP(ii(5)),gbuf%YIELD_IN_COMP(ii(6)),
252 w gbuf%XXOLD_IN_COMP(ii(1)),gbuf%XXOLD_IN_COMP(ii(2)),gbuf%XXOLD_IN_COMP(ii(3)),gbuf%XXOLD_IN_COMP(ii(4)),
253 x gbuf%XXOLD_IN_COMP(ii(5)),gbuf%XXOLD_IN_COMP(ii(6)))
254
255 DO i=jft,jlt
256 IF (gbuf%OFF(i) /= -ten .AND. off(i) < one) gbuf%OFF(i) = off(i)
257 ENDDO
259 1 jft, jlt, gbuf%OFF, dt2t,
260 2 neltst, ityptst, sti, stir,
261 3 ms, in, msrt, dmelrt,
262 4 gbuf%G_DT,gbuf%DT, ngl, xcr,
263 5 xin, xm, xkm, xcm,
264 6 xkr, nc1, nc2, jsms)
266 1 gbuf%EINT,partsav, ixr, geo,
267 2 v, ipartr, gbuf%MASS,gresav,
268 3 grth, igrth, gbuf%OFF, nc1,
269 4 nc2, x, vr, nel,
270 5 igre)
272 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
273 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),tani, al,
274 3 h3d_data, nel)
275
276 IF (preld1>zero) THEN
277 DO i=jft,jlt
278 vl12(i) = (vx2(i)-vx1(i))*exx(i)+
279 1 (vy2(i)-vy1(i))*eyx(i)+(vz2(i)-vz1(i))*ezx(i)
280 ENDDO
281 CALL preload_axial(nel,preld1,gbuf%BPRELD,vl12,stf_f,gbuf%FOR)
282 gbuf%FOREP(jft:jlt) = gbuf%FOR(jft:jlt)
283 END IF
284 IF (iparit == 0) THEN
286 1 f, gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),
287 2 ar, gbuf%MOM(ii(1)),gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),
288 3 sti, stir, stifn, stifr,
289 4 fx1, fx2, fy1, fy2,
290 5 fz1, fz2, mx1, mx2,
291 6 my1, my2, mz1, mz2,
292 7 al, exx, eyx, ezx,
293 8 exy, eyy, ezy, exz,
294 9
295 a nel)
296 ELSE
298 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
299 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),sti, stir,
300 3 fsky, fsky, iadr, fx1,
301 4 fx2, fy1, fy2, fz1,
302 5 fz2, mx1, mx2, my1,
303 6 my2, mz1, mz2, exx,
304 7 eyx, ezx, exy, eyy,
305 8 ezy, exz, eyz, ezz,
306 9 al, nel, nft)
307 ENDIF
308
309 RETURN
subroutine r23bilan(eint, partsav, ixr, geo, v, ipartr, mass, gresav, grth, igrth, off_dum, nc1, nc2, x, vr, nel, igre)
subroutine r23coor3(x, vr, ixr, xdp, x1dp, x2dp, ngl, x1, y1, z1, x2, y2, z2, pid, mat, rx1, ry1, rz1, rx2, ry2, rz2, nc1, nc2, nel)
subroutine r23l113def3(python, skew, ipm, igeo, mid, pid, geo, uparam, fx, fy, fz, e, dx, dy, dz, npf, tf, off, dpx, dpy, dpz, dpx2, dpy2, dpz2, fxep, fyep, fzep, x0, y0, z0, xmom, ymom, zmom, rx, ry, rz, rpx, rpy, rpz, xmep, ymep, zmep, rpx2, rpy2, rpz2, anim, posx, posy, posz, posxx, posyy, poszz, fr_wave, e6, nel, exx2, eyx2, ezx2, exy2, eyy2, ezy2, exz2, eyz2, ezz2, al2dp, ngl, crit_new, x0_err, aldp, yieldx, yieldy, yieldz, yieldx2, yieldy2, yieldz2, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, xcr, rx1, ry1, rz1, rx2, ry2, rz2, xin, ak, xm, xkm, xcm, xkr, vx1, vx2, vy1, vy2, vz1, vz2, nuvar, uvar, mass, dx0, dy0, dz0, rx0, ry0, rz0, nft, stf, sanin, iresp, snpc, szyield_comp, szxxold_comp, yieldxc, yieldyc, yieldzc, yieldrxc, yieldryc, yieldrzc, dxoldc, dyoldc, dzoldc, drxoldc, dryoldc, drzoldc)
subroutine r23sens3(geo, off, sensor_tab, dx, dy, dz, x0, y0, z0, rx, ry, rz, igeo, pid, nel, nsensor)
subroutine r2len3(jft, jlt, off, dt2t, neltst, ityptst, sti, stir, ms, in, msrt, dmelrt, g_dt, dtel, ngl, xcr, xin, xm, xkm, xcm, xkr, nc1, nc2, jsms)
subroutine r4cum3(f, forx, fory, forz, xm, xmom, ymom, zmom, sti, stir, stifn, stifr, fx1, fx2, fy1, fy2, fz1, fz2, mx1, mx2, my1, my2, mz1, mz2, al, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, nc1, nc2, nel)
subroutine r4cum3p(forx, fory, forz, xmom, ymom, zmom, sti, stir, fsky, fskyv, iadr, fx1, fx2, fy1, fy2, fz1, fz2, mx1, mx2, my1, my2, mz1, mz2, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, al, nel, nft)
subroutine r4evec3(rloc, v, exx2, eyx2, ezx2, exy2, eyy2, ezy2, exz2, eyz2, ezz2, al2dp, x1dp, x2dp, al2, aldp, rloc_err, ngl, al, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, rx1, ry1, rz1, rx2, ry2, rz2, vx1, vx2, vy1, vy2, vz1, vz2, nc1, nc2, nel)
subroutine r4tors(forx, fory, forz, xmom, ymom, zmom, tani, al, h3d_data, nel)