OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_tensstrain.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_tensstrain (fail, mat_id, fail_id, irupt, lsubmodel, unitab, unit_id)

Function/Subroutine Documentation

◆ hm_read_fail_tensstrain()

subroutine hm_read_fail_tensstrain ( type (fail_param_), intent(inout) fail,
integer, intent(in) mat_id,
integer, intent(in) fail_id,
integer, intent(in) irupt,
type (submodel_data), dimension(*), intent(in) lsubmodel,
type (unit_type_), intent(in) unitab,
integer, intent(in) unit_id )

Definition at line 38 of file hm_read_fail_tensstrain.F.

41C-----------------------------------------------
42c ROUTINE DESCRIPTION :
43c Read tensile strain failure model parameters
44C-----------------------------------------------
45C M o d u l e s
46C-----------------------------------------------
47 USE fail_param_mod
48 USE unitab_mod
49 USE message_mod
50 USE submodel_mod
52C-----------------------------------------------
53C I m p l i c i t T y p e s
54C-----------------------------------------------
55#include "implicit_f.inc"
56C-----------------------------------------------
57C C o m m o n B l o c k s
58C-----------------------------------------------
59#include "units_c.inc"
60C-----------------------------------------------
61C D u m m y A r g u m e n t s
62C-----------------------------------------------
63 INTEGER ,INTENT(IN) :: FAIL_ID ! failure model ID
64 INTEGER ,INTENT(IN) :: MAT_ID ! material law ID
65 INTEGER ,INTENT(IN) :: UNIT_ID !
66 INTEGER ,INTENT(IN) :: IRUPT ! failure model number
67 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB ! table of input units
68 TYPE (SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*) ! submodel table
69 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL ! failure model data structure
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 INTEGER :: ISHELL,ISOLID,IRFUN,FUNC_ID,FUNC_ID2,S_FLAG,STRDEF,FAILIP
74 my_real :: rf1,rf2,epsp1,epsp2,scale_el,pthkf,
75 . el_ref,scale_temp,fscal_unit,unit_t
76 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
77C=======================================================================
78 is_encrypted = .false.
79 is_available = .false.
80C--------------------------------------------------
81C
82 CALL hm_option_is_encrypted(is_encrypted)
83C
84C--------------------------------------------------
85 scale_el = zero
86 scale_temp= zero
87 el_ref = zero
88 func_id = 0
89 func_id2 = 0
90 IF (unit_id > 0) THEN
91 unit_t = unitab%FAC_T(unit_id) ! USED FOR ABSCISSA OF IRFUN
92 ELSE
93 unit_t = one
94 ENDIF
95C--------------------------------------------------
96C EXTRACT DATAS (REAL VALUES)
97C--------------------------------------------------
98 CALL hm_get_floatv ('Epsilon_t1',rf1 ,is_available,lsubmodel,unitab)
99 CALL hm_get_floatv ('Epsilon_t2',rf2 ,is_available,lsubmodel,unitab)
100 CALL hm_get_intv ('fct_ID' ,irfun ,is_available,lsubmodel)
101 CALL hm_get_floatv ('Epsilon_f1',epsp1 ,is_available,lsubmodel,unitab)
102 CALL hm_get_floatv ('Epsilon_f2',epsp2 ,is_available,lsubmodel,unitab)
103 CALL hm_get_intv ('S_Flag' ,s_flag,is_available,lsubmodel)
104 CALL hm_get_intv ('FAILIP' ,failip ,is_available,lsubmodel)
105 IF (failip == 0) failip = 1
106c
107 IF (s_flag == 2 .or. s_flag == 3 .or. s_flag == 12 .or. s_flag == 13 .or.
108 . s_flag == 22 .or. s_flag == 23) THEN
109 CALL hm_get_intv ('fct_IDel' ,func_id ,is_available,lsubmodel)
110 CALL hm_get_floatv ('Fscale_el',scale_el,is_available,lsubmodel,unitab)
111 CALL hm_get_floatv ('EI_ref' ,el_ref ,is_available,lsubmodel,unitab)
112c
113 CALL hm_get_intv ('fct_IDt' ,func_id2 ,is_available,lsubmodel)
114 CALL hm_get_floatv ('FscaleT',scale_temp,is_available,lsubmodel,unitab)
115c
116 !units
117 CALL hm_get_floatv_dim('Fscale_el',fscal_unit ,is_available, lsubmodel, unitab)
118 IF (scale_el == zero) scale_el = one*fscal_unit
119c
120 CALL hm_get_floatv_dim('EI_ref',fscal_unit ,is_available, lsubmodel, unitab)
121 IF (el_ref == zero) el_ref = one *fscal_unit
122 ENDIF
123c--------------------------------------------------
124 IF (s_flag == 0) s_flag = 1
125 IF (s_flag == 11 .or. s_flag == 12 .or. s_flag == 13) THEN
126 s_flag = s_flag - 10
127 strdef = 2 ! input = engineering strain
128 ELSEIF (s_flag == 21 .or. s_flag == 22 .or. s_flag == 23) THEN
129 s_flag = s_flag - 20
130 strdef = 3 ! input = true strain
131 ELSE
132 strdef = 1 ! input = strain defined by Ismstr flag in the property
133 END IF
134c
135 IF (scale_temp == zero) scale_temp = one
136 IF (scale_el == zero) scale_el = one
137 IF (el_ref == zero) el_ref = one
138 IF (rf1 <= zero) rf1 = ep20
139 IF (rf2 <= zero) rf2 = two*ep20
140C
141 IF (rf1 > rf2) THEN
142 CALL ancmsg(msgid=617, msgtype=msgerror, anmode=aninfo_blind_1,
143 . i1=mat_id)
144 ENDIF
145 pthkf = em06 ! % of thickness to fail <=> 1 integration point
146c---------------------------
147 fail%KEYWORD = 'TENS_STRAIN'
148 fail%IRUPT = irupt
149 fail%FAIL_ID = fail_id
150 fail%NUPARAM = 11
151 fail%NIPARAM = 0
152 fail%NUVAR = 2
153 fail%NFUNC = 3
154 fail%NTABLE = 0
155 fail%NMOD = 0
156 fail%PTHK = pthkf
157c
158 ALLOCATE (fail%UPARAM(fail%NUPARAM))
159 ALLOCATE (fail%IPARAM(fail%NIPARAM))
160 ALLOCATE (fail%IFUNC (fail%NFUNC))
161 ALLOCATE (fail%TABLE (fail%NTABLE))
162c-----------------------
163 fail%UPARAM(1) = rf1
164 fail%UPARAM(2) = rf2
165 fail%UPARAM(3) = epsp1
166 fail%UPARAM(4) = epsp2
167 fail%UPARAM(5) = scale_el
168 fail%UPARAM(6) = el_ref
169 fail%UPARAM(7) = scale_temp
170 fail%UPARAM(8) = s_flag
171 fail%UPARAM(9) = unit_t
172 fail%UPARAM(10)= strdef
173 fail%UPARAM(11)= failip
174c
175 fail%IFUNC(1) = irfun
176 fail%IFUNC(2) = func_id
177 fail%IFUNC(3) = func_id2
178C--------------------------------------------------
179 IF(is_encrypted)THEN
180 WRITE(iout, 1000)
181 ELSE
182 WRITE(iout, 1100) rf1,rf2,irfun,strdef,failip
183 IF (epsp1 > zero .OR. epsp2 > zero) THEN
184 WRITE(iout, 2000)epsp1,epsp2
185 ENDIF
186 IF (s_flag == 2) WRITE(iout, 2900)
187 IF (s_flag == 3) WRITE(iout, 2950)
188 WRITE(iout, 3000) func_id,scale_el,el_ref,func_id2,scale_temp
189 IF (fail_id > zero) THEN
190 WRITE(iout, 4000) fail_id
191 ENDIF
192 ENDIF
193 RETURN
194C--------------------------------------------------
195 1000 FORMAT(
196 & 5x,40h crypted DATA in failure model /,
197 & 5x,40h ----------------------------- /)
198 1100 FORMAT(
199 & 5x,40h tension strain failure model /,
200 & 5x,40h ------------------------ /,
201 & 5x,'MAXIMUM TENSION STRAIN 1. . . . . . . . . . . . . . . . =',e12.4/
202 & 5x,'MAXIMUM TENSION STRAIN 2. . . . . . . . . . . . . . . . =',e12.4/
203 & 5x,'MAXIMUM STRAINS SCALING FUNCTION. . . . . . . . . . . . =',i10/
204 & 5x,'FAILURE STRAIN INPUT TYPE . . . . . . . . . . . . . . . =',i10/
205 & 5x,' =1 (STRAIN MEASURE DEFINED IN PROPERTY) ',/
206 & 5x,' =2 (ENGINEERING STRAIN) . . . . . . . . ',/
207 & 5x,' =3 (TRUE STRAIN). . . . . . . . . . . . ',/
208 & 5x,'NUMBER OF FAILED INTG. POINTS PRIOR TO ELEM DELETION .=',i10/)
209 2000 FORMAT(
210 & 5x,'MAXIMUM FIRST PRINCIPAL STRAIN FOR ELEMENT DELETION . . =',e12.4/
211 & 5x,'MAXIMUM SECOND PRINCIPAL STRAIN FOR ELEMENT DELETION. . =',e12.4/)
212 2900 FORMAT(
213 & 5x,'EQUIVALENT STRAIN METHOD USED '/)
214 2950 FORMAT(
215 & 5x,'FIRST PRINCIPAL STRAIN METHOD USED '/)
216 3000 FORMAT(
217 & 5x,'ELEMENT LENGTH REGULARIZATION USED: ',/
218 & 5x,'REGULARIZATION FUNCTION . . . . . . . . . . . . . . . . =',i10/
219 & 5x,'EL SCALING FACTOR . . . . . . . . . . . . . . . . . . . =',e12.4/
220 & 5x,'REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . . . . =',e12.4/
221 & 5x,'TEMPERATURE FUNCTION. . . . . . . . . . . . . . . . . . =',i10/
222 & 5x,'TEMP SCALING FACTOR . . . . . . . . . . . . . . . . . . =',e12.4/)
223 4000 FORMAT(
224 & 5x,'FAIL_ID . . . . . . . . . . . . . . . . . . . . . . . . =',i10/)
#define my_real
Definition cppsort.cpp:32
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)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889