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!|| preload_axial_mod ../engine/source/elements/spring/preload_axial.F90
44!|| sensor_mod ../common_source/modules/sensor_mod.F90
45!||====================================================================
46 SUBROUTINE tforc3(
47 1 ELBUF_STR,JFT, JLT, PM,
48 2 GEO, NCT, X, F,
49 3 V, PARTSAV, BUFMAT, DT2T,
50 4 NELTST, ITYPTST, STIFN, FSKY,
51 5 IADT, OFFSET, IPARTT, TANI,
52 6 FX1, FX2, FY1, FY2,
53 7 FZ1, FZ2, NEL, GRESAV,
54 8 GRTH, IGRTH, MSTR, DMELTR,
55 9 IOUTPRT, IPM, NPF, TF,
56 A ITASK, H3D_DATA, NFT, MTN,
57 B JSMS, IGRE, PRELD1, STF_F,
58 C DT , SENSORS)
59C-----------------------------------------------
60C M o d u l e s
61C-----------------------------------------------
62 USE elbufdef_mod
63 USE h3d_mod
64 USE preload_axial_mod
65 USE dt_mod
66 USE sensor_mod
67C-----------------------------------------------
68C I m p l i c i t T y p e s
69C-----------------------------------------------
70#include "implicit_f.inc"
71C-----------------------------------------------
72C G l o b a l P a r a m e t e r s
73C-----------------------------------------------
74#include "mvsiz_p.inc"
75C-----------------------------------------------
76C C o m m o n B l o c k s
77C-----------------------------------------------
78#include "param_c.inc"
79#include "parit_c.inc"
80#include "com08_c.inc"
81C-----------------------------------------------
82C D u m m y A r g u m e n t s
83C-----------------------------------------------
84 INTEGER, INTENT(IN) :: IGRE
85 INTEGER, INTENT(IN) :: NFT
86 INTEGER, INTENT(IN) :: MTN
87 INTEGER, INTENT(IN) :: JSMS
88 INTEGER NCT(*),IADT(2,*),IPARTT(*),OFFSET,
89 . JFT,JLT,NELTST,ITYPTST,NEL,GRTH(*),IPM(NPROPMI,*),
90 . IGRTH(*),IOUTPRT,NPF(*),ITASK
91 my_real DT2T,
92 . BUFMAT(*),PM(*),GEO(NPROPG,*),X(*),F(*),V(*),PARTSAV(*),TF(*),
93 . STIFN(*),FSKY(*),TANI(15,*),FX1(MVSIZ),FY1(MVSIZ),FZ1(MVSIZ),
94 . FX2(MVSIZ),FY2(MVSIZ),FZ2(MVSIZ),GRESAV(*),MSTR(*),DMELTR(*)
95 my_real, INTENT(IN) :: PRELD1,STF_F
96C
97 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
98 TYPE(h3d_database) :: H3D_DATA
99 TYPE (DT_), INTENT(IN) :: DT
100 type (sensors_),INTENT(INOUT) :: SENSORS
101
102C-----------------------------------------------
103C L o c a l V a r i a b l e s
104C-----------------------------------------------
105 INTEGER LCO,NUVAR,NFUNC,IFUNC(100),I
106 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),NC1(MVSIZ),NC2(MVSIZ)
107 my_real
108 . sti(mvsiz),off(mvsiz),
109 . eps(mvsiz),al(mvsiz),vx1(mvsiz),vx2(mvsiz),vy1(mvsiz),
110 . vy2(mvsiz),vz1(mvsiz),vz2(mvsiz),ex(mvsiz),ey(mvsiz),ez(mvsiz),
111 . x1(mvsiz),x2(mvsiz),y1(mvsiz),y2(mvsiz),z1(mvsiz),z2(mvsiz)
112C
113 my_real ,DIMENSION(:) ,POINTER :: uvar
114 TYPE(g_bufel_),POINTER :: GBUF
115C-----------------------------------------------
116C S o u r c e L i n e s
117C-----------------------------------------------
118 gbuf => elbuf_str%GBUF
119C
120 lco=1+5*nft
121 CALL tcoor3(
122 1 x, nct(lco),mat, pid,
123 2 ngl, nc1, nc2, x1,
124 3 x2, y1, y2, z1,
125 4 z2, nel)
126 CALL tdefo3(
127 1 v, gbuf%OFF,off, nc1,
128 2 nc2, eps, al, vx1,
129 3 vx2, vy1, vy2, vz1,
130 4 vz2, ex, ey, ez,
131 5 x1, x2, y1, y2,
132 6 z1, z2, nel)
133C------- activation only in compression in laws
134 DO i=1,nel
135 IF (geo(2,pid(i))>zero .AND. gbuf%OFF(i)>zero) off(i)=zero
136 ENDDO
137 CALL tdlen3(
138 1 jft, jlt, pm, gbuf%OFF,
139 2 off, dt2t, neltst, ityptst,
140 3 mstr, dmeltr, gbuf%DT, nel,
141 4 gbuf%G_DT,mat, ngl, al,
142 5 jsms)
143!
144 IF (mtn == 1) THEN
145 CALL m1lawt(
146 1 pm, geo, off, gbuf%FOR,
147 2 gbuf%EINT, gbuf%AREA, gbuf%LENGTH,sti,
148 3 mat, pid, eps, al,
149 4 nel)
150c
151 ELSEIF (mtn == 2) THEN
152 CALL m2lawt(
153 1 pm, geo, off, gbuf%FOR,
154 2 gbuf%EINT, gbuf%AREA, gbuf%LENGTH,gbuf%PLA,
155 3 sti, mat, pid, ngl,
156 4 eps, al, nel)
157c
158 ELSEIF (mtn == 34) THEN
159 nuvar = gbuf%G_NUVAR
160 uvar => gbuf%VAR
161 CALL sigeps34t(nel ,ngl ,mat ,pid ,bufmat ,
162 . ipm ,geo ,off ,gbuf%FOR ,sti ,
163 . gbuf%EINT,gbuf%AREA,gbuf%LENGTH,al ,eps ,
164 . nuvar ,uvar )
165c
166c
167 ELSEIF (mtn == 44) THEN
168 nuvar = gbuf%G_NUVAR
169 uvar => gbuf%VAR
170 nfunc = ipm(10,mat(1))
171 DO i=1,nfunc
172 ifunc(i) = ipm(10+i,mat(1))
173 ENDDO
174 CALL sigeps44t(nel ,ngl ,mat ,pid ,bufmat ,
175 . ipm ,geo ,off ,gbuf%FOR ,sti ,
176 . gbuf%PLA ,gbuf%EINT,gbuf%AREA,gbuf%LENGTH,al ,
177 . eps ,nuvar ,uvar ,npf ,tf ,
178 . nfunc ,ifunc )
179c
180 ENDIF ! IF (MTN)
181C------- activation for GBUF%OFF + save the strain in buffer
182 DO i=1,nel
183 IF (geo(2,pid(i))>zero) THEN
184 IF (gbuf%OFF(i)==zero.AND.off(i)==one) gbuf%OFF(i)=one
185 END IF
186 gbuf%STRA(i) = gbuf%STRA(i) + eps(i)*dt1
187 ENDDO
188C--------------------------
189C BILANS PAR MATERIAU
190C--------------------------
191 IF (ioutprt>0) THEN
192 CALL tbilan(
193 1 pm, v, gbuf%EINT,gbuf%AREA,
194 2 partsav, ipartt, tani, gbuf%FOR,
195 3 gresav, grth, igrth, mat,
196 4 al, vx1, vx2, vy1,
197 5 vy2, vz1, vz2, x1,
198 6 x2, y1, y2, z1,
199 7 z2, itask, h3d_data, nel,
200 8 igre, sensors)
201 END IF !(IOUTPRT>0) THEN
202C-------------------------
203C /PRELOAD/AXIAL
204C-------------------------
205 IF (preld1>zero) THEN
206 CALL preload_axial(nel,preld1,gbuf%BPRELD,eps,stf_f,gbuf%FOR)
207 END IF
208C-------------------------
209C ASSEMBLE
210C-------------------------
211 IF (iparit == 0) THEN
212 CALL tfcum3(
213 1 f, gbuf%FOR,stifn, sti,
214 2 fx1, fx2, fy1, fy2,
215 3 fz1, fz2, gbuf%OFF,off,
216 4 nc1, nc2, ex, ey,
217 5 ez, nel)
218 ELSE
219 CALL tfcum3p(
220 1 gbuf%FOR,sti, fsky, fsky,
221 2 iadt, fx1, fx2, fy1,
222 3 fy2, fz1, fz2, gbuf%OFF,
223 4 off, nc1, nc2, ex,
224 5 ey, ez, nel, nft)
225 ENDIF
226C-----------------------------------------------
227 RETURN
228 END
subroutine m1lawt(pm, geo, off, for, eint, area, al0, sti, mat, mgm, eps, al, nel)
Definition m1lawt.F:33
subroutine m2lawt(pm, geo, off, for, eint, area, al0, pla, sti, mat, mgm, ngl, eps, al, nel)
Definition m2lawt.F:33
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(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:59