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

Go to the source code of this file.

Functions/Subroutines

subroutine read_matparam (mat_elem)

Function/Subroutine Documentation

◆ read_matparam()

subroutine read_matparam ( type (mat_elem_), intent(inout) mat_elem)

Definition at line 45 of file read_matparam.F.

46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE message_mod
50 USE mat_elem_mod
52 USE read_eosparam_mod
53 use read_therpmaram_mod
54 use read_ale_rezoning_param_mod , only : read_ale_rezoning_param
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 TYPE (MAT_ELEM_) ,INTENT(INOUT) :: MAT_ELEM
63C-----------------------------------------------
64C L o c a l V a r i a b l e s
65C-----------------------------------------------
66 INTEGER :: I,IMAT,NUMMAT,NUMTABL,NUPARAM,NIPARAM,NFAIL,ITHERM
67 INTEGER :: IAD,NFIX,NFIXR,LEN,LENR,NMOD,MOD
68 INTEGER ,DIMENSION(NCHARTITLE) :: NAME
69 INTEGER ,DIMENSION(:) ,ALLOCATABLE :: IBUF
70 INTEGER :: NBSUBMAT
71 my_real ,DIMENSION(:) ,ALLOCATABLE :: rbuf
72c=======================================================================
73c read MATPARAM data
74 nfix = 24
75 nummat = mat_elem%NUMMAT
76 ALLOCATE(mat_elem%MAT_PARAM(nummat))
77 DO imat=1,nummat
78 CALL mat_elem%MAT_PARAM(imat)%ZEROING
79 ENDDO
80
81 len = nfix*nummat
82 ALLOCATE (ibuf(len) )
83 CALL read_i_c(ibuf, len)
84
85 ! write integer parameters and flags
86 iad = 0
87 DO imat = 1,nummat
88 mat_elem%MAT_PARAM(imat)%ILAW = ibuf(iad+ 1)
89 mat_elem%MAT_PARAM(imat)%MAT_ID = ibuf(iad+ 2)
90 mat_elem%MAT_PARAM(imat)%NUPARAM = ibuf(iad+ 3)
91 mat_elem%MAT_PARAM(imat)%NIPARAM = ibuf(iad+ 4)
92 mat_elem%MAT_PARAM(imat)%NFUNC = ibuf(iad+ 5)
93 mat_elem%MAT_PARAM(imat)%NTABLE = ibuf(iad+ 6)
94 mat_elem%MAT_PARAM(imat)%NSUBMAT = ibuf(iad+ 7)
95 mat_elem%MAT_PARAM(imat)%NFAIL = ibuf(iad+ 8)
96 mat_elem%MAT_PARAM(imat)%IVISC = ibuf(iad+ 9)
97 mat_elem%MAT_PARAM(imat)%IEOS = ibuf(iad+10)
98 mat_elem%MAT_PARAM(imat)%ITHERM = ibuf(iad+11)
99 mat_elem%MAT_PARAM(imat)%IEXPAN = ibuf(iad+12)
100 mat_elem%MAT_PARAM(imat)%IALE = ibuf(iad+13)
101 mat_elem%MAT_PARAM(imat)%ITURB = ibuf(iad+14)
102 mat_elem%MAT_PARAM(imat)%HEAT_FLAG = ibuf(iad+15)
103 mat_elem%MAT_PARAM(imat)%COMPRESSIBILITY = ibuf(iad+16)
104 mat_elem%MAT_PARAM(imat)%SMSTR = ibuf(iad+17)
105 mat_elem%MAT_PARAM(imat)%STRAIN_FORMULATION = ibuf(iad+18)
106 mat_elem%MAT_PARAM(imat)%IPRES = ibuf(iad+19)
107 mat_elem%MAT_PARAM(imat)%ORTHOTROPY = ibuf(iad+20)
108 mat_elem%MAT_PARAM(imat)%NLOC = ibuf(iad+21)
109 mat_elem%MAT_PARAM(imat)%IFAILWAVE = ibuf(iad+22)
110 mat_elem%MAT_PARAM(imat)%IXFEM = ibuf(iad+23)
111 mat_elem%MAT_PARAM(imat)%NMOD = ibuf(iad+24)
112 iad = iad + nfix
113 END DO
114 DEALLOCATE( ibuf )
115
116 ! read real parameters
117 nfixr = 9
118 lenr = nfixr*nummat
119 ALLOCATE (rbuf(lenr) )
120 CALL read_db (rbuf ,lenr)
121 iad = 0
122 DO imat = 1,nummat
123 mat_elem%MAT_PARAM(imat)%RHO = rbuf(iad + 1)
124 mat_elem%MAT_PARAM(imat)%RHO0 = rbuf(iad + 2)
125 mat_elem%MAT_PARAM(imat)%YOUNG = rbuf(iad + 3)
126 mat_elem%MAT_PARAM(imat)%BULK = rbuf(iad + 4)
127 mat_elem%MAT_PARAM(imat)%SHEAR = rbuf(iad + 5)
128 mat_elem%MAT_PARAM(imat)%NU = rbuf(iad + 6)
129 mat_elem%MAT_PARAM(imat)%STIFF_CONTACT = rbuf(iad + 7)
130 mat_elem%MAT_PARAM(imat)%STIFF_HGLASS = rbuf(iad + 8)
131 mat_elem%MAT_PARAM(imat)%STIFF_TSTEP = rbuf(iad + 9)
132 iad = iad + nfixr
133 END DO
134 DEALLOCATE (rbuf)
135
136 ! read material title
137 DO imat = 1,nummat
138 CALL read_c_c(name,nchartitle)
139 DO i=1,nchartitle
140 mat_elem%MAT_PARAM(imat)%TITLE(i:i) = char(name(i))
141 END DO
142 END DO
143
144 ! read material parameter array
145 DO imat = 1,nummat
146 nuparam = mat_elem%MAT_PARAM(imat)%NUPARAM
147 niparam = mat_elem%MAT_PARAM(imat)%NIPARAM
148 ALLOCATE(mat_elem%MAT_PARAM(imat)%UPARAM(nuparam))
149 ALLOCATE(mat_elem%MAT_PARAM(imat)%IPARAM(niparam))
150 mat_elem%MAT_PARAM(imat)%UPARAM = zero
151 mat_elem%MAT_PARAM(imat)%IPARAM = 0
152 IF (nuparam > 0) THEN
153 CALL read_db(mat_elem%MAT_PARAM(imat)%UPARAM ,nuparam)
154 END IF
155 IF (niparam > 0) THEN
156 CALL read_i_c(mat_elem%MAT_PARAM(imat)%IPARAM ,niparam)
157 END IF
158 END DO
159
160 ! read material law tables
161 DO imat = 1,nummat
162 numtabl = mat_elem%MAT_PARAM(imat)%NTABLE
163 IF (numtabl > 0) THEN
164 ALLOCATE (mat_elem%MAT_PARAM(imat)%TABLE(numtabl))
165 CALL read_mat_table(mat_elem%MAT_PARAM(imat)%TABLE, numtabl)
166 END IF
167 END DO
168
169 ! read viscosity model parameters
170 DO imat = 1,nummat
171 IF (mat_elem%MAT_PARAM(imat)%IVISC > 0) THEN
172 CALL read_viscparam(mat_elem%MAT_PARAM(imat)%VISC)
173 END IF
174 END DO
175c
176c read thermal parameters
177c
178 DO imat = 1,nummat
179 itherm = mat_elem%MAT_PARAM(imat)%ITHERM
180 IF (itherm > 0) THEN
181 CALL read_thermparam(mat_elem%MAT_PARAM(imat)%THERM)
182 END IF
183 END DO
184c
185c read parameters of failure models per material
186c
187 DO imat = 1,nummat
188 nfail = mat_elem%MAT_PARAM(imat)%NFAIL
189 IF (nfail > 0) THEN
190 ALLOCATE (mat_elem%MAT_PARAM(imat)%FAIL(nfail))
191 DO i = 1,nfail
192 CALL read_failparam(mat_elem%MAT_PARAM(imat)%FAIL(i))
193 END DO
194 END IF
195 END DO
196
197 ! read damage modes
198 DO imat = 1,nummat
199 nmod = mat_elem%MAT_PARAM(imat)%NMOD
200 IF (nmod > 0) THEN
201 ALLOCATE(mat_elem%MAT_PARAM(imat)%MODE(nmod))
202 DO mod = 1,nmod
203 CALL read_c_c(name,nchartitle)
204 DO i=1,nchartitle
205 mat_elem%MAT_PARAM(imat)%MODE(mod)(i:i) = char(name(i))
206 END DO
207 ENDDO
208 ELSE
209 ALLOCATE(mat_elem%MAT_PARAM(imat)%MODE(0))
210 ENDIF
211 ENDDO
212
213 ! Read multimaterial buffer
214 ALLOCATE (ibuf(21) ) !< mex is 21 submaterials
215 ALLOCATE (rbuf(21) )
216 DO imat = 1,nummat
217 CALL read_i_c(ibuf, 1)
218 nbsubmat = ibuf(1)
219 mat_elem%MAT_PARAM(imat)%MULTIMAT%NB = nbsubmat
220 IF(nbsubmat > 0)THEN
221 CALL read_i_c(ibuf, nbsubmat)
222 CALL read_db(rbuf, nbsubmat)
223 mat_elem%MAT_PARAM(imat)%MULTIMAT%mid = ibuf(1:nbsubmat)
224 mat_elem%MAT_PARAM(imat)%MULTIMAT%vfrac = rbuf(1:nbsubmat)
225 ENDIF
226 ENDDO
227 DEALLOCATE(ibuf)
228 DEALLOCATE(rbuf)
229
230 ! read eos model parameters
231 DO imat = 1,nummat
232 mat_elem%MAT_PARAM(imat)%EOS%CV=zero
233 mat_elem%MAT_PARAM(imat)%EOS%CP=zero
234 IF (mat_elem%MAT_PARAM(imat)%IEOS > 0) THEN
235 CALL read_eosparam(mat_elem%MAT_PARAM(imat)%EOS)
236 END IF
237 END DO
238
239 ! read ALE rezoning parameters
240 DO imat = 1,nummat
241 CALL read_ale_rezoning_param(mat_elem%MAT_PARAM(imat)%REZON)
242 END DO
243
244c-----------
245 RETURN
#define my_real
Definition cppsort.cpp:32
integer, parameter nchartitle
subroutine read_db(a, n)
Definition read_db.F:88
subroutine read_failparam(fail)
subroutine read_mat_table(table, numtabl)
subroutine read_viscparam(visc)
void read_c_c(int *w, int *len)
void read_i_c(int *w, int *len)