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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat19 (matparam, mtag, pm, parmat, nuvar, mat_id, titr, unitab, lsubmodel, israte)

Function/Subroutine Documentation

◆ hm_read_mat19()

subroutine hm_read_mat19 ( type(matparam_struct_), intent(inout) matparam,
type(mlaw_tag_), intent(inout) mtag,
dimension(npropm), intent(inout) pm,
dimension(100), intent(inout) parmat,
integer, intent(inout) nuvar,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
type (unit_type_), intent(in) unitab,
type(submodel_data), dimension((nsubmod)), intent(in) lsubmodel,
integer, intent(inout) israte )

Definition at line 38 of file hm_read_mat19.F.

41C-----------------------------------------------
42C D e s c r i p t i o n
43C =====================
44C READ MAT LAW19 WITH HM READER
45C-----------------------------------------------
46C DUMMY ARGUMENTS DESCRIPTION:
47C ===================
48C
49C NAME DESCRIPTION
50C
51C IPM MATERIAL ARRAY(INTEGER)
52C PM MATERIAL ARRAY(REAL)
53C UNITAB UNITS ARRAY
54C ID MATERIAL ID(INTEGER)
55C TITR MATERIAL TITLE
56C LSUBMODEL SUBMODEL STRUCTURE
57C-----------------------------------------------
58C M o d u l e s
59C-----------------------------------------------
60 USE unitab_mod
61 USE message_mod
62 USE submodel_mod
63 USE matparam_def_mod
64 USE elbuftag_mod
66C-----------------------------------------------
67C I m p l i c i t T y p e s
68C-----------------------------------------------
69#include "implicit_f.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "param_c.inc"
74#include "units_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 INTEGER ,INTENT(INOUT) :: NUVAR,ISRATE
79 INTEGER ,INTENT(IN) :: MAT_ID
80 my_real ,INTENT(INOUT) :: pm(npropm)
81 my_real ,INTENT(INOUT) :: parmat(100)
82 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
83 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
84 TYPE(SUBMODEL_DATA) ,INTENT(IN) :: LSUBMODEL((NSUBMOD))
85 TYPE(MLAW_TAG_) ,INTENT(INOUT) :: MTAG
86 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 my_real :: n12,n21,e11,e22,g12,g23,g31,rcomp,detc,amu,c1,ssp,
91 . a11,a22,a12,zerostress,porosity,areamin1,areamin2,rhor,rho0
92 INTEGER ISENS
93 LOGICAL IS_AVAILABLE,IS_ENCRYPTED
94C-----------------------------------------------
95C S o u r c e L i n e s
96c=======================================================================
97 is_encrypted = .false.
98 is_available = .false.
99
100 CALL hm_option_is_encrypted(is_encrypted)
101
102 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available,lsubmodel,unitab)
103 CALL hm_get_floatv('Refer_Rho',rhor ,is_available,lsubmodel,unitab)
104
105 CALL hm_get_floatv('MAT_EA' ,e11 ,is_available,lsubmodel,unitab)
106 CALL hm_get_floatv('MAT_EB' ,e22 ,is_available,lsubmodel,unitab)
107 CALL hm_get_floatv('MAT_PRAB' ,n12 ,is_available,lsubmodel,unitab)
108
109 CALL hm_get_floatv('MAT_GAB' ,g12 ,is_available,lsubmodel,unitab)
110 CALL hm_get_floatv('MAT_GBC' ,g23 ,is_available,lsubmodel,unitab)
111 CALL hm_get_floatv('MAT_GCA' ,g31 ,is_available,lsubmodel,unitab)
112
113 CALL hm_get_floatv('MAT_REDFACT' ,rcomp ,is_available,lsubmodel,unitab)
114 CALL hm_get_floatv('M58_Zerostress',zerostress ,is_available,lsubmodel,unitab)
115 CALL hm_get_floatv('MAT_POROS' ,porosity ,is_available,lsubmodel,unitab)
116 CALL hm_get_intv ('ISENSOR' ,isens ,is_available,lsubmodel)
117C-----------------------------------------------------
118c
119 israte = -1
120 n21 = n12*e22/e11
121 detc = one - n12*n21
122 a11 = e11 / detc
123 a22 = e22 / detc
124 a12 = a11 * n21
125 c1 = max(e11,e22) / detc
126 ssp = sqrt(c1/rho0)
127C-----------------------------------------------------
128 IF(e11 == zero.OR. e22 == zero .OR. g12 == zero .OR. g23 == zero .OR. g31 == zero) THEN
129 CALL ancmsg(msgid=306, msgtype=msgerror, anmode=aninfo,
130 . i1=19,
131 . i2=mat_id,
132 . c1=titr,
133 . c2='E11, E22, G12, G23, or G31')
134 ENDIF
135C--------------------------------------------------------
136 IF (detc <= zero) THEN
137 CALL ancmsg(msgid=307, msgtype=msgerror, anmode=aninfo,
138 . i1=mat_id,
139 . c1=titr)
140 ENDIF
141C-----------------------------------------
142 IF (rcomp == zero) rcomp=one
143 IF (rcomp < em03) THEN
144 CALL ancmsg(msgid=1572, msgtype=msgwarning, anmode=aninfo,
145 . i1=mat_id,
146 . c1=titr)
147 rcomp = em03
148 ENDIF
149C-------------------------------------
150 IF (porosity < zero .OR. porosity > one) THEN
151 CALL ancmsg(msgid=775, msgtype=msgerror, anmode=aninfo,
152 . i1=mat_id,
153 . c1=titr)
154 ENDIF
155C-----------------------------------------
156 IF (rhor == zero ) rhor=rho0
157 pm(1) = rhor
158 pm(89)= rho0
159 amu = pm(17)
160 IF (amu == zero) amu = fourth
161
162 pm(17) = amu
163 pm(20) = max(e11,e22)/detc
164 pm(21) = sqrt(n12*n21)
165 pm(22) = max(g12,g23,g31)
166 pm(24) = pm(20)
167 pm(25) = pm(21)*pm(24)
168 pm(26) = five_over_6
169 pm(27) = ssp
170 pm(32) = c1
171 pm(33) = e11
172 pm(34) = e22
173 pm(35) = n12
174 pm(36) = n21
175 pm(37) = g12
176 pm(38) = g23
177 pm(39) = g31
178 pm(44) = rcomp
179c
180 areamin1 = zero
181 pm(53) = areamin1
182 areamin2 = one + half*(areamin1-one)
183 IF (areamin2 > areamin1) THEN
184 pm(54) = one / (areamin2-areamin1)
185 ELSE
186 pm(54) = zero
187 ENDIF
188 pm(56) = porosity
189c-----------------------------------------
190 nuvar = 0
191 matparam%NUPARAM = 15
192 matparam%NIPARAM = 1
193 matparam%NFUNC = 0
194!
195 ALLOCATE (matparam%UPARAM(matparam%NUPARAM))
196 ALLOCATE (matparam%IPARAM(matparam%NIPARAM))
197c-----------------------------------------
198 matparam%IPARAM(1) = isens
199!
200 matparam%UPARAM(1) = e11
201 matparam%UPARAM(2) = e22
202 matparam%UPARAM(3) = n12
203 matparam%UPARAM(4) = n21
204 matparam%UPARAM(5) = g12
205 matparam%UPARAM(6) = g23
206 matparam%UPARAM(7) = g31
207 matparam%UPARAM(8) = rcomp
208 matparam%UPARAM(9) = ssp
209 matparam%UPARAM(10) = a11
210 matparam%UPARAM(11) = a22
211 matparam%UPARAM(12) = a12
212 matparam%UPARAM(13) = zero ! not used
213 matparam%UPARAM(14) = zerostress
214 matparam%UPARAM(15) = porosity
215c--------------------------
216 matparam%RHO = rhor
217 matparam%RHO0 = rho0
218 matparam%YOUNG = max(e11,e22)
219c --------------------------
220 parmat(1) = c1
221 parmat(2) = max(e11,e22)/detc
222 parmat(3) = sqrt(n12*n21)
223 parmat(4) = israte
224 parmat(5) = zero ! FCUT
225c
226c---- Definition des variables internes (stockage elementaire)
227c
228 mtag%G_SIGI = 3
229c
230 ! MATPARAM keywords
231 CALL init_mat_keyword(matparam,"TOTAL")
232 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
233 CALL init_mat_keyword(matparam,"ORTHOTROPIC")
234
235 ! Properties compatibility
236 CALL init_mat_keyword(matparam,"SHELL_ORTHOTROPIC")
237C--------------------------------------
238 WRITE(iout,1000) trim(titr),mat_id,19
239 WRITE(iout,1100)
240 IF (is_encrypted) THEN
241 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
242 ELSE
243 WRITE(iout,1200) rho0
244 WRITE(iout,1300) e11,e22,n12,g12,g23,g31,
245 . rcomp,zerostress,isens,porosity
246 ENDIF
247C----------------------------------------
248 1000 FORMAT(
249 & 5x,a,/,
250 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . . . . =',i10/,
251 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . . . . =',i10/)
252 1100 FORMAT
253 &(5x,'ORTHOTROPIC MATERIAL FOR SHELLS (LAW19) ',/,
254 & 5x,'--------------------------------------------',/)
255 1200 FORMAT(
256 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . . .=',1pg20.13/)
257 1300 FORMAT(
258 & 5x,'YOUNG MODULUS E11 (TENSION) . . . . . . . . . . .=',1pg20.13/
259 & 5x,'YOUNG MODULUS E22 (TENSION) . . . . . . . . . . .=',1pg20.13/
260 & 5x,'POISSON RATIO NU12. . . . . . . . . . . . . . . .=',1pg20.13/
261 & 5x,'SHEAR MODULUS G12 . . . . . . . . . . . . . . . .=',1pg20.13/
262 & 5x,'SHEAR MODULUS G23 . . . . . . . . . . . . . . . .=',1pg20.13/
263 & 5x,'SHEAR MODULUS G31 . . . . . . . . . . . . . . . .=',1pg20.13/
264 & 5x,'COMPRESSION REDUCTION FACTOR. . . . . . . . . . . ',/
265 & 5x,' RCOMP=E11C/E11= E22C/E22 . . . . . . . . . .=',1pg20.13/
266 & 5x,'REF-STATE STRESS RELAXATION FACTOR. . . . . . . .=',1pg20.13/
267 & 5x,'REF-STATE ACTIVATION SENSOR ID. . . . . . . . . .=',1pg20.13/
268 & 5x,'POROSITY. . . . . . . . . . . . . . . . . . . . .=',1pg20.13/)
269C-----------
270 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)
subroutine init_mat_keyword(matparam, keyword)
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
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