OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r23law108.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!|| r23law108 ../engine/source/elements/spring/r23law108.F
25!||--- called by ------------------------------------------------------
26!|| r23forc3 ../engine/source/elements/spring/r23forc3.F
27!||--- calls -----------------------------------------------------
28!|| r23bilan ../engine/source/elements/spring/r23bilan.F
29!|| r23coor3 ../engine/source/elements/spring/r23coor3.F
30!|| r23l108def3 ../engine/source/elements/spring/r23l108def3.F
31!|| r23sens3 ../engine/source/elements/spring/r23sens3.F
32!|| r2cum3 ../engine/source/elements/spring/r2cum3.F
33!|| r2cum3p ../engine/source/elements/spring/r2cum3p.F
34!|| r2len3 ../engine/source/elements/spring/r2len3.F
35!|| r2tors ../engine/source/elements/spring/r2tors.F
36!||--- uses -----------------------------------------------------
37!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
38!|| h3d_mod ../engine/share/modules/h3d_mod.f
39!|| python_funct_mod ../common_source/modules/python_mod.F90
40!|| sensor_mod ../common_source/modules/sensor_mod.F90
41!|| table_mod ../engine/share/modules/table_mod.F
42!||====================================================================
43 SUBROUTINE r23law108(PYTHON,
44 1 ELBUF_STR, JFT, JLT, NEL,
45 2 MTN, IGEO, GEO, IPM,
46 3 IXR, X, TABLE, XDP,
47 4 F, NPF, TF, SKEW,
48 5 FLG_KJ2, VR, AR, V,
49 6 DT2T, NELTST, ITYPTST, STIFN,
50 7 STIFR, MS, IN, FSKY,
51 8 IADR, NSENSOR, SENSOR_TAB,OFFSET, ANIM,
52 9 PARTSAV, IPARTR, TANI,
53 A BUFMAT, BUFGEO, PM, RBY,
54 B FX1, FX2, FY1, FY2,
55 C FZ1, FZ2, MX1, MX2,
56 D MY1, MY2, MZ1, MZ2,
57 E GRESAV, GRTH, IGRTH, MSRT,
58 F DMELRT, H3D_DATA, JSMS, IGRE,
59 G NFT, STF, SANIN, IRESP,
60 H SNPC)
61C-----------------------------------------------
62C M o d u l e s
63C-----------------------------------------------
64 USE elbufdef_mod
65 USE table_mod
66 USE h3d_mod
67 USE sensor_mod
68 USE python_funct_mod
69C-----------------------------------------------
70C I m p l i c i t T y p e s
71C-----------------------------------------------
72#include "implicit_f.inc"
73C-----------------------------------------------
74C G l o b a l P a r a m e t e r s
75C-----------------------------------------------
76#include "mvsiz_p.inc"
77C-----------------------------------------------
78C C o m m o n B l o c k s
79C-----------------------------------------------
80#include "param_c.inc"
81#include "parit_c.inc"
82#include "com04_c.inc"
83C-----------------------------------------------
84C D u m m y A r g u m e n t s
85C-----------------------------------------------
86 type(python_), intent(inout) :: PYTHON
87 INTEGER, INTENT(IN) :: STF !< Size of TF
88 INTEGER, INTENT(IN) :: SANIN !< Size of ANIM
89 INTEGER, INTENT(IN) :: IRESP !< Single precision flag
90 INTEGER, INTENT(IN) :: SNPC !< Size of NPF
91 INTEGER, INTENT(IN) :: IGRE,NSENSOR
92 INTEGER, INTENT(IN) :: NFT
93 INTEGER, INTENT(IN) :: JSMS
94 INTEGER IXR(NIXR,*), NPF(*),IADR(3,*),IPARTR(*),
95 . IGEO(NPROPGI,*),JFT,JLT,NELTST ,ITYPTST,OFFSET,
96 . NEL,MTN,GRTH(*),IGRTH(*),FLG_KJ2,IPM(NPROPMI,*)
97 my_real DT2T ,
98 . GEO(NPROPG,*),X(*),F(*),TF(STF),SKEW(LSKEW,*),FSKY(*),
99 . VR(*), V(*), AR(*), STIFN(*),STIFR(*),MS(*), IN(*),
100 . ANIM(SANIN),PARTSAV(*),TANI(15,*),
101 . BUFMAT(*),BUFGEO(*),PM(*),RBY(*),
102 . FX1(MVSIZ),FY1(MVSIZ),FZ1(MVSIZ),
103 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
104 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
105 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),gresav(*),
106 . msrt(*), dmelrt(*)
107 DOUBLE PRECISION XDP(3,*)
108 TYPE(ttable) TABLE(*)
109C
110 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
111 TYPE(h3d_database) :: H3D_DATA
112 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR), INTENT(IN) :: SENSOR_TAB
113C-----------------------------------------------
114C L o c a l V a r i a b l e s
115C-----------------------------------------------
116 INTEGER NGL(MVSIZ),PID(MVSIZ),NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),
117 . MID(MVSIZ),IEQUIL(MVSIZ)
118C REAL
119 my_real
120 . STI(3,MVSIZ),STIR(3,MVSIZ),VISI(MVSIZ),VISIR(MVSIZ),
121 . USTI(MVSIZ),USTIR(MVSIZ),DF(MVSIZ),AL(MVSIZ),UNUSED(MVSIZ),
122 . UINER(MVSIZ),FR_W_E(MVSIZ),OFF(MVSIZ),BID
123 my_real
124 . exx2(mvsiz), eyx2(mvsiz), ezx2(mvsiz),
125 . exy2(mvsiz), eyy2(mvsiz), ezy2(mvsiz),
126 . exz2(mvsiz), eyz2(mvsiz), ezz2(mvsiz),
127 . al2(mvsiz),x1(mvsiz),y1(mvsiz),z1(mvsiz),
128 . x2(mvsiz),y2(mvsiz),z2(mvsiz),x3(mvsiz),y3(mvsiz),z3(mvsiz),
129 . ex(mvsiz),ey(mvsiz),ez(mvsiz),
130 . exx(mvsiz),eyx(mvsiz),ezx(mvsiz),
131 . exy(mvsiz),eyy(mvsiz),ezy(mvsiz),
132 . exz(mvsiz),eyz(mvsiz),ezz(mvsiz),
133 . xcr(mvsiz),xk(mvsiz),xm(mvsiz),xc(mvsiz),rx1(mvsiz),rx2(mvsiz),
134 . ry1(mvsiz),ry2(mvsiz),rz1(mvsiz),rz2(mvsiz),xin(mvsiz),
135 . ak(mvsiz),xkm(mvsiz),xcm(mvsiz),xkr(mvsiz),
136 . ex2(mvsiz),ey2(mvsiz),ez2(mvsiz),vx1(mvsiz),vx2(mvsiz),
137 . vy1(mvsiz),vy2(mvsiz),vz1(mvsiz),vz2(mvsiz)
138 INTEGER IGTYP,I,I0,NUVAR,IADBUF
139 DOUBLE PRECISION
140 . x1dp(3,mvsiz),x2dp(3,mvsiz),x3dp(3,mvsiz),
141 . elx(3,mvsiz),al2dp(mvsiz),aldp(mvsiz)
142C-----------------------------------------------
143 TYPE(g_bufel_),POINTER :: GBUF
144 INTEGER II(6)
145C=======================================================================
146 GBUF => elbuf_str%GBUF
147!
148 fx1(1:mvsiz) = zero
149 fx2(1:mvsiz) = zero
150 fy1(1:mvsiz) = zero
151 fy2(1:mvsiz) = zero
152 fz1(1:mvsiz) = zero
153 fz2(1:mvsiz) = zero
154 mx1(1:mvsiz) = zero
155 mx2(1:mvsiz) = zero
156 my1(1:mvsiz) = zero
157 my2(1:mvsiz) = zero
158 mz1(1:mvsiz) = zero
159 mz2(1:mvsiz) = zero
160!
161 DO i=1,6
162 ii(i) = (i-1)*nel + 1
163 ENDDO
164C
165 i0 = ixr(1,1)
166 igtyp = igeo(11,i0)
167C
168 bid = zero
169C
170 fr_w_e(1:nel) = zero
171C=======================================================================
172C=======================================================================
173 CALL r23coor3(
174 1 x, vr, ixr, xdp,
175 2 x1dp, x2dp, ngl, x1,
176 3 y1, z1, x2, y2,
177 4 z2, pid, mid, rx1,
178 5 ry1, rz1, rx2, ry2,
179 6 rz2, nc1, nc2, nel)
180 CALL r23sens3(
181 1 geo, gbuf%OFF, sensor_tab, gbuf%TOTDEPL(ii(1)),
182 2 gbuf%TOTDEPL(ii(2)),gbuf%TOTDEPL(ii(3)),gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
183 3 gbuf%LENGTH(ii(3)), gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)),
184 4 igeo, pid, nel, nsensor )
185C
186 DO i=jft,jlt
187 IF (gbuf%OFF(i) /= -ten) THEN
188 off(i)=min(one,abs(gbuf%OFF(i)))
189 ELSE
190C spring may be activated by sensor and is actually inactive.
191 off(i)=zero
192 ENDIF
193 ENDDO
194C
195 nuvar = nint(geo(25,i0)) !! from Mid
196 DO i=jft,jlt
197 mid(i) = ixr(5,i)
198 iadbuf = ipm(7,mid(i))
199 nuvar = max(nuvar, nint(bufmat(iadbuf + 4 -1)))
200 ENDDO
201!! is like r2def3 (spring type08)
202 CALL r23l108def3(python,
203 1 ipm, igeo, mid, pid,
204 2 bufmat, skew, geo, gbuf%FOR(ii(1)),
205 3 gbuf%FOR(ii(2)), gbuf%FOR(ii(3)), gbuf%EINT, gbuf%TOTDEPL(ii(1)),
206 4 gbuf%TOTDEPL(ii(2)), gbuf%TOTDEPL(ii(3)), npf, tf,
207 5 off, gbuf%DEP_IN_TENS(ii(1)), gbuf%DEP_IN_TENS(ii(2)), gbuf%DEP_IN_TENS(ii(3)),
208 6 gbuf%DEP_IN_COMP(ii(1)), gbuf%DEP_IN_COMP(ii(2)), gbuf%DEP_IN_COMP(ii(3)), gbuf%FOREP(ii(1)),
209 7 gbuf%FOREP(ii(2)), gbuf%FOREP(ii(3)), gbuf%LENGTH(ii(1)), gbuf%LENGTH(ii(2)),
210 8 gbuf%LENGTH(ii(3)), gbuf%MOM(ii(1)), gbuf%MOM(ii(2)), gbuf%MOM(ii(3)),
211 9 gbuf%TOTROT(ii(1)), gbuf%TOTROT(ii(2)), gbuf%TOTROT(ii(3)), gbuf%ROT_IN_TENS(ii(1)),
212 a gbuf%ROT_IN_TENS(ii(2)), gbuf%ROT_IN_TENS(ii(3)), gbuf%MOMEP(ii(1)), gbuf%MOMEP(ii(2)),
213 b gbuf%MOMEP(ii(3)), gbuf%ROT_IN_COMP(ii(1)), gbuf%ROT_IN_COMP(ii(2)), gbuf%ROT_IN_COMP(ii(3)),
214 c anim, gbuf%POSX, gbuf%POSY, gbuf%POSZ,
215 d gbuf%POSXX, gbuf%POSYY, gbuf%POSZZ,
216 e v, gbuf%E6, gbuf%RUPTCRIT, nel,
217 f gbuf%LENGTH_ERR, x1dp, x2dp, gbuf%YIELD(ii(1)),
218 g gbuf%YIELD(ii(2)), gbuf%YIELD(ii(3)), gbuf%YIELD(ii(4)), gbuf%YIELD(ii(5)),
219 h gbuf%YIELD(ii(6)), ngl, xkr, exx,
220 i eyx, ezx, exy, eyy,
221 j ezy, exz, eyz, ezz,
222 k xcr, rx1, ry1, rz1,
223 l rx2, ry2, rz2, xin,
224 m ak, xm, xkm, xcm,
225 n nc1, nc2, nuvar, gbuf%VAR,
226 o gbuf%MASS, gbuf%DEFINI(ii(1)), gbuf%DEFINI(ii(2)), gbuf%DEFINI(ii(3)),
227 p gbuf%DEFINI(ii(4)), gbuf%DEFINI(ii(5)), gbuf%DEFINI(ii(6)), iequil,
228 q gbuf%SKEW_ID, nft, stf, sanin,
229 r iresp, snpc, gbuf%G_YIELD_IN_COMP ,gbuf%G_XXOLD_IN_COMP,
230 s gbuf%YIELD_IN_COMP(ii(1)),gbuf%YIELD_IN_COMP(ii(2)),gbuf%YIELD_IN_COMP(ii(3)),gbuf%YIELD_IN_COMP(ii(4)),
231 t gbuf%YIELD_IN_COMP(ii(5)),gbuf%YIELD_IN_COMP(ii(6)),gbuf%XXOLD_IN_COMP(ii(1)),gbuf%XXOLD_IN_COMP(ii(2)),
232 u gbuf%XXOLD_IN_COMP(ii(3)),gbuf%XXOLD_IN_COMP(ii(4)),gbuf%XXOLD_IN_COMP(ii(5)),gbuf%XXOLD_IN_COMP(ii(6)))
233C
234 DO i=jft,jlt
235 IF (gbuf%OFF(i) /= -ten .AND. off(i) < one) gbuf%OFF(i) = off(i)
236 ENDDO
237C
238 CALL r2len3(
239 1 jft, jlt, gbuf%OFF, dt2t,
240 2 neltst, ityptst, sti, stir,
241 3 ms, in, msrt, dmelrt,
242 4 gbuf%G_DT,gbuf%DT, ngl, xcr,
243 5 xin, xm, xkm, xcm,
244 6 xkr, nc1, nc2, jsms)
245 CALL r23bilan(
246 1 gbuf%EINT,partsav, ixr, geo,
247 2 v, ipartr, gbuf%MASS,gresav,
248 3 grth, igrth, gbuf%OFF, nc1,
249 4 nc2, x, vr, nel,
250 5 igre)
251 CALL r2tors(
252 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
253 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),tani, h3d_data,
254 3 nel)
255 IF (iparit == 0) THEN
256 CALL r2cum3(
257 1 f, gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),
258 2 ar, gbuf%MOM(ii(1)),gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),
259 3 sti, stir, stifn, stifr,
260 4 fx1, fx2, fy1, fy2,
261 5 fz1, fz2, mx1, mx2,
262 6 my1, my2, mz1, mz2,
263 7 geo, x1, y1, z1,
264 8 x2, y2, z2, iequil,
265 9 exx, eyx, ezx, exy,
266 a eyy, ezy, exz, eyz,
267 b ezz, nc1, nc2, nel)
268 ELSE
269 CALL r2cum3p(
270 1 gbuf%FOR(ii(1)),gbuf%FOR(ii(2)),gbuf%FOR(ii(3)),gbuf%MOM(ii(1)),
271 2 gbuf%MOM(ii(2)),gbuf%MOM(ii(3)),sti, stir,
272 3 fsky, fsky, iadr, fx1,
273 4 fx2, fy1, fy2, fz1,
274 5 fz2, mx1, mx2, my1,
275 6 my2, mz1, mz2, geo,
276 7 x1, y1, z1, x2,
277 8 y2, z2, iequil, exx,
278 9 eyx, ezx, exy, eyy,
279 a ezy, exz, eyz, ezz,
280 b nel, nft)
281 ENDIF
282C-----------------------------------------------
283 RETURN
284 END SUBROUTINE r23law108
#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 r23l108def3(python, ipm, igeo, mid, pid, uparam, skew, geo, 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, iposx, iposy, iposz, iposxx, iposyy, iposzz, v, e6, critnew, nel, x0_err, x1dp, x2dp, yieldx, yieldy, yieldz, yieldx2, yieldy2, yieldz2, ngl, xkr, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, xcr, rx1, ry1, rz1, rx2, ry2, rz2, xin, ak, xm, xkm, xcm, nc1, nc2, nuvar, uvar, mass, dx0, dy0, dz0, rx0, ry0, rz0, iequil, skew_id, nft, stf, sanin, iresp, snpc, szyield_comp, szxxold_comp, yieldxc, yieldyc, yieldzc, yieldrxc, yieldryc, yieldrzc, dxoldc, dyoldc, dzoldc, drxoldc, dryoldc, drzoldc)
Definition r23l108def3.F:65
subroutine r23law108(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, 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, stf, sanin, iresp, snpc)
Definition r23law108.F:61
subroutine r23sens3(geo, off, sensor_tab, dx, dy, dz, x0, y0, z0, rx, ry, rz, igeo, pid, nel, nsensor)
Definition r23sens3.F:37
subroutine r2cum3(f, forx, fory, forz, xm, xmom, ymom, zmom, sti, stir, stifn, stifr, fx1, fx2, fy1, fy2, fz1, fz2, mx1, mx2, my1, my2, mz1, mz2, geo, x1, y1, z1, x2, y2, z2, iequil, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, nc1, nc2, nel)
Definition r2cum3.F:41
subroutine r2cum3p(forx, fory, forz, xmom, ymom, zmom, sti, stir, fsky, fskyv, iadr, fx1, fx2, fy1, fy2, fz1, fz2, mx1, mx2, my1, my2, mz1, mz2, geo, x1, y1, z1, x2, y2, z2, iequil, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, nel, nft)
Definition r2cum3p.F:41
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 r2tors(forx, fory, forz, xmom, ymom, zmom, tani, h3d_data, nel)
Definition r2tors.F:35