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

Function/Subroutine Documentation

◆ hm_read_fail_sahraei()

subroutine hm_read_fail_sahraei ( 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 )

Definition at line 37 of file hm_read_fail_sahraei.F.

40C-----------------------------------------------
41c ROUTINE DESCRIPTION :
42c Sahraei failure criterion (irup = 29)
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE fail_param_mod
47 USE unitab_mod
48 USE message_mod
49 USE submodel_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) :: MAT_ID ! material law ID
64 INTEGER ,INTENT(IN) :: IRUPT ! failure model type number
65 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB ! table of input units
66 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*) ! submodel table
67 TYPE(FAIL_PARAM_) ,INTENT(INOUT) :: FAIL ! failure model data structure
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71 INTEGER :: NUM,DEN,ORDI,COMP_DIR,IDEL,NUPARAM,NUVAR,NFUNC
72 INTEGER ,PARAMETER :: NSIZE = 2
73 INTEGER ,DIMENSION(NSIZE) :: IFUNC
74 my_real :: vol_strain,max_comp_strain,ratio,el_ref,el_ref_unit
75 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
76C-----------------------------------------------
77C S o u r c e L i n e s
78C=======================================================================
79 is_encrypted = .false.
80 is_available = .false.
81
82 CALL hm_option_is_encrypted(is_encrypted)
83c
84c!#
85c!# NUMERATOR = 1 ==> Eps_xx
86c!# NUMERATOR = 2 ==> Eps_yy
87c!# NUMERATOR = 3 ==> Eps_zz
88c!# NUMERATOR = 4 ==> Eps_1 1st. 3d-principal
89c!# NUMERATOR = 5 ==> Eps_2 2nd. 3d-principal
90c!# NUMERATOR = 6 ==> Eps_3 3rd. 3d-principal
91c!#
92c!# Denominator = 1 ==> 2D e1 = x-z - plane
93c!# Denominator = 2 ==> 2D e1 = x-y - plane
94c!# Denominator = 3 ==> 2D e1 = y-z - plane
95c!# Denominator = 4 ==> Eps_1 1st. 3d-principal
96c!# Denominator = 5 ==> Eps_2 2nd. 3d-principal
97c!# Denominator = 6 ==> Eps_3 3rd. 3d-principal
98c!#
99c!# Ordinate = 1 ==> MAX(Eps_xx,Eps_yy,Eps_zz)
100c!# Ordinate = 2 ==> Eps_xx
101c!# Ordinate = 3 ==> Eps_yy
102c!# Ordinate = 4 ==> Eps_zz
103c!# Ordinate = 5 ==> Eps_1 1st. 3d-principal
104c!# Ordinate = 6 ==> 2D - e1 = x-z - plane
105c!# Ordinate = 7 ==> 2D - e1 = x-y - plane
106c!# Ordinate = 8 ==> 2D - e1 = y-z - plane
107c!#
108c!# COMP_DIR = 0 ==> Feature is not taken into account
109c!# COMP_DIR = 1 ==> Normal to layers is in xx
110c!# COMP_DIR = 2 ==> Normal to layers is in yy
111c!# COMP_DIR = 3 ==> Normal to layers is in zz
112c!#
113c!# MAX_COMP_STRAIN = In-plane failure compression strain (not deleting, only damage=1)
114c!# if value is negative, the element will NOT be deleted, only DAMAGE set to 1
115c!# RATIO = RATIO of the two other failure strains (default = 1.0)
116c!#
117C===================================================================================
118C READING CARD 1
119C===================================================================================
120 CALL hm_get_intv ('Fct_Ratio' ,ifunc(1) ,is_available,lsubmodel)
121 CALL hm_get_intv ('NUM' ,num ,is_available,lsubmodel)
122 CALL hm_get_intv ('DEN' ,den ,is_available,lsubmodel)
123 CALL hm_get_intv ('ORDI' ,ordi ,is_available,lsubmodel)
124 IF (ordi == 0) ordi = 1
125 CALL hm_get_floatv ('Vol_strain' ,vol_strain ,is_available,lsubmodel,unitab)
126 CALL hm_get_intv ('Fct_Elsize' ,ifunc(2) ,is_available,lsubmodel)
127 CALL hm_get_floatv ('EL_REF' ,el_ref ,is_available,lsubmodel,unitab)
128 IF ((el_ref == zero).AND.(ifunc(2) > 0)) THEN
129 CALL hm_get_floatv_dim('EL_REF' ,el_ref_unit,is_available, lsubmodel, unitab)
130 el_ref = one*el_ref_unit
131 ENDIF
132C===================================================================================
133C READING CARD 2
134C===================================================================================
135 CALL hm_get_intv ('Comp_dir' ,comp_dir ,is_available,lsubmodel)
136 CALL hm_get_intv ('IDEL' ,idel ,is_available,lsubmodel)
137 CALL hm_get_floatv ('Max_Comp_Strain',max_comp_strain ,is_available,lsubmodel,unitab)
138 IF (max_comp_strain == zero) max_comp_strain = infinity
139 CALL hm_get_floatv ('Ratio' ,ratio ,is_available,lsubmodel,unitab)
140 IF (ratio == zero) ratio = one
141C===================================================================================
142C NUMBER OF PARAMETERS,FUNCTIONS, AND USER VARIABLE
143C===================================================================================
144 nuparam = 9
145 IF (ifunc(2) > 0) THEN
146 nfunc = 2
147 nuvar = 1
148 ELSE
149 nfunc = 1
150 nuvar = 0
151 ENDIF
152C===================================================================================
153C STORING PARAMETERS
154C===================================================================================
155 fail%KEYWORD = 'SAHRAEI'
156 fail%IRUPT = irupt
157 fail%FAIL_ID = fail_id
158 fail%NUPARAM = nuparam
159 fail%NIPARAM = 0
160 fail%NUVAR = nuvar
161 fail%NFUNC = nfunc
162 fail%NTABLE = 0
163 fail%NMOD = 0
164c
165 ALLOCATE (fail%UPARAM(fail%NUPARAM))
166 ALLOCATE (fail%IPARAM(fail%NIPARAM))
167 ALLOCATE (fail%IFUNC (fail%NFUNC))
168 ALLOCATE (fail%TABLE (fail%NTABLE))
169
170 fail%IFUNC(1:nfunc) = ifunc(1:nfunc)
171c
172 fail%UPARAM(1) = vol_strain
173 fail%UPARAM(2) = num
174 fail%UPARAM(3) = den
175 fail%UPARAM(4) = ordi
176 IF (comp_dir == zero) THEN
177 fail%UPARAM(5) = zero
178 ELSE
179 fail%UPARAM(5) = comp_dir
180 ENDIF
181 fail%UPARAM(6) = max_comp_strain
182 fail%UPARAM(7) = ratio
183 fail%UPARAM(8) = idel
184 fail%UPARAM(9) = el_ref
185C===================================================================================
186C PRINTING OUT DATA
187C===================================================================================
188 IF (is_encrypted) THEN
189 WRITE (iout,'(5X,A,//)') 'CONFIDENTIAL DATA'
190 ELSE
191 WRITE (iout, 1000) ifunc(1),vol_strain
192 WRITE (iout, 2000) num,den,ordi
193 IF (ifunc(2) > 0) THEN
194 WRITE (iout, 3000) ifunc(2),el_ref
195 ENDIF
196 IF (comp_dir /= zero) THEN
197 WRITE (iout, 4000) comp_dir, idel, max_comp_strain, ratio
198 ENDIF
199 ENDIF
200C===================================================================================
201C PRINTOUT FORMAT
202C===================================================================================
203 1000 FORMAT(
204 & 5x,' SAHRAEI LOCAL ELECTRIC BATTERY FAILURE ',/,
205 & 5x,' -------------------------------------- ',/,
206 & 5x,'STRAIN RATIO FUNCTION ID . . . . . . . . . . . . .=',i10/,
207 & 5x,'VOLUMETRIC STRAIN LIMIT. . . . . . . . . . . . . .=',1pg20.13/)
208 2000 FORMAT(
209 & 5x,'NUMERATOR FLAG FOR STRAIN RATIO. . . . . . . . . .=',i10/,
210 & 5x,'DENOMINATOR FLAG FOR STRAIN RATIO. . . . . . . . .=',i10/,
211 & 5x,'FAILURE ORDINATE FOR FAILURE LIMIT . . . . . . . .=',i10/)
212 3000 FORMAT(
213 & 5x,'ELEMENT SIZE REGULARIZATION FUNCTION ID. . . . . .=',i10/,
214 & 5x,'ELEMENT REFERENCE SIZE . . . . . . . . . . . . . .=',1pg20.13/)
215 4000 FORMAT(
216 & 5x,'NORMAL IN-PLANE COMPRESSION DIRECTION. . . . . . .=',i10/,
217 & 5x,'FLAG FOR ELEMENT DELETION IN COMPRESSION . . . . .=',i10/,
218 & 5x,'IN-PLANE COMPRESSION FAILURE STRAIN . . . . . . .=',1pg20.13/,
219 & 5x,'RATIO FOR IN-PLANE 2ND DIRECTION FAILURE STRAIN . =',1pg20.13/)
220C-----------
221 RETURN
#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)