OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_beam3.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!|| fail_beam3 ../engine/source/elements/beam/fail_beam3.F
25!||--- called by ------------------------------------------------------
26!|| main_beam3 ../engine/source/elements/beam/main_beam3.F
27!||--- calls -----------------------------------------------------
28!|| fail_biquad_b ../engine/source/materials/fail/biquad/fail_biquad_b.F
29!|| fail_energy_b ../engine/source/materials/fail/energy/fail_energy_b.F
30!|| fail_gene1_b ../engine/source/materials/fail/gene1/fail_gene1_b.F90
31!|| fail_inievo_b ../engine/source/materials/fail/inievo/fail_inievo_b.F90
32!|| fail_johnson_b ../engine/source/materials/fail/johnson_cook/fail_johnson_b.F
33!|| fail_tab2_b ../engine/source/materials/fail/tabulated/fail_tab2_b.F90
34!|| fail_tensstrain_b ../engine/source/materials/fail/tensstrain/fail_tensstrain_b.F
35!|| fail_visual_b ../engine/source/materials/fail/visual/fail_visual_b.F90
36!||--- uses -----------------------------------------------------
37!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.f90
38!|| fail_gene1_b_mod ../engine/source/materials/fail/gene1/fail_gene1_b.F90
39!|| fail_inievo_b_mod ../engine/source/materials/fail/inievo/fail_inievo_b.F90
40!|| fail_tab2_b_mod ../engine/source/materials/fail/tabulated/fail_tab2_b.F90
41!|| fail_visual_b_mod ../engine/source/materials/fail/visual/fail_visual_b.F90
42!|| mat_elem_mod ../common_source/modules/mat_elem/mat_elem_mod.F90
43!||====================================================================
44 SUBROUTINE fail_beam3(ELBUF_STR ,MAT_PARAM,FAIL ,
45 . SNPC ,STF ,NEL ,JTHE ,DPLA ,
46 . TEMPEL ,NGL ,
47 . OFF ,EPSD ,NPF ,TF ,
48 . TIME ,IOUT ,ISTDO ,
49 . SVM ,PRESSURE,AREA ,AL ,
50 . F1 ,F2 ,F3 ,M1 ,M2 ,
51 . M3 ,ISMSTR ,EPSXX ,EPSXY ,EPSXZ ,
52 . KXX ,KYY ,KZZ ,DTIME ,
53 . NTABLE ,TABLE ,PLA ,SIGY )
54C-----------------------------------------------
55C M o d u l e s
56C-----------------------------------------------
57 USE mat_elem_mod
58 USE elbufdef_mod
59 USE fail_visual_b_mod
60 USE fail_gene1_b_mod
61 USE fail_inievo_b_mod
62 USE fail_tab2_b_mod
63C-----------------------------------------------
64C I m p l i c i t T y p e s
65C-----------------------------------------------
66#include "implicit_f.inc"
67C-----------------------------------------------
68C C o m m o n B l o c k s
69C-----------------------------------------------
70#include "comlock.inc"
71C-----------------------------------------------
72C D u m m y A r g u m e n t s
73C-----------------------------------------------
74 INTEGER ,INTENT(IN) :: NEL ! size of element group
75 INTEGER ,INTENT(IN) :: JTHE ! thermal dependency flag
76 INTEGER ,INTENT(IN) :: SNPC
77 INTEGER ,INTENT(IN) :: STF
78 INTEGER ,INTENT(IN) :: IOUT ! output file unit
79 INTEGER ,INTENT(IN) :: ISTDO ! output file unit
80 INTEGER ,INTENT(IN) :: ISMSTR
81 INTEGER ,DIMENSION(SNPC) ,INTENT(IN) :: NPF
82 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL ! table of element identifiers
83 my_real ,INTENT(IN) :: time
84 my_real ,INTENT(IN) :: area
85 my_real ,DIMENSION(NEL) ,INTENT(IN) :: dpla
86 my_real ,DIMENSION(NEL) ,INTENT(IN) :: al
87 my_real ,DIMENSION(NEL) ,INTENT(IN) :: svm
88 my_real ,DIMENSION(NEL) ,INTENT(IN) :: pressure
89 my_real ,DIMENSION(NEL) ,INTENT(IN) :: epsd
90 my_real ,DIMENSION(NEL) ,INTENT(IN) :: epsxx,epsxy,epsxz
91 my_real ,DIMENSION(NEL) ,INTENT(IN) :: kxx,kyy,kzz
92 my_real ,DIMENSION(NEL) ,INTENT(IN) :: tempel
93 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: f1,f2,f3
94 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: m1,m2,m3
95
96 my_real ,DIMENSION(STF) ,INTENT(IN) :: tf
97 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: off
98 my_real ,DIMENSION(NEL) ,INTENT(IN) :: pla ! the plastic strain of the current element
99 my_real ,INTENT(IN) :: dtime
100 INTEGER ,INTENT(IN) :: NTABLE
101 TYPE(ttable), DIMENSION(NTABLE), INTENT(INOUT) :: TABLE ! TABLE DATA
102 my_real ,DIMENSION(NEL) ,INTENT(IN) :: sigy
103C
104 TYPE (ELBUF_STRUCT_) ,INTENT(INOUT) :: ELBUF_STR
105 TYPE (MATPARAM_STRUCT_) ,INTENT(IN) :: MAT_PARAM
106 TYPE (FAIL_PARAM_) ,INTENT(IN) :: FAIL
107C-----------------------------------------------
108C L o c a l V a r i a b l e s
109C-----------------------------------------------
110
111 INTEGER :: I,IFL,NFUNC,NPARAM,IRUPT
112 my_real :: T0, TM
113 my_real ,DIMENSION(NEL) :: tstar
114
115C
116
117C=======================================================================
118c to avoid compilation error with unused arguments
119c they will be necessary for next development step
120c-----------------------------------------------------
121 ifl = 1 ! only one failure model for beams
122C--------------------------------------
123 nparam = fail%NUPARAM
124 nfunc = fail%NFUNC
125c-----------------------------------------
126 irupt = elbuf_str%GBUF%FAIL(1)%ILAWF
127c-------------------------------------
128c progressive element erosion
129c
130 DO i = 1,nel
131
132 IF (off(i) < em01) off(i) = zero
133 IF (off(i) < one ) off(i) = off(i)*four_over_5
134 ENDDO
135
136c-----------------------------------------
137 SELECT CASE (irupt)
138c------------------------------------
139 CASE (1) ! Johnson-Cook
140 ! Tstar computation for Jhonson-Cook failure : T* = (T-T0)/(TM-T0)
141 IF (jthe > 0 .or. elbuf_str%gbuf%g_temp > 0) THEN
142 t0 = mat_param%THERM%TREF
143 tm = mat_param%THERM%TMELT
144 tstar(1:nel) = max(zero,(tempel(1:nel)-t0)) / max((tm-t0),em20)
145 ELSE
146 tstar(1:nel) = zero
147 ENDIF
148
149 CALL fail_johnson_b(nel ,ngl ,nparam ,fail%UPARAM,
150 . time ,tstar ,svm ,pressure ,
151 . dpla ,epsd ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
152 . elbuf_str%GBUF%FAIL(1)%TDEL ,iout ,istdo )
153c---------------
154 CASE (10) ! Tension Strain failure model
155 IF (jthe > 0 .or. elbuf_str%gbuf%g_temp > 0) THEN
156 t0 = mat_param%THERM%TREF
157 tm = mat_param%THERM%TMELT
158 tstar(1:nel) = max(zero,(tempel(1:nel)-t0)) / max((tm-t0),em20)
159 ELSE
160 tstar(1:nel) = zero
161 ENDIF
162
163 CALL fail_tensstrain_b(
164 . nel ,ngl ,nparam ,fail%UPARAM,
165 . time ,epsd ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
166 . elbuf_str%GBUF%FAIL(1)%TDEL,iout ,istdo ,fail%IFUNC ,
167 . epsxx ,al ,tstar ,
168 . snpc ,npf ,stf ,
169 . tf ,ismstr ,elbuf_str%GBUF%FAIL(1)%NVAR, elbuf_str%GBUF%FAIL(1)%VAR,
170 . elbuf_str%GBUF%DMGSCL)
171
172c---------------
173 CASE (11) ! Energy failure model
174 CALL fail_energy_b(nel ,ngl ,nparam ,fail%UPARAM,
175 . time ,epsd ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
176 . elbuf_str%GBUF%FAIL(1)%TDEL ,iout ,istdo ,fail%IFUNC ,
177 . area ,f1 ,f2 ,f3 ,
178 . m1 ,m2 ,m3 ,snpc ,npf ,stf ,
179 . tf ,epsxx ,epsxy ,epsxz ,kxx ,kyy ,
180 . kzz ,elbuf_str%GBUF%FAIL(1)%NVAR,elbuf_str%GBUF%FAIL(1)%VAR,
181 . elbuf_str%GBUF%DMGSCL)
182c---------------
183
184 CASE (30) ! BIQUAD
185 CALL fail_biquad_b(nel ,ngl ,nparam ,fail%UPARAM,
186 . time ,svm ,pressure ,
187 . dpla ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
188 . elbuf_str%GBUF%FAIL(1)%TDEL ,iout ,istdo ,fail%IFUNC ,
189 . nfunc,snpc ,npf ,stf ,tf,
190 . elbuf_str%GBUF%FAIL(1)%NVAR, elbuf_str%GBUF%FAIL(1)%VAR,al,
191 . elbuf_str%GBUF%DMGSCL)
192c---------------
193 CASE (36) ! VISUAL
194 CALL fail_visual_b(nel ,ngl ,nparam ,fail%UPARAM,
195 . time ,elbuf_str%GBUF%FAIL(1)%DAMMX,
196 . iout ,istdo ,
197 . area ,f1 ,
198 . epsxx ,epsxy ,epsxz ,
199 . elbuf_str%GBUF%FAIL(1)%NVAR,
200 . elbuf_str%GBUF%FAIL(1)%VAR,ismstr, dtime)
201
202 CASE (39) ! Gene1 failure model
203 CALL fail_gene1_b(
204 . nel ,fail%NUPARAM ,elbuf_str%GBUF%FAIL(1)%NVAR ,fail%NFUNC,
205 . fail%IFUNC ,npf ,tf ,
206 . time ,dtime ,fail%UPARAM ,
207 . ngl ,elbuf_str%GBUF%DT ,epsd ,elbuf_str%GBUF%FAIL(1)%VAR ,
208 . off ,
209 . area ,f1 ,
210 . epsxx ,epsxy ,epsxz ,
211 . tempel ,
212 . elbuf_str%GBUF%FAIL(1)%DAMMX ,al ,table,
213 . fail%NTABLE,
214 . fail%TABLE ,elbuf_str%GBUF%FAIL(1)%LF_DAMMX ,fail%NIPARAM ,fail%IPARAM,
215 . snpc ,stf ,ntable)
216
217 CASE (42) ! INIEVO failure model
218 CALL fail_inievo_b(
219 . nel ,fail%NUPARAM ,elbuf_str%GBUF%FAIL(1)%NVAR ,
220 . table ,fail%NTABLE ,fail%TABLE ,time ,fail%UPARAM ,
221 . ngl ,al ,dpla ,epsd , elbuf_str%GBUF%FAIL(1)%VAR,
222 . f1 ,area ,
223 . pla ,sigy ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX ,
224 . elbuf_str%GBUF%FAIL(1)%TDEL ,
225 . elbuf_str%GBUF%FAIL(1)%DAMINI,
226 . ntable,elbuf_str%GBUF%DMGSCL)
227
228 CASE (41) ! TAB2 failure model
229 CALL fail_tab2_b(
230 . nel ,fail%NUPARAM ,elbuf_str%GBUF%FAIL(1)%NVAR ,fail%NFUNC ,fail%IFUNC ,
231 . npf ,table ,tf ,time ,fail%UPARAM ,
232 . ngl ,al ,dpla ,epsd ,elbuf_str%GBUF%FAIL(1)%VAR,
233 . f1 ,area ,
234 . tempel ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX ,elbuf_str%GBUF%FAIL(1)%TDEL ,
235 . fail%NTABLE ,fail%TABLE,
236 . snpc ,stf ,ntable ,elbuf_str%GBUF%DMGSCL)
237c-------------
238 END SELECT
239c-----------
240 DO i= 1,nel
241 IF (off(i) == four_over_5) THEN
242#include "lockon.inc"
243 WRITE(iout, 1000) ngl(i),time
244 WRITE(istdo,1000) ngl(i),time
245#include "lockoff.inc"
246 END IF
247 END DO
248c------------------
249 1000 FORMAT(1x,'DELETED BEAM ELEMENT in 1',i10,1x,'AT TIME :',1pe12.4)
250
251
252 RETURN
253 END SUBROUTINE fail_beam3
#define my_real
Definition cppsort.cpp:32
subroutine fail_beam3(elbuf_str, mat_param, fail, snpc, stf, nel, jthe, dpla, tempel, ngl, off, epsd, npf, tf, time, iout, istdo, svm, pressure, area, al, f1, f2, f3, m1, m2, m3, ismstr, epsxx, epsxy, epsxz, kxx, kyy, kzz, dtime, ntable, table, pla, sigy)
Definition fail_beam3.F:54
subroutine fail_biquad_b(nel, ngl, nuparam, uparam, time, svm, pressure, dpla, off, dfmax, tdel, iout, istdo, ifunc, nfunc, snpc, npf, stf, tf, nuvar, uvar, al, dmgscl)
subroutine fail_energy_b(nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, area, f1, f2, f3, m1, m2, m3, snpc, npf, stf, tf, epsxx, epsxy, epsxz, kxx, kyy, kzz, nvar, uvar, dmgscl)
subroutine fail_johnson_b(nel, ngl, nuparam, uparam, time, tstar, svm, pressure, dpla, epsd, off, dfmax, tdel, iout, istdo)
subroutine fail_tensstrain_b(nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, epsxx, al, tstar, snpc, npf, stf, tf, ismstr, nuvar, uvar, dmgscl)
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define max(a, b)
Definition macros.h:21