63
64
65
66 USE elbufdef_mod
69 USE sensor_mod
70 USE python_funct_mod
71
72
73
74#include "implicit_f.inc"
75
76
77
78#include "mvsiz_p.inc"
79
80
81
82#include "param_c.inc"
83#include "parit_c.inc"
84#include "com04_c.inc"
85
86
87
88 type(python_), intent(in) :: PYTHON
89 INTEGER, INTENT(IN) :: STF
90 INTEGER, INTENT(IN) :: SANIN
91 INTEGER, INTENT(IN) :: IRESP
92 INTEGER, INTENT(IN) :: SNPC
93 INTEGER, INTENT(IN) :: IGRE,NSENSOR
94 INTEGER, INTENT(IN) :: NFT
95 INTEGER, INTENT(IN) :: JSMS
96 INTEGER IXR(NIXR,*), NPF(*),IADR(3,*),IPARTR(*),
97 . IGEO(NPROPGI,*),JFT,JLT,NELTST ,ITYPTST,OFFSET,
98 . NEL,MTN,GRTH(*),IGRTH(*),FLG_KJ2,IPM(NPROPMI,*),FLAG_SLIPRING_UPDATE,
99 . FLAG_RETRACTOR_UPDATE
101 . geo(npropg,*),x(*),f(*),tf(stf),skew(lskew,*),fsky(*),
102 . vr(*), v(*), ar(*), stifn(*),stifr(*),ms(*), in(*),
103 . anim(*),partsav(*),tani(15,*),
104 . fr_wave(*),bufmat(*),bufgeo(*),pm(*),rby(*),
105 . fx1(mvsiz),fy1(mvsiz),fz1(mvsiz),
106 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
107 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
108 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),gresav(*),
109 . msrt(*), dmelrt(*)
110 DOUBLE PRECISION XDP(3,*)
111 TYPE(TTABLE) TABLE(*)
112
113 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
114 TYPE(H3D_DATABASE) :: H3D_DATA
115 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) , INTENT(IN) :: SENSOR_TAB
116
117
118
119 INTEGER NGL(MVSIZ),PID(MVSIZ),NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),
120 . MID(MVSIZ)
121
123 . sti(3,mvsiz),stir(3,mvsiz),visi(mvsiz),visir(mvsiz),
124 . usti(mvsiz),ustir(mvsiz),df(mvsiz),al(mvsiz),unused(mvsiz),
125 . uiner(mvsiz),fr_w_e(mvsiz),off(mvsiz),bid
127 . exx2(mvsiz), eyx2(mvsiz), ezx2(mvsiz),
128 . exy2(mvsiz), eyy2(mvsiz), ezy2(mvsiz),
129 . exz2(mvsiz), eyz2(mvsiz), ezz2(mvsiz),
130 . al2(mvsiz),x1(mvsiz),y1(mvsiz),z1(mvsiz),
131 . x2(mvsiz),y2(mvsiz),z2(mvsiz),x3(mvsiz),y3(mvsiz),z3(mvsiz),
132 . ex(mvsiz),ey(mvsiz),ez(mvsiz),
133 . exx(mvsiz),eyx(mvsiz),ezx(mvsiz),
134 . exy(mvsiz),eyy(mvsiz),ezy(mvsiz),
135 . exz(mvsiz),eyz(mvsiz),ezz(mvsiz),
136 . xcr(mvsiz),xk(mvsiz),xm(mvsiz),xc(mvsiz),rx1(mvsiz),rx2(mvsiz),
137 . ry1(mvsiz),ry2(mvsiz),rz1(mvsiz),rz2(mvsiz),xin(mvsiz),
138 . ak(mvsiz),xkm(mvsiz),xcm(mvsiz),xkr(mvsiz),
139 . ex2(mvsiz),ey2(mvsiz),ez2(mvsiz),vx1(mvsiz),vx2(mvsiz),
140 . vy1(mvsiz),vy2(mvsiz),vz1(mvsiz),vz2(mvsiz),vx3(mvsiz),
141 . vy3(mvsiz),vz3(mvsiz)
142 INTEGER IGTYP,I,I0,NUVAR,IADBUF
143 double precision
144 . x1dp(3,mvsiz),x2dp(3,mvsiz),x3dp(3,mvsiz),
145 . elx(3,mvsiz),al2dp(mvsiz),aldp(mvsiz)
146
147 TYPE(G_BUFEL_),POINTER :: GBUF
148 INTEGER II(9)
149
150 gbuf => elbuf_str%GBUF
151
152 fx1(1:mvsiz) = zero
153 fx2(1:mvsiz) = zero
154 fy1(1:mvsiz) = zero
155 fy2(1:mvsiz) = zero
156 fz1(1:mvsiz) = zero
157 fz2(1:mvsiz) = zero
158 mx1(1:mvsiz) = zero
159 mx2(1:mvsiz) = zero
160 my1(1:mvsiz) = zero
161 my2(1:mvsiz) = zero
162 mz1(1:mvsiz) = zero
163 mz2(1:mvsiz) = zero
164
165 DO i=1,9
166 ii(i) = (i-1)*nel + 1
167 ENDDO
168
169 i0 = ixr(1,1)
170 igtyp = igeo(11,i0)
171
172 bid = zero
173
174 fr_w_e(1:nel) = zero
175
176
178 1 x, vr, ixr, xdp,
179 2 x1dp, x2dp, ngl, x1,
180 3 y1, z1, x2, y2,
181 4 z2, pid, mid, rx1,
182 5 ry1, rz1, rx2, ry2,
183 6 rz2, nc1, nc2, nel)
185 1 geo, gbuf%OFF, sensor_tab, gbuf%TOTDEPL(ii(1)),
186 2 gbuf%TOTDEPL(ii(2)),gbuf%TOTDEPL(ii(3)),gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
187 3 gbuf%LENGTH(ii(3)), gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)),
188 4 igeo, pid, nel, nsensor )
189
190 DO i=jft,jlt
191 IF (gbuf%OFF(i) /= -ten) THEN
192 off(i)=
min(one,abs(gbuf%OFF(i)))
193 ELSE
194
195 off(i)=zero
196 ENDIF
197 ENDDO
198
200 1 gbuf%SKEW, v, exx2, eyx2,
201 2 ezx2, exy2, eyy2, ezy2,
202 3 exz2, eyz2, ezz2, al2dp,
203 4 x1dp, x2dp, al2, aldp,
204 5 gbuf%SKEW_ERR,ngl, al, exx,
205 6 eyx, ezx, exy, eyy,
206 7 ezy, exz, eyz, ezz,
207 8 rx1, ry1, rz1, rx2,
208 9 ry2, rz2, vx1, vx2,
209 a vy1, vy2, vz1, vz2,
210 b nc1, nc2, nel)
211
212
213 IF (nslipring > 0) THEN
215 1 x, v, ixr, xdp,
216 2 x3dp, nc3, vx3, vy3,
217 3 vz3, nel)
218 ENDIF
219
220 nuvar = nint(geo(25,i0))
221 DO i=jft,jlt
222 mid(i) = ixr(5,i)
223 iadbuf = ipm(7,mid(i)) - 1
224 nuvar =
max(nuvar, nint(bufmat(iadbuf + 4)))
225 ENDDO
226
228 1 skew, ipm, igeo, mid,
229 2 pid, geo, bufmat, gbuf%FOR(ii(1)),
230 3 gbuf%FOR(ii(2)), gbuf%FOR(ii(3)), gbuf%EINT, gbuf%TOTDEPL(ii(1)),
231 4 gbuf%TOTDEPL(ii(2)), gbuf%TOTDEPL(ii(3)), npf, tf,
232 5 off, gbuf%DEP_IN_TENS(ii(1)),gbuf%DEP_IN_TENS(ii(2)),gbuf%DEP_IN_TENS(ii(3)),
233 6 gbuf%DEP_IN_COMP(ii(1)),gbuf%DEP_IN_COMP(ii(2)),gbuf%DEP_IN_COMP(ii(3)),gbuf%FOREP(ii(1)),
234 7 gbuf%FOREP(ii(2)), gbuf%FOREP(ii(3)), gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
235 8 gbuf%LENGTH(ii(3)), gbuf%MOM(ii(1)), gbuf%MOM(ii(2)), gbuf%MOM(ii(3)),
236 9 gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)), gbuf%ROT_IN_TENS(ii(1)),
237 a gbuf%ROT_IN_TENS(ii(2)),gbuf%ROT_IN_TENS(ii(3)),gbuf%MOMEP(ii(1)), gbuf%MOMEP(ii(2)
238 b gbuf%MOMEP(ii(3)), gbuf%ROT_IN_COMP(ii(1)),gbuf%ROT_IN_COMP(ii(2)),gbuf%ROT_IN_COMP
239 c anim, gbuf%POSX, gbuf%POSY, gbuf%POSZ,
240 d gbuf%POSXX, gbuf%POSYY, gbuf%POSZZ, fr_wave,
241 e gbuf%E6, nel, exx2, eyx2,
242 f ezx2, exy2, eyy2, ezy2,
243 g exz2, eyz2, ezz2, al2dp,
244 h ngl, gbuf%RUPTCRIT, gbuf%LENGTH_ERR, aldp,
245 i gbuf%YIELD(ii(1)), gbuf%YIELD(ii(2)), gbuf%YIELD(ii(3)), gbuf%YIELD(ii(4)),
246 j gbuf%YIELD(ii(5)), gbuf%YIELD(ii(6)), exx, eyx,
247 k ezx, exy, eyy, ezy,
248 l exz, eyz, ezz, xcr,
249 m rx1, ry1, rz1, rx2,
250 n ry2, rz2, xin, ak,
251 o xm, xkm, xcm, xkr,
252 p vx1, vx2, vy1, vy2,
253 q vz1, vz2, nuvar, gbuf%VAR,
254 r gbuf%MASS, gbuf%DEFINI(ii(1)), gbuf%DEFINI(ii(2)), gbuf%DEFINI(ii(3)),
255 s gbuf%DEFINI(ii(4)), gbuf%DEFINI(ii(5)), gbuf%DEFINI(ii(6)), gbuf%SLIPRING_STRAND,
256 t gbuf%DFS, gbuf%RINGSLIP, gbuf%LENGTH(ii(2)), gbuf%LENGTH(ii(3)),
257 u gbuf%SLIPRING_ID, gbuf%UPDATE, gbuf%RETRACTOR_ID, gbuf%ADD_NODE(1),
258 v gbuf%ADD_NODE(nel+1), nc1, nc2, nc3,
259 w x1dp, x2dp, x3dp, vx3,
260 x vy3, vz3, flag_slipring_update, flag_retractor_update,
261 y sensor_tab, gbuf%INTVAR(ii(1)), gbuf%SLIPRING_FRAM_ID, gbuf%FRAM_FACTOR,
262 z gbuf%INTVAR(ii(2)), gbuf%INTVAR(ii(3)), gbuf%INTVAR(ii(4)), gbuf%INTVAR(ii(5)),
263 1 gbuf%INTVAR(ii(6)), gbuf%INTVAR(ii(7)), gbuf%INTVAR(ii(8)), gbuf%INTVAR(ii(9)),
264 2 nft , nsensor, stf, sanin,
265 3 iresp, snpc)
266
267 DO i=jft,jlt
268 IF (gbuf%UPDATE(i) == -1) THEN
269 gbuf%OFF(i) = off(i)
270 gbuf%UPDATE(i) = 0
271 ELSEIF (gbuf%OFF(i) /= -ten .AND. off(i) < one) THEN
272 gbuf%OFF(i) = off(i)
273 ENDIF
274 ENDDO
275
277 1 jft, jlt, gbuf%OFF, dt2t,
278 2 neltst, ityptst, sti, stir,
279 3 ms, in, msrt, dmelrt,
280 4 gbuf%G_DT,gbuf%DT, ngl, xcr,
281 5 xin, xm, xkm, xcm,
282 6 xkr, nc1, nc2, jsms)
284 1 gbuf%EINT,partsav, ixr, geo,
285 2 v, ipartr, gbuf%MASS,gresav,
286 3 grth, igrth, gbuf%OFF, nc1,
287 4 nc2, x, vr, nel,
288 5 igre)
290 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
291 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),tani, al,
292 3 h3d_data, nel)
293 IF (iparit == 0) THEN
295 1 f, gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),
296 2 ar, gbuf%MOM(ii(1)),gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),
297 3 sti, stir, stifn, stifr,
298 4 fx1, fx2, fy1, fy2,
299 5 fz1, fz2, mx1, mx2,
300 6 my1, my2, mz1, mz2,
301 7 al, exx, eyx, ezx,
302 8 exy, eyy, ezy, exz,
303 9 eyz, ezz, nc1, nc2,
304 a nel)
305 ELSE
307 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
308 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),sti, stir,
309 3 fsky, fsky, iadr, fx1,
310 4 fx2, fy1, fy2, fz1,
311 5 fz2, mx1, mx2, my1,
312 6 my2, mz1, mz2, exx,
313 7 eyx, ezx, exy, eyy,
314 8 ezy, exz, eyz, ezz,
315 9 al, nel, nft)
316 ENDIF
317
318 RETURN
subroutine r23_114_coor3(x, v, ixr, xdp, x3dp, nc3, vx3, vy3, vz3, nel)
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 r23l114def3(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, slipring_strand, dfs, ring_slip, x02, lmin, slipring_id, update_flag, retractor_id, add_node1, add_node2, nc1, nc2, nc3, x1dp, x2dp, x3dp, vx3, vy3, vz3, flag_slipring_update, flag_retractor_update, sensor_tab, uiner, fr_id, fram_factor, eps_old, fx_b2, dpx_b2, yieldx_b2, xx_old_b2, fxep_b2, posx_b2, eps_old_b2, nft, nsensor, stf, sanin, iresp, snpc)
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)