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!|| element_mod ../common_source/modules/elements/element_mod.F90
41!|| h3d_mod ../engine/share/modules/h3d_mod.F
42!|| preload_axial_mod ../engine/source/elements/spring/preload_axial.F90
43!|| python_funct_mod ../common_source/modules/python_mod.F90
44!|| sensor_mod ../common_source/modules/sensor_mod.F90
45!|| table_mod ../engine/share/modules/table_mod.F
46!||====================================================================
47 SUBROUTINE r23law113( PYTHON,
48 1 ELBUF_STR, JFT, JLT, NEL,
49 2 MTN, IGEO, GEO, IPM,
50 3 IXR, X, TABLE, XDP,
51 4 F, NPF, TF, SKEW,
52 5 FLG_KJ2, VR, AR, V,
53 6 DT2T, NELTST, ITYPTST, STIFN,
54 7 STIFR, MS, IN, FSKY,
55 8 IADR, NSENSOR, SENSOR_TAB,OFFSET, ANIM,
56 9 PARTSAV, IPARTR, TANI, FR_WAVE,
57 A BUFMAT, BUFGEO, PM, RBY,
58 B FX1, FX2, FY1, FY2,
59 C FZ1, FZ2, MX1, MX2,
60 D MY1, MY2, MZ1, MZ2,
61 E GRESAV, GRTH, IGRTH, MSRT,
62 F DMELRT, H3D_DATA, JSMS, IGRE,
63 G NFT, PRELD1, STF_F, STF,
64 S SANIN, IRESP, SNPC)
65C-----------------------------------------------
66C M o d u l e s
67C-----------------------------------------------
68 USE python_funct_mod
69 USE elbufdef_mod
70 USE table_mod
71 USE h3d_mod
72 USE sensor_mod
73 USE preload_axial_mod
74 use element_mod , only : nixr
75C-----------------------------------------------
76C I m p l i c i t T y p e s
77C-----------------------------------------------
78#include "implicit_f.inc"
79C-----------------------------------------------
80C G l o b a l P a r a m e t e r s
81C-----------------------------------------------
82#include "mvsiz_p.inc"
83C-----------------------------------------------
84C C o m m o n B l o c k s
85C-----------------------------------------------
86#include "param_c.inc"
87#include "parit_c.inc"
88#include "com04_c.inc"
89C-----------------------------------------------
90C D u m m y A r g u m e n t s
91C-----------------------------------------------
92 TYPE(python_), intent(inout) :: PYTHON
93 INTEGER, INTENT(IN) :: STF !< Size of TF
94 INTEGER, INTENT(IN) :: SANIN !< Size of ANIM
95 INTEGER, INTENT(IN) :: IRESP !< Single precision flag
96 INTEGER, INTENT(IN) :: SNPC !< Size of NPF
97 INTEGER, INTENT(IN) :: IGRE,NSENSOR
98 INTEGER, INTENT(IN) :: NFT
99 INTEGER, INTENT(IN) :: JSMS
100 INTEGER IXR(NIXR,*), NPF(*),IADR(3,*),IPARTR(*),
101 . IGEO(NPROPGI,*),JFT,JLT,NELTST ,ITYPTST,OFFSET,
102 . NEL,MTN,GRTH(*),IGRTH(*),FLG_KJ2,IPM(NPROPMI,*)
103 my_real DT2T ,
104 . GEO(NPROPG,*),X(*),F(*),TF(STF),SKEW(LSKEW,*),FSKY(*),
105 . VR(*), V(*), AR(*), STIFN(*),STIFR(*),MS(*), IN(*),
106 . ANIM(*),PARTSAV(*),TANI(15,*),
107 . FR_WAVE(*),BUFMAT(*),BUFGEO(*),PM(*),RBY(*),
108 . FX1(MVSIZ),FY1(MVSIZ),FZ1(MVSIZ),
109 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
110 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
111 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),gresav(*),
112 . msrt(*), dmelrt(*)
113 my_real, INTENT(IN) :: preld1,stf_f
114 DOUBLE PRECISION XDP(3,*)
115 TYPE(ttable) TABLE(*)
116C
117 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
118 TYPE(H3D_DATABASE) :: H3D_DATA
119 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR), INTENT(IN) :: SENSOR_TAB
120C-----------------------------------------------
121C L o c a l V a r i a b l e s
122C-----------------------------------------------
123 INTEGER NGL(MVSIZ),PID(MVSIZ),NC1(MVSIZ),NC2(MVSIZ),
124 . MID(MVSIZ)
125C REAL
126 my_real
127 . STI(3,MVSIZ),STIR(3,MVSIZ),
128 . AL(MVSIZ),
129 . FR_W_E(MVSIZ),OFF(MVSIZ),BID
130 my_real
131 . exx2(mvsiz), eyx2(mvsiz), ezx2(mvsiz),
132 . exy2(mvsiz), eyy2(mvsiz), ezy2(mvsiz),
133 . exz2(mvsiz), eyz2(mvsiz), ezz2(mvsiz),
134 . al2(mvsiz),x1(mvsiz),y1(mvsiz),z1(mvsiz),
135 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
136 .
137 . exx(mvsiz),eyx(mvsiz),ezx(mvsiz),
138 . exy(mvsiz),eyy(mvsiz),ezy(mvsiz),
139 . exz(mvsiz),eyz(mvsiz),ezz(mvsiz),
140 . xcr(mvsiz),xm(mvsiz),rx1(mvsiz),rx2(mvsiz),
141 . ry1(mvsiz),ry2(mvsiz),rz1(mvsiz),rz2(mvsiz),xin(mvsiz),
142 . ak(mvsiz),xkm(mvsiz),xcm(mvsiz),xkr(mvsiz),
143 . vx1(mvsiz),vx2(mvsiz),
144 . vy1(mvsiz),vy2(mvsiz),vz1(mvsiz),vz2(mvsiz),vl12(mvsiz)
145 INTEGER IGTYP,I,I0,NUVAR,IADBUF
146 DOUBLE PRECISION
147 . x1dp(3,mvsiz),x2dp(3,mvsiz),
148 . al2dp(mvsiz),aldp(mvsiz)
149C-----------------------------------------------
150 TYPE(g_bufel_),POINTER :: GBUF
151 INTEGER II(6)
152C=======================================================================
153 GBUF => elbuf_str%GBUF
154!
155 fx1(1:mvsiz) = zero
156 fx2(1:mvsiz) = zero
157 fy1(1:mvsiz) = zero
158 fy2(1:mvsiz) = zero
159 fz1(1:mvsiz) = zero
160 fz2(1:mvsiz) = zero
161 mx1(1:mvsiz) = zero
162 mx2(1:mvsiz) = zero
163 my1(1:mvsiz) = zero
164 my2(1:mvsiz) = zero
165 mz1(1:mvsiz) = zero
166 mz2(1:mvsiz) = zero
167!
168 DO i=1,6
169 ii(i) = (i-1)*nel + 1
170 ENDDO
171C
172 i0 = ixr(1,1)
173 igtyp = igeo(11,i0)
174C
175 bid = zero
176C
177 fr_w_e(1:nel) = zero
178C=======================================================================
179C=======================================================================
180 CALL r23coor3(
181 1 x, vr, ixr, xdp,
182 2 x1dp, x2dp, ngl, x1,
183 3 y1, z1, x2, y2,
184 4 z2, pid, mid, rx1,
185 5 ry1, rz1, rx2, ry2,
186 6 rz2, nc1, nc2, nel)
187 CALL r23sens3(
188 1 geo, gbuf%OFF, sensor_tab, gbuf%TOTDEPL(ii(1)),
189 2 gbuf%TOTDEPL(ii(2)),gbuf%TOTDEPL(ii(3)),gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
190 3 gbuf%LENGTH(ii(3)), gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)),
191 4 igeo, pid, nel, nsensor )
192C
193 DO i=jft,jlt
194 IF (gbuf%OFF(i) /= -ten) THEN
195 off(i)=min(one,abs(gbuf%OFF(i)))
196 ELSE
197C spring may be activated by sensor and is actually inactive.
198 off(i)=zero
199 ENDIF
200 ENDDO
201C
202 CALL r4evec3(
203 1 gbuf%SKEW, v, exx2, eyx2,
204 2 ezx2, exy2, eyy2, ezy2,
205 3 exz2, eyz2, ezz2, al2dp,
206 4 x1dp, x2dp, al2, aldp,
207 5 gbuf%SKEW_ERR,ngl, al, exx,
208 6 eyx, ezx, exy, eyy,
209 7 ezy, exz, eyz, ezz,
210 8 rx1, ry1, rz1, rx2,
211 9 ry2, rz2, vx1, vx2,
212 a vy1, vy2, vz1, vz2,
213 b nc1, nc2, nel)
214C
215 nuvar = nint(geo(25,i0)) !! from Mid
216 DO i=jft,jlt
217 mid(i) = ixr(5,i)
218 iadbuf = ipm(7,mid(i))
219 nuvar = max(nuvar, nint(bufmat(iadbuf + 4 -1)))
220 ENDDO
221!! is like r4def3 (spring type113)
222 CALL r23l113def3(python,
223 1 skew, ipm, igeo, mid,
224 2 pid, geo, bufmat, gbuf%FOR(ii(1)),
225 3 gbuf%FOR(ii(2)), gbuf%FOR(ii(3)), gbuf%EINT, gbuf%TOTDEPL(ii(1)),
226 4 gbuf%TOTDEPL(ii(2)), gbuf%TOTDEPL(ii(3)), npf, tf,
227 5 off, gbuf%DEP_IN_TENS(ii(1)),gbuf%DEP_IN_TENS(ii(2)),gbuf%DEP_IN_TENS(ii(3)),
228 6 gbuf%DEP_IN_COMP(ii(1)),gbuf%DEP_IN_COMP(ii(2)),gbuf%DEP_IN_COMP(ii(3)),gbuf%FOREP(ii(1)),
229 7 gbuf%FOREP(ii(2)), gbuf%FOREP(ii(3)), gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
230 8 gbuf%LENGTH(ii(3)), gbuf%MOM(ii(1)), gbuf%MOM(ii(2)), gbuf%MOM(ii(3)),
231 9 gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)), gbuf%ROT_IN_TENS(ii(1)),
232 a gbuf%ROT_IN_TENS(ii(2)),gbuf%ROT_IN_TENS(ii(3)),gbuf%MOMEP(ii(1)), gbuf%MOMEP(ii(2)),
233 b gbuf%MOMEP(ii(3)), gbuf%ROT_IN_COMP(ii(1)),gbuf%ROT_IN_COMP(ii(2)),gbuf%ROT_IN_COMP(ii(3)),
234 c anim, gbuf%POSX, gbuf%POSY, gbuf%POSZ,
235 d gbuf%POSXX, gbuf%POSYY, gbuf%POSZZ, fr_wave,
236 e gbuf%E6, nel, exx2, eyx2,
237 f ezx2, exy2, eyy2, ezy2,
238 g exz2, eyz2, ezz2, al2dp,
239 h ngl, gbuf%RUPTCRIT, gbuf%LENGTH_ERR, aldp,
240 i gbuf%YIELD(ii(1)), gbuf%YIELD(ii(2)), gbuf%YIELD(ii(3)), gbuf%YIELD(ii(4)),
241 j gbuf%YIELD(ii(5)), gbuf%YIELD(ii(6)), exx, eyx,
242 k ezx, exy, eyy, ezy,
243 l exz, eyz, ezz, xcr,
244 m rx1, ry1, rz1, rx2,
245 n ry2, rz2, xin, ak,
246 o xm, xkm, xcm, xkr,
247 p vx1, vx2, vy1, vy2,
248 q vz1, vz2, nuvar, gbuf%VAR,
249 r gbuf%MASS, gbuf%DEFINI(ii(1)), gbuf%DEFINI(ii(2)), gbuf%DEFINI(ii(3)),
250 s gbuf%DEFINI(ii(4)), gbuf%DEFINI(ii(5)), gbuf%DEFINI(ii(6)), nft,
251 t stf, sanin, iresp, snpc,
252 u gbuf%G_YIELD_IN_COMP ,gbuf%G_XXOLD_IN_COMP, gbuf%YIELD_IN_COMP(ii(1)),gbuf%YIELD_IN_COMP(ii(2)),
253 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)),
254 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)),
255 x gbuf%XXOLD_IN_COMP(ii(5)),gbuf%XXOLD_IN_COMP(ii(6)))
256C
257 DO i=jft,jlt
258 IF (gbuf%OFF(i) /= -ten .AND. off(i) < one) gbuf%OFF(i) = off(i)
259 ENDDO
260 CALL r2len3(
261 1 jft, jlt, gbuf%OFF, dt2t,
262 2 neltst, ityptst, sti, stir,
263 3 ms, in, msrt, dmelrt,
264 4 gbuf%G_DT,gbuf%DT, ngl, xcr,
265 5 xin, xm, xkm, xcm,
266 6 xkr, nc1, nc2, jsms)
267 CALL r23bilan(
268 1 gbuf%EINT,partsav, ixr, geo,
269 2 v, ipartr, gbuf%MASS,gresav,
270 3 grth, igrth, gbuf%OFF, nc1,
271 4 nc2, x, vr, nel,
272 5 igre)
273 CALL r4tors(
274 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
275 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),tani, al,
276 3 h3d_data, nel)
277! preloading
278 IF (preld1>zero) THEN
279 DO i=jft,jlt
280 vl12(i) = (vx2(i)-vx1(i))*exx(i)+
281 1 (vy2(i)-vy1(i))*eyx(i)+(vz2(i)-vz1(i))*ezx(i)
282 ENDDO
283 CALL preload_axial(nel,preld1,gbuf%BPRELD,vl12,stf_f,gbuf%FOR)
284 gbuf%FOREP(jft:jlt) = gbuf%FOR(jft:jlt)
285 END IF
286 IF (iparit == 0) THEN
287 CALL r4cum3(
288 1 f, gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),
289 2 ar, gbuf%MOM(ii(1)),gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),
290 3 sti, stir, stifn, stifr,
291 4 fx1, fx2, fy1, fy2,
292 5 fz1, fz2, mx1, mx2,
293 6 my1, my2, mz1, mz2,
294 7 al, exx, eyx, ezx,
295 8 exy, eyy, ezy, exz,
296 9 eyz, ezz, nc1, nc2,
297 a nel)
298 ELSE
299 CALL r4cum3p(
300 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
301 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),sti, stir,
302 3 fsky, fsky, iadr, fx1,
303 4 fx2, fy1, fy2, fz1,
304 5 fz2, mx1, mx2, my1,
305 6 my2, mz1, mz2, exx,
306 7 eyx, ezx, exy, eyy,
307 8 ezy, exz, eyz, ezz,
308 9 al, nel, nft)
309 ENDIF
310C-----------------------------------------------
311 RETURN
312 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:40
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:39
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:58
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:65
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