OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_orthstrain.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_fail_orthstrain (fail, fail_id, irupt, lsubmodel, unitab, fail_tag)

Function/Subroutine Documentation

◆ hm_read_fail_orthstrain()

subroutine hm_read_fail_orthstrain ( type(fail_param_), intent(inout) fail,
integer, intent(in) fail_id,
integer, intent(in) irupt,
type(submodel_data), dimension(*), intent(in) lsubmodel,
type(unit_type_), intent(in) unitab,
type(fail_tag_), intent(inout) fail_tag )

Definition at line 37 of file hm_read_fail_orthstrain.F.

40C-----------------------------------------------
41c ROUTINE DESCRIPTION :
42c Read orthotropic strain failure model parameters
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE fail_param_mod
47 USE unitab_mod
48 USE submodel_mod
50 USE elbuftag_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "units_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER ,INTENT(IN) :: FAIL_ID ! failure model ID
63 INTEGER ,INTENT(IN) :: IRUPT ! failure model type number
64 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB ! table of input units
65 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*) ! submodel table
66 TYPE(FAIL_PARAM_) ,INTENT(INOUT) :: FAIL ! failure model data structure
67 TYPE(FAIL_TAG_) ,INTENT(INOUT) :: FAIL_TAG ! failure model data structure
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71 INTEGER :: IDAM,ISOLID,FT1,FT2,FT12,FC1,FC2,FC12,STRDEF
72 INTEGER ,PARAMETER :: NFUNC = 13
73 INTEGER ,DIMENSION(NFUNC) :: IFUNC
74 my_real :: epspref,et1,et2,et12,ec1,ec2,ec12,et3,ec3,ec23,et23,ec31,et31,
75 . et1m,et2m,et12m,ec1m,ec2m,ec12m,et3m,ec3m,ec23m,et23m,ec31m,et31m,
76 . fac_m,fac_l,fac_t,fac_e,alpha,fscale_siz,ref_siz,pthkf,
77 . epspref_unit,fscal_unit,ref_siz_unit,fcut
78 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
79C=======================================================================
80 is_encrypted = .false.
81 is_available = .false.
82C--------------------------------------------------
83C EXTRACT DATA (IS OPTION CRYPTED)
84C--------------------------------------------------
85 CALL hm_option_is_encrypted(is_encrypted)
86C--------------------------------------------------
87C EXTRACT DATAS (REAL VALUES)
88C--------------------------------------------------
89 CALL hm_get_floatv ('Pthk' ,pthkf ,is_available,lsubmodel,unitab)
90 CALL hm_get_intv ('Strdef' ,strdef ,is_available,lsubmodel)
91c
92 CALL hm_get_floatv ('Epsilon_Dot_ref',epspref ,is_available,lsubmodel,unitab)
93 CALL hm_get_floatv ('Fcut' ,fcut ,is_available,lsubmodel,unitab)
94 CALL hm_get_intv ('fct_IDel' ,ifunc(13) ,is_available,lsubmodel)
95 CALL hm_get_floatv ('Fscale_el' ,fscale_siz ,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv ('EI_ref' ,ref_siz ,is_available,lsubmodel,unitab)
97!
98 CALL hm_get_floatv ('Epsilon_11tf' ,et1 ,is_available,lsubmodel,unitab)
99 CALL hm_get_floatv ('Epsilon_11tm' ,et1m ,is_available,lsubmodel,unitab)
100 CALL hm_get_intv ('Fct_ID_11t' ,ifunc(1) ,is_available,lsubmodel)
101 CALL hm_get_floatv ('Epsilon_11cf' ,ec1 ,is_available,lsubmodel,unitab)
102 CALL hm_get_floatv ('Epsilon_11cm' ,ec1m ,is_available,lsubmodel,unitab)
103 CALL hm_get_intv ('Fct_ID_11c' ,ifunc(4) ,is_available,lsubmodel)
104!
105 CALL hm_get_floatv ('Epsilon_22tf' ,et2 ,is_available,lsubmodel,unitab)
106 CALL hm_get_floatv ('Epsilon_22tm' ,et2m ,is_available,lsubmodel,unitab)
107 CALL hm_get_intv ('Fct_ID_22t' ,ifunc(2) ,is_available,lsubmodel)
108 CALL hm_get_floatv ('Epsilon_22cf' ,ec2 ,is_available,lsubmodel,unitab)
109 CALL hm_get_floatv ('Epsilon_22cm' ,ec2m ,is_available,lsubmodel,unitab)
110 CALL hm_get_intv ('Fct_ID_22c' ,ifunc(5) ,is_available,lsubmodel)
111!
112 CALL hm_get_floatv ('Epsilon_33tf' ,et3 ,is_available,lsubmodel,unitab)
113 CALL hm_get_floatv ('Epsilon_33tm' ,et3m ,is_available,lsubmodel,unitab)
114 CALL hm_get_intv ('Fct_ID_33t' ,ifunc(7) ,is_available,lsubmodel)
115 CALL hm_get_floatv ('Epsilon_33cf' ,ec3 ,is_available,lsubmodel,unitab)
116 CALL hm_get_floatv ('Epsilon_33cm' ,ec3m ,is_available,lsubmodel,unitab)
117 CALL hm_get_intv ('Fct_ID_33c' ,ifunc(8) ,is_available,lsubmodel)
118!
119 CALL hm_get_floatv ('Epsilon_12tf' ,et12 ,is_available,lsubmodel,unitab)
120 CALL hm_get_floatv ('Epsilon_12tm' ,et12m ,is_available,lsubmodel,unitab)
121 CALL hm_get_intv ('Fct_ID_12t' ,ifunc(3) ,is_available,lsubmodel)
122 CALL hm_get_floatv ('Epsilon_12cf' ,ec12 ,is_available,lsubmodel,unitab)
123 CALL hm_get_floatv ('Epsilon_12cm' ,ec12m ,is_available,lsubmodel,unitab)
124 CALL hm_get_intv ('Fct_ID_12c' ,ifunc(6) ,is_available,lsubmodel)
125!
126 CALL hm_get_floatv ('Epsilon_23tf' ,et23 ,is_available,lsubmodel,unitab)
127 CALL hm_get_floatv ('Epsilon_23tm' ,et23m ,is_available,lsubmodel,unitab)
128 CALL hm_get_intv ('Fct_ID_23t' ,ifunc(9) ,is_available,lsubmodel)
129 CALL hm_get_floatv ('Epsilon_23cf' ,ec23 ,is_available,lsubmodel,unitab)
130 CALL hm_get_floatv ('Epsilon_23cm' ,ec23m ,is_available,lsubmodel,unitab)
131 CALL hm_get_intv ('Fct_ID_23c' ,ifunc(10) ,is_available,lsubmodel)
132!
133 CALL hm_get_floatv ('Epsilon_31tf' ,et31 ,is_available,lsubmodel,unitab)
134 CALL hm_get_floatv ('Epsilon_31tm' ,et31m ,is_available,lsubmodel,unitab)
135 CALL hm_get_intv ('Fct_ID_31t' ,ifunc(11) ,is_available,lsubmodel)
136 CALL hm_get_floatv ('Epsilon_31cf' ,ec31 ,is_available,lsubmodel,unitab)
137 CALL hm_get_floatv ('Epsilon_31cm' ,ec31m ,is_available,lsubmodel,unitab)
138 CALL hm_get_intv ('Fct_ID_31c' ,ifunc(12) ,is_available,lsubmodel)
139!
140 !units
141 CALL hm_get_floatv_dim('Epsilon_Dot_ref' ,epspref_unit ,is_available,lsubmodel,unitab)
142 IF (epspref == zero) epspref = one*epspref_unit
143!
144 CALL hm_get_floatv_dim('Fscale_el' ,fscal_unit ,is_available, lsubmodel, unitab)
145 IF (fscale_siz == zero) fscale_siz = one*fscal_unit
146!
147 CALL hm_get_floatv_dim('EI_ref' ,ref_siz_unit ,is_available, lsubmodel, unitab)
148 IF (ref_siz == zero) ref_siz = one *ref_siz_unit
149c-----------------------------------------------------
150c default values
151c-----------------------------------------------------
152 IF (et1 == zero) et1 = infinity
153 IF (et2 == zero) et2 = infinity
154 IF (et3 == zero) et3 = infinity
155 IF (et12 == zero) et12 = infinity
156 IF (et23 == zero) et23 = infinity
157 IF (et31 == zero) et31 = infinity
158 IF (ec1 == zero) ec1 = et1
159 IF (ec2 == zero) ec2 = et2
160 IF (ec3 == zero) ec3 = et3
161 IF (ec12 == zero) ec12 = et12
162 IF (ec23 == zero) ec23 = et23
163 IF (ec31 == zero) ec31 = et31
164
165 IF (et1m == zero) et1m = 1.2*et1
166 IF (et2m == zero) et2m = 1.2*et2
167 IF (et3m == zero) et3m = 1.2*et3
168 IF (ec1m == zero) ec1m = 1.2*ec1
169 IF (ec2m == zero) ec2m = 1.2*ec2
170 IF (ec3m == zero) ec3m = 1.2*ec3
171 IF (et12m == zero) et12m = 1.2*et12
172 IF (et23m == zero) et23m = 1.2*et23
173 IF (et31m == zero) et31m = 1.2*et31
174 IF (ec12m == zero) ec12m = 1.2*ec12
175 IF (ec23m == zero) ec23m = 1.2*ec23
176 IF (ec31m == zero) ec31m = 1.2*ec31
177c
178 IF (pthkf == zero) pthkf = one-em06
179 pthkf = min(pthkf, one)
180 pthkf = max(pthkf,-one)
181 IF (fcut == zero) fcut = 10000.0d0*unitab%FAC_T_WORK
182!
183 idam = 0
184 isolid = 0
185 IF (strdef == 0) strdef = 1
186 IF (idam == 0) idam = 1 ! => linear damage, default value for shells
187c IDAM = 2 => linear stress softening, the only choice for solids
188c-----------------------------------------------------
189 fail%KEYWORD = 'ORTHSTRAIN'
190 fail%IRUPT = irupt
191 fail%FAIL_ID = fail_id
192 fail%NUPARAM = 28
193 fail%NIPARAM = 0
194 fail%NUVAR = 13
195 fail%NFUNC = nfunc
196 fail%NTABLE = 0
197 fail%NMOD = 12
198 fail%PTHK = pthkf
199c
200 ALLOCATE (fail%UPARAM(fail%NUPARAM))
201 ALLOCATE (fail%IPARAM(fail%NIPARAM))
202 ALLOCATE (fail%IFUNC (fail%NFUNC))
203 ALLOCATE (fail%TABLE (fail%NTABLE))
204 ALLOCATE (fail%MODE (fail%NMOD))
205c
206 ! Modes of failure
207 fail_tag%LF_DAMMX = fail_tag%LF_DAMMX + fail%NMOD
208 fail%MODE(1) = "Failure tensile XX"
209 fail%MODE(2) = "Failure tensile YY"
210 fail%MODE(3) = "Failure positive shear XY"
211 fail%MODE(4) = "Failure compression XX"
212 fail%MODE(5) = "Failure compression YY"
213 fail%MODE(6) = "Failure negative shear XY"
214 fail%MODE(7) = "Failure tensile ZZ"
215 fail%MODE(8) = "Failure compression ZZ"
216 fail%MODE(9) = "Failure positive shear YZ"
217 fail%MODE(10) = "Failure negative shear YZ"
218 fail%MODE(11) = "Failure positive shear ZX"
219 fail%MODE(12) = "Failure negative shear ZX"
220c
221 fail%IFUNC(1:nfunc) = ifunc(1:nfunc)
222c
223 fail%UPARAM(1) = idam
224 fail%UPARAM(2) = 0 ! PTHK
225 fail%UPARAM(3) = isolid ! not used
226 fail%UPARAM(4) = et1
227 fail%UPARAM(5) = et1m
228 fail%UPARAM(6) = et2
229 fail%UPARAM(7) = et2m
230 fail%UPARAM(8) = ec1
231 fail%UPARAM(9) = ec1m
232 fail%UPARAM(10) = ec2
233 fail%UPARAM(11) = ec2m
234 fail%UPARAM(12) = et12
235 fail%UPARAM(13) = et12m
236 fail%UPARAM(14) = ec12
237 fail%UPARAM(15) = ec12m
238 fail%UPARAM(16) = fcut
239 fail%UPARAM(17) = epspref
240 fail%UPARAM(18) = et3
241 fail%UPARAM(19) = et3m
242 fail%UPARAM(20) = ec3
243 fail%UPARAM(21) = ec3m
244 fail%UPARAM(22) = et23
245 fail%UPARAM(23) = et23m
246 fail%UPARAM(24) = ec23
247 fail%UPARAM(25) = ec23m
248 fail%UPARAM(22) = et31
249 fail%UPARAM(23) = et31m
250 fail%UPARAM(24) = ec31
251 fail%UPARAM(25) = ec31m
252 fail%UPARAM(26) = fscale_siz
253 fail%UPARAM(27) = ref_siz
254 fail%UPARAM(28) = strdef
255c-----------------------------------------------------
256 IF (is_encrypted) THEN
257 WRITE(iout, 1000)
258 ELSE
259 WRITE(iout, 1000) fail_id,pthkf,strdef,epspref,fcut,
260 . ifunc(13),fscale_siz,ref_siz,
261 . et1,et1m,ifunc(1) ,ec1,ec1m,ifunc(4),
262 . et2,et2m,ifunc(2) ,ec2,ec2m,ifunc(5),
263 . et3,et3m,ifunc(7) ,ec3,ec3m,ifunc(8),
264 . et12,et12m,ifunc(3) ,ec12,ec12m,ifunc(6),
265 . et23,et23m,ifunc(9) ,ec23,ec23m,ifunc(10),
266 . et31,et31m,ifunc(11),ec31,ec31m,ifunc(12)
267 ENDIF
268c-----------------------------------------------------
2691000 FORMAT(
270 & 5x,'STRAIN RATE DEPENDANT ORTHOTROPIC FAILURE MODEL '/,
271 & 5x,'----------------------------------------------- '/,
272 & 5x,'FAILURE MODEL ID . . . . . . . . . . . . . . . . .=',i10/,
273 & 5x,'SHELL ELEMENT DELETION PARAMETER PTHICKFAIL. . . .=',1pg20.13,/,
274 & 5x,' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
275 & 5x,' < 0.0 : FRACTION OF FAILED INTG. POINTS OR LAYERS',/,
276 & 5x,'FAILURE STRAIN INPUT TYPE (STRDEF) . . . . . . . .=',i10/
277 & 5x,' =1 (STRAIN MEASURE DEFINED IN PROPERTY) ',/
278 & 5x,' =2 (ENGINEERING STRAIN) . . . . . . . . ',/
279 & 5x,' =3 (TRUE STRAIN). . . . . . . . . . . . ',/
280 & 5x,'REFERENCE STRAIN RATE. . . . . . . . . . . . . . .=',1pg20.13,/,
281 & 5x,'STRAIN RATE FILTERING FREQUENCY . . . . . . . . .=',1pg20.13,/,
282 & 5x,'ELEMENT SIZE FACTOR FUNCTION . . . . . . . . . . .=',i10/,
283 & 5x,'SCALE FACTOR OF ELEMENT SIZE FUNCTION. . . . . . .=',1pg20.13,/,
284 & 5x,'REFERENCE ELEMENT SIZE . . . . . . . . . . . . . .=',1pg20.13,/,
285 & 5x,'FAILURE STRAIN TENSION 1 . . . . . . . . . . . . .=',1pg20.13,/,
286 & 5x,'MAXIMUM STRAIN TENSION 1 . . . . . . . . . . . . .=',1pg20.13,/,
287 & 5x,'STRAIN RATE FUNCTION TENSION 1 . . . . . . . . . .=',i10/,
288 & 5x,'FAILURE STRAIN COMPRESSION 1 . . . . . . . . . . .=',1pg20.13,/,
289 & 5x,'MAXIMUM STRAIN COMPRESSION 1 . . . . . . . . . . .=',1pg20.13,/,
290 & 5x,'STRAIN RATE FUNCTION COMPRESSION 1 . . . . . . . .=',i10/,
291 & 5x,'FAILURE STRAIN TENSION 2 . . . . . . . . . . . . .=',1pg20.13,/,
292 & 5x,'MAXIMUM STRAIN TENSION 2 . . . . . . . . . . . . .=',1pg20.13,/,
293 & 5x,'STRAIN RATE FUNCTION TENSION 2 . . . . . . . . . .=',i10/,
294 & 5x,'FAILURE STRAIN COMPRESSION 2 . . . . . . . . . . .=',1pg20.13,/,
295 & 5x,'MAXIMUM STRAIN COMPRESSION 2 . . . . . . . . . . .=',1pg20.13,/,
296 & 5x,'STRAIN RATE FUNCTION COMPRESSION 2 . . . . . . . .=',i10/,
297 & 5x,'FAILURE STRAIN TENSION 3 . . . . . . . . . . . . .=',1pg20.13,/,
298 & 5x,'MAXIMUM STRAIN TENSION 3 . . . . . . . . . . . . .=',1pg20.13,/,
299 & 5x,'STRAIN RATE FUNCTION TENSION 3 . . . . . . . . . .=',i10/,
300 & 5x,'FAILURE STRAIN COMPRESSION 3 . . . . . . . . . . .=',1pg20.13,/,
301 & 5x,'MAXIMUM STRAIN COMPRESSION 3 . . . . . . . . . . .=',1pg20.13,/,
302 & 5x,'STRAIN RATE FUNCTION COMPRESSION 3 . . . . . . . .=',i10/,
303 & 5x,'FAILURE STRAIN SHEAR TENSION 12. . . . . . . . . .=',1pg20.13,/,
304 & 5x,'MAXIMUM STRAIN SHEAR TENSION 12. . . . . . . . . .=',1pg20.13,/,
305 & 5x,'STRAIN RATE FUNCTION SHEAR TENSION 12. . . . . . .=',i10/,
306 & 5x,'FAILURE STRAIN SHEAR COMPRESSION 12. . . . . . . .=',1pg20.13,/,
307 & 5x,'MAXIMUM STRAIN SHEAR COMPRESSION 12. . . . . . . .=',1pg20.13,/,
308 & 5x,'STRAIN RATE FUNCTION SHEAR COMPRESSION 12. . . . .=',i10/,
309 & 5x,'FAILURE STRAIN SHEAR TENSION 23. . . . . . . . . .=',1pg20.13,/,
310 & 5x,'MAXIMUM STRAIN SHEAR TENSION 23. . . . . . . . . .=',1pg20.13,/,
311 & 5x,'STRAIN RATE FUNCTION SHEAR TENSION 23. . . . . . .=',i10/,
312 & 5x,'FAILURE STRAIN SHEAR COMPRESSION 23. . . . . . . .=',1pg20.13,/,
313 & 5x,'MAXIMUM STRAIN SHEAR COMPRESSION 23. . . . . . . .=',1pg20.13,/,
314 & 5x,'STRAIN RATE FUNCTION SHEAR COMPRESSION 23. . . . .=',i10/,
315 & 5x,'FAILURE STRAIN SHEAR TENSION 31. . . . . . . . . .=',1pg20.13,/,
316 & 5x,'MAXIMUM STRAIN SHEAR TENSION 31. . . . . . . . . .=',1pg20.13,/,
317 & 5x,'STRAIN RATE FUNCTION SHEAR TENSION 31. . . . . . .=',i10/,
318 & 5x,'FAILURE STRAIN SHEAR COMPRESSION 31. . . . . . . .=',1pg20.13,/,
319 & 5x,'MAXIMUM STRAIN SHEAR COMPRESSION 31. . . . . . . .=',1pg20.13,/,
320 & 5x,'STRAIN RATE FUNCTION SHEAR COMPRESSION 31. . . . .=',i10/,
321 & 5x,' ----------------------------------- ')
322c-----------
323 RETURN
#define my_real
Definition cppsort.cpp:32
#define alpha
Definition eval.h:35
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21