OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
tforc3.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!|| tforc3 ../engine/source/elements/truss/tforc3.F
25!||--- called by ------------------------------------------------------
26!|| forint ../engine/source/elements/forint.f
27!||--- calls -----------------------------------------------------
28!|| m1lawt ../engine/source/materials/mat/mat001/m1lawt.F
29!|| m2lawt ../engine/source/materials/mat/mat002/m2lawt.F
30!|| preload_axial ../engine/source/elements/spring/preload_axial.f90
31!|| sigeps34t ../engine/source/materials/mat/mat034/sigeps34t.F
32!|| sigeps44t ../engine/source/materials/mat/mat044/sigeps44t.F
33!|| tbilan ../engine/source/elements/truss/tbilan.F
34!|| tcoor3 ../engine/source/elements/truss/tcoor3.F
35!|| tdefo3 ../engine/source/elements/truss/tdefo3.F
36!|| tdlen3 ../engine/source/elements/truss/tdlen3.F
37!|| tfcum3 ../engine/source/elements/truss/tfcum3.F
38!|| tfcum3p ../engine/source/elements/truss/tfcum3p.F
39!||--- uses -----------------------------------------------------
40!|| dt_mod ../engine/source/modules/dt_mod.F
41!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
42!|| h3d_mod ../engine/share/modules/h3d_mod.F
43!|| matparam_def_mod ../common_source/modules/mat_elem/matparam_def_mod.F90
44!|| preload_axial_mod ../engine/source/elements/spring/preload_axial.F90
45!|| sensor_mod ../common_source/modules/sensor_mod.F90
46!||====================================================================
47 SUBROUTINE tforc3(mat_param ,NUMMAT,
48 1 ELBUF_STR,JFT, JLT, PM,
49 2 GEO, NCT, X, F,
50 3 V, PARTSAV, BUFMAT, DT2T,
51 4 NELTST, ITYPTST, STIFN, FSKY,
52 5 IADT, OFFSET, IPARTT, TANI,
53 6 FX1, FX2, FY1, FY2,
54 7 FZ1, FZ2, NEL, GRESAV,
55 8 GRTH, IGRTH, MSTR, DMELTR,
56 9 IOUTPRT, IPM, NPF, TF,
57 A ITASK, H3D_DATA, NFT, MTN,
58 B JSMS, IGRE, PRELD1, STF_F,
59 C DT , SENSORS)
60C-----------------------------------------------
61C M o d u l e s
62C-----------------------------------------------
63 USE elbufdef_mod
64 USE h3d_mod
65 USE preload_axial_mod
66 USE dt_mod
67 USE sensor_mod
68 use matparam_def_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 "com08_c.inc"
83C-----------------------------------------------
84C D u m m y A r g u m e n t s
85C-----------------------------------------------
86 INTEGER, INTENT(IN) :: IGRE
87 INTEGER, INTENT(IN) :: NFT
88 INTEGER, INTENT(IN) :: MTN
89 INTEGER, INTENT(IN) :: NUMMAT
90 INTEGER, INTENT(IN) :: JSMS
91 INTEGER NCT(*),IADT(2,*),IPARTT(*),OFFSET,
92 . JFT,JLT,NELTST,ITYPTST,NEL,GRTH(*),IPM(NPROPMI,*),
93 . IGRTH(*),IOUTPRT,NPF(*),ITASK
94 my_real DT2T,
95 . BUFMAT(*),PM(*),GEO(NPROPG,*),X(*),F(*),V(*),PARTSAV(*),TF(*),
96 . STIFN(*),FSKY(*),TANI(15,*),FX1(MVSIZ),FY1(MVSIZ),FZ1(MVSIZ),
97 . FX2(MVSIZ),FY2(MVSIZ),FZ2(MVSIZ),GRESAV(*),MSTR(*),DMELTR(*)
98 my_real, INTENT(IN) :: preld1,stf_f
99C
100 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
101 TYPE(h3d_database) :: H3D_DATA
102 TYPE (DT_), INTENT(IN) :: DT
103 type (sensors_),INTENT(INOUT) :: SENSORS
104 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
105C-----------------------------------------------
106C L o c a l V a r i a b l e s
107C-----------------------------------------------
108 INTEGER I,IMAT,LCO,NUVAR,NFUNC
109 INTEGER IFUNC(100)
110 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),NC1(MVSIZ),NC2(MVSIZ)
111 my_real
112 . sti(mvsiz),off(mvsiz),
113 . eps(mvsiz),al(mvsiz),vx1(mvsiz),vx2(mvsiz),vy1(mvsiz),
114 . vy2(mvsiz),vz1(mvsiz),vz2(mvsiz),ex(mvsiz),ey(mvsiz),ez(mvsiz),
115 . x1(mvsiz),x2(mvsiz),y1(mvsiz),y2(mvsiz),z1(mvsiz),z2(mvsiz)
116C
117 my_real ,DIMENSION(:) ,POINTER :: uvar
118 TYPE(g_bufel_),POINTER :: GBUF
119C-----------------------------------------------
120C S o u r c e L i n e s
121C-----------------------------------------------
122 gbuf => elbuf_str%GBUF
123C
124 lco=1+5*nft
125 CALL tcoor3(
126 1 x, nct(lco),mat, pid,
127 2 ngl, nc1, nc2, x1,
128 3 x2, y1, y2, z1,
129 4 z2, nel)
130 CALL tdefo3(
131 1 v, gbuf%OFF,off, nc1,
132 2 nc2, eps, al, vx1,
133 3 vx2, vy1, vy2, vz1,
134 4 vz2, ex, ey, ez,
135 5 x1, x2, y1, y2,
136 6 z1, z2, nel)
137C------- activation only in compression in laws
138 imat = mat(1)
139 DO i=1,nel
140 IF (geo(2,pid(i))>zero .AND. gbuf%OFF(i)>zero) off(i)=zero
141 ENDDO
142 CALL tdlen3(
143 1 jft, jlt, pm, gbuf%OFF,
144 2 off, dt2t, neltst, ityptst,
145 3 mstr, dmeltr, gbuf%DT, nel,
146 4 gbuf%G_DT,mat, ngl, al,
147 5 jsms)
148!
149 IF (mtn == 1) THEN
150 CALL m1lawt(
151 1 pm, geo, off, gbuf%FOR,
152 2 gbuf%EINT, gbuf%AREA, gbuf%LENGTH,sti,
153 3 mat, pid, eps, al,
154 4 nel)
155c
156 ELSEIF (mtn == 2) THEN
157 CALL m2lawt(mat_param(imat) ,
158 1 geo, off, gbuf%FOR,
159 2 gbuf%EINT, gbuf%AREA, gbuf%LENGTH,gbuf%PLA,
160 3 sti, pid, ngl,
161 4 eps, al, nel)
162c
163 ELSEIF (mtn == 34) THEN
164 nuvar = gbuf%G_NUVAR
165 uvar => gbuf%VAR
166 CALL sigeps34t(nel ,ngl ,mat ,pid ,bufmat ,
167 . ipm ,geo ,off ,gbuf%FOR ,sti ,
168 . gbuf%EINT,gbuf%AREA,gbuf%LENGTH,al ,eps ,
169 . nuvar ,uvar )
170c
171c
172 ELSEIF (mtn == 44) THEN
173 nuvar = gbuf%G_NUVAR
174 uvar => gbuf%VAR
175 nfunc = ipm(10,mat(1))
176 DO i=1,nfunc
177 ifunc(i) = ipm(10+i,mat(1))
178 ENDDO
179 CALL sigeps44t(nel ,ngl ,mat ,pid ,bufmat ,
180 . ipm ,geo ,off ,gbuf%FOR ,sti ,
181 . gbuf%PLA ,gbuf%EINT,gbuf%AREA,gbuf%LENGTH,al ,
182 . eps ,nuvar ,uvar ,npf ,tf ,
183 . nfunc ,ifunc )
184c
185 ENDIF ! IF (MTN)
186C------- activation for GBUF%OFF + save the strain in buffer
187 DO i=1,nel
188 IF (geo(2,pid(i))>zero) THEN
189 IF (gbuf%OFF(i)==zero.AND.off(i)==one) gbuf%OFF(i)=one
190 END IF
191 gbuf%STRA(i) = gbuf%STRA(i) + eps(i)*dt1
192 ENDDO
193C--------------------------
194C BALANCES BY MATERIAL
195C--------------------------
196 IF (ioutprt>0) THEN
197 CALL tbilan(
198 1 pm, v, gbuf%EINT,gbuf%AREA,
199 2 partsav, ipartt, tani, gbuf%FOR,
200 3 gresav, grth, igrth, mat,
201 4 al, vx1, vx2, vy1,
202 5 vy2, vz1, vz2, x1,
203 6 x2, y1, y2, z1,
204 7 z2, itask, h3d_data, nel,
205 8 igre, sensors)
206 END IF !(IOUTPRT>0) THEN
207C-------------------------
208C /PRELOAD/AXIAL
209C-------------------------
210 IF (preld1>zero) THEN
211 CALL preload_axial(nel,preld1,gbuf%BPRELD,eps,stf_f,gbuf%FOR)
212 END IF
213C-------------------------
214C ASSEMBLE
215C-------------------------
216 IF (iparit == 0) THEN
217 CALL tfcum3(
218 1 f, gbuf%FOR,stifn, sti,
219 2 fx1, fx2, fy1, fy2,
220 3 fz1, fz2, gbuf%OFF,off,
221 4 nc1, nc2, ex, ey,
222 5 ez, nel)
223 ELSE
224 CALL tfcum3p(
225 1 gbuf%FOR,sti, fsky, fsky,
226 2 iadt, fx1, fx2, fy1,
227 3 fy2, fz1, fz2, gbuf%OFF,
228 4 off, nc1, nc2, ex,
229 5 ey, ez, nel, nft)
230 ENDIF
231C-----------------------------------------------
232 RETURN
233 END
subroutine forint(timers, python, pm, geo, x, a, ar, v, vr, ms, in, w, elbuf, wa, val2, veul, fv, stifn, stifr, fsky, tf, bufmat, partsav, d, dr, eani, elbuf_tab, tani, fani, fsav, sensors, nloc_dmg, skew, anin, dt2t, bufgeo, itab, iads, iadq, iadt, iadp, mat_elem, iadr, iparg, ale_connect, npc, ixs, ixq, ixt, ixp, ixr, neltst, ipari, ityptst, nstrf, ipart, iparts, ipartq, ipartt, ipartp, ipartr, ipartur, fr_wave, rby, secfcum, agrav, igrv, lgrav, ixs10, ixs20, iads10, iads20, ixs16, iads16, w16, fskym, msnf, igeo, ipm, xsec, itask, temp, fthe, fthesky, igrounc, ngrounc, gresav, grth, igrth, xdp, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, table, vf, af, df, wf, ffsky, afglob, nbsdvois, nercvois, nesdvois, lercvois, lesdvois, phi1, phi2, msf, nodft, nodlt, flg_kj2, por, icontact, ifoam, sfem_nodvar, kxig3d, ixig3d, knot, wige, condn, condnsky, s_sfem_nodvar, tagprt_sms, itagnd, ms_2d, nale, stressmean, knotlocpc, knotlocel, subset, flag_slipring_update, flag_retractor_update, h3d_data, ifthe, icondn, dt, output, sbufmat, snpc, stf, nodadt, dtfac1, dtmin1, idtmin, iout, istdo, idtmins, dtfacs, nsvois, iresp, maxfunc, userl_avail, glob_therm, imon_mat, dtmins, sanin, ngrth, nelem)
Definition forint.F:126
subroutine m1lawt(pm, geo, off, for, eint, area, al0, sti, mat, mgm, eps, al, nel)
Definition m1lawt.F:33
subroutine m2lawt(mat_param, geo, off, for, eint, area, al0, pla, sti, mgm, ngl, eps, al, nel)
Definition m2lawt.F:34
subroutine sigeps34t(nel, ngl, mat, pid, uparam, ipm, geo, off, for, sti, eint, area, al0, al, epsp, nuvar, uvar)
Definition sigeps34t.F:32
subroutine sigeps44t(nel, ngl, mat, pid, uparam, ipm, geo, off, for, sti, pla, eint, area, al0, al, epsp, nuvar, uvar, npf, tf, nfunc, ifunc)
Definition sigeps44t.F:35
subroutine tbilan(pm, v, eint, area, partsav, ipartt, tani, for, gresav, grth, igrth, mat, al, vx1, vx2, vy1, vy2, vz1, vz2, x1, x2, y1, y2, z1, z2, itask, h3d_data, nel, igre, sensors)
Definition tbilan.F:43
subroutine tcoor3(x, ncc, mat, mgm, ngl, nc1, nc2, x1, x2, y1, y2, z1, z2, nel)
Definition tcoor3.F:33
subroutine tdefo3(v, offg, off, nc1, nc2, eps, al, vx1, vx2, vy1, vy2, vz1, vz2, ex, ey, ez, x1, x2, y1, y2, z1, z2, nel)
Definition tdefo3.F:35
subroutine tdlen3(jft, jlt, pm, offg, off, dt2t, neltst, ityptst, mstr, dmeltr, dtel, nel, g_dt, mat, ngl, al, jsms)
Definition tdlen3.F:34
subroutine tfcum3(f, for, stifn, sti, fx1, fx2, fy1, fy2, fz1, fz2, offg, off, nc1, nc2, ex, ey, ez, nel)
Definition tfcum3.F:34
subroutine tfcum3p(for, sti, fsky, fskyv, iadt, fx1, fx2, fy1, fy2, fz1, fz2, offg, off, nc1, nc2, ex, ey, ez, nel, nft)
Definition tfcum3p.F:34
subroutine tforc3(mat_param, nummat, elbuf_str, jft, jlt, pm, geo, nct, x, f, v, partsav, bufmat, dt2t, neltst, ityptst, stifn, fsky, iadt, offset, ipartt, tani, fx1, fx2, fy1, fy2, fz1, fz2, nel, gresav, grth, igrth, mstr, dmeltr, ioutprt, ipm, npf, tf, itask, h3d_data, nft, mtn, jsms, igre, preld1, stf_f, dt, sensors)
Definition tforc3.F:60