OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r23law113.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| r23law113 ../engine/source/elements/spring/r23law113.F
25!||--- called by ------------------------------------------------------
26!|| r23forc3 ../engine/source/elements/spring/r23forc3.f
27!||--- calls -----------------------------------------------------
28!|| preload_axial ../engine/source/elements/spring/preload_axial.F90
29!|| r23bilan ../engine/source/elements/spring/r23bilan.F
30!|| r23coor3 ../engine/source/elements/spring/r23coor3.F
31!|| r23l113def3 ../engine/source/elements/spring/r23l113def3.F
32!|| r23sens3 ../engine/source/elements/spring/r23sens3.F
33!|| r2len3 ../engine/source/elements/spring/r2len3.F
34!|| r4cum3 ../engine/source/elements/spring/r4cum3.F
35!|| r4cum3p ../engine/source/elements/spring/r4cum3p.F
36!|| r4evec3 ../engine/source/elements/spring/r4evec3.F
37!|| r4tors ../engine/source/elements/spring/r4tors.F
38!||--- uses -----------------------------------------------------
39!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
40!|| h3d_mod ../engine/share/modules/h3d_mod.F
41!|| preload_axial_mod ../engine/source/elements/spring/preload_axial.F90
42!|| python_funct_mod ../common_source/modules/python_mod.F90
43!|| sensor_mod ../common_source/modules/sensor_mod.F90
44!|| table_mod ../engine/share/modules/table_mod.F
45!||====================================================================
46 SUBROUTINE r23law113( PYTHON,
47 1 ELBUF_STR, JFT, JLT, NEL,
48 2 MTN, IGEO, GEO, IPM,
49 3 IXR, X, TABLE, XDP,
50 4 F, NPF, TF, SKEW,
51 5 FLG_KJ2, VR, AR, V,
52 6 DT2T, NELTST, ITYPTST, STIFN,
53 7 STIFR, MS, IN, FSKY,
54 8 IADR, NSENSOR, SENSOR_TAB,OFFSET, ANIM,
55 9 PARTSAV, IPARTR, TANI, FR_WAVE,
56 A BUFMAT, BUFGEO, PM, RBY,
57 B FX1, FX2, FY1, FY2,
58 C FZ1, FZ2, MX1, MX2,
59 D MY1, MY2, MZ1, MZ2,
60 E GRESAV, GRTH, IGRTH, MSRT,
61 F DMELRT, H3D_DATA, JSMS, IGRE,
62 G NFT, PRELD1, STF_F, STF,
63 S SANIN, IRESP, SNPC)
64C-----------------------------------------------
65C M o d u l e s
66C-----------------------------------------------
67 USE python_funct_mod
68 USE elbufdef_mod
69 USE table_mod
70 USE h3d_mod
71 USE sensor_mod
72 USE preload_axial_mod
73C-----------------------------------------------
74C I m p l i c i t T y p e s
75C-----------------------------------------------
76#include "implicit_f.inc"
77C-----------------------------------------------
78C G l o b a l P a r a m e t e r s
79C-----------------------------------------------
80#include "mvsiz_p.inc"
81C-----------------------------------------------
82C C o m m o n B l o c k s
83C-----------------------------------------------
84#include "param_c.inc"
85#include "parit_c.inc"
86#include "com04_c.inc"
87C-----------------------------------------------
88C D u m m y A r g u m e n t s
89C-----------------------------------------------
90 TYPE(python_), intent(inout) :: PYTHON
91 INTEGER, INTENT(IN) :: STF !< Size of TF
92 INTEGER, INTENT(IN) :: SANIN !< Size of ANIM
93 INTEGER, INTENT(IN) :: IRESP !< Single precision flag
94 INTEGER, INTENT(IN) :: SNPC !< Size of NPF
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,*)
101 my_real DT2T ,
102 . GEO(NPROPG,*),X(*),F(*),TF(STF),SKEW(LSKEW,*),FSKY(*),
103 . VR(*), V(*), AR(*), STIFN(*),STIFR(*),MS(*), IN(*),
104 . ANIM(*),PARTSAV(*),TANI(15,*),
105 . FR_WAVE(*),BUFMAT(*),BUFGEO(*),PM(*),RBY(*),
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(*)
114C
115 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
116 TYPE(H3D_DATABASE) :: H3D_DATA
117 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR), INTENT(IN) :: SENSOR_TAB
118C-----------------------------------------------
119C L o c a l V a r i a b l e s
120C-----------------------------------------------
121 INTEGER NGL(MVSIZ),PID(MVSIZ),NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),
122 . MID(MVSIZ)
123C REAL
124 my_real
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
128 my_real
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)
147C-----------------------------------------------
148 TYPE(g_bufel_),POINTER :: GBUF
149 INTEGER II(6)
150C=======================================================================
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
169C
170 i0 = ixr(1,1)
171 igtyp = igeo(11,i0)
172C
173 bid = zero
174C
175 fr_w_e(1:nel) = zero
176C=======================================================================
177C=======================================================================
178 CALL r23coor3(
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)
185 CALL r23sens3(
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 )
190C
191 DO i=jft,jlt
192 IF (gbuf%OFF(i) /= -ten) THEN
193 off(i)=min(one,abs(gbuf%OFF(i)))
194 ELSE
195C spring may be activated by sensor and is actually inactive.
196 off(i)=zero
197 ENDIF
198 ENDDO
199C
200 CALL r4evec3(
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)
212C
213 nuvar = nint(geo(25,i0)) !! from Mid
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!! is like r4def3 (spring type113)
220 CALL r23l113def3(python,
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)))
254C
255 DO i=jft,jlt
256 IF (gbuf%OFF(i) /= -ten .AND. off(i) < one) gbuf%OFF(i) = off(i)
257 ENDDO
258 CALL r2len3(
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)
265 CALL r23bilan(
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)
271 CALL r4tors(
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! preloading
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
285 CALL r4cum3(
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 eyz, ezz, nc1, nc2,
295 a nel)
296 ELSE
297 CALL r4cum3p(
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
308C-----------------------------------------------
309 RETURN
310 END SUBROUTINE r23law113
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine r23bilan(eint, partsav, ixr, geo, v, ipartr, mass, gresav, grth, igrth, off_dum, nc1, nc2, x, vr, nel, igre)
Definition r23bilan.F:38
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)
Definition r23coor3.F:37
subroutine r23forc3(python, elbuf_str, jft, jlt, nel, mtn, igeo, geo, ipm, ixr, x, table, xdp, f, npf, tf, skew, flg_kj2, vr, ar, v, dt2t, neltst, ityptst, stifn, stifr, ms, in, fsky, iadr, sensors, offset, anim, partsav, ipartr, tani, fr_wave, bufmat, bufgeo, pm, rby, fx1, fx2, fy1, fy2, fz1, fz2, mx1, mx2, my1, my2, mz1, mz2, gresav, grth, igrth, msrt, dmelrt, flag_slipring_update, flag_retractor_update, h3d_data, jsms, igre, nft, preld1, stf_f, stf, sanin, iresp, snpc)
Definition r23forc3.F:57
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)
Definition r23l113def3.F:68
subroutine r23law113(python, elbuf_str, jft, jlt, nel, mtn, igeo, geo, ipm, ixr, x, table, xdp, f, npf, tf, skew, flg_kj2, vr, ar, v, dt2t, neltst, ityptst, stifn, stifr, ms, in, fsky, iadr, nsensor, sensor_tab, offset, anim, partsav, ipartr, tani, fr_wave, bufmat, bufgeo, pm, rby, fx1, fx2, fy1, fy2, fz1, fz2, mx1, mx2, my1, my2, mz1, mz2, gresav, grth, igrth, msrt, dmelrt, h3d_data, jsms, igre, nft, preld1, stf_f, stf, sanin, iresp, snpc)
Definition r23law113.F:64
subroutine r23sens3(geo, off, sensor_tab, dx, dy, dz, x0, y0, z0, rx, ry, rz, igeo, pid, nel, nsensor)
Definition r23sens3.F:37
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)
Definition r2len3.F:38
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)
Definition r4cum3.F:41
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)
Definition r4cum3p.F:40
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)
Definition r4evec3.F:42
subroutine r4tors(forx, fory, forz, xmom, ymom, zmom, tani, al, h3d_data, nel)
Definition r4tors.F:36