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.AND. IF ((EL_REF == ZERO)(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_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
initmumps id
for(i8=*sizetab-1;i8 >=0;i8--)