43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
66 USE matparam_def_mod
68
69
70
71#include "implicit_f.inc"
72
73
74
75#include "units_c.inc"
76#include "param_c.inc"
77
78
79
80 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
81 my_real,
INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam
82 INTEGER, INTENT(INOUT) :: ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR
83 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
84 INTEGER,INTENT(IN) :: ID
85 INTEGER,INTENT(INOUT) :: IMATVIS
86 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
87 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
88 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
89
90
91
92 INTEGER I,BULK_FNCT,NTABLE_,NMUAL,LAWID,ILAW
94 my_real bulk,tenscut,gs,nu,fscal,zep495,fscal_unit
95 INTEGER ICHECK, NSTART
97 INTEGER IDUMMY
99 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
100
101
102
103 is_encrypted = .false.
104 is_available = .false.
105 idummy = 0
106 nstart = 0
107 errtol = zero
108 ilaw = 69
109 imatvis = 1
110
112
113
114 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
116
117 CALL hm_get_intv(
'MAT_Iflag' ,lawid ,is_available, lsubmodel)
118 CALL hm_get_intv(
'FUN_A1' ,bulk_fnct ,is_available, lsubmodel)
119 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
122 CALL hm_get_intv(
'Gflag' ,icheck ,is_available, lsubmodel
123
124 CALL hm_get_intv (
'FUN_B1' ,ntable_ ,is_available, lsubmodel)
125
126
128
129
130 nuparam = 21
131 nfunc = 2
132 nuvar = 9
133
134 zep495 = zep4 + nine*em02 + five*em03
135 IF(icheck == 0 ) icheck = -3
136 IF(nstart == 0 ) nstart = 100
137 IF(errtol == zero ) errtol = fiveem3
138 IF(nmual == 0 ) nmual = 2
139 IF(fscal == zero ) fscal = one*fscal_unit
140 IF(lawid == 0 ) lawid = -1
141 IF(lawid == -1) THEN
142 icheck = -3
143 nstart = 100
144 errtol = fiveem3
145 nmual = 2
146 ENDIF
147 IF (ntable_ == 0) THEN
149 . msgtype=msgerror,
150 . anmode=aninfo,
152 . c1=titr)
153 ENDIF
154 IF (lawid == 0) lawid = 1
155 IF (lawid /= 1 .AND. lawid /= 2 .AND. lawid /= -1 ) THEN
157 . msgtype=msgerror,
158 . anmode=aninfo,
160 . c1=titr,i2=lawid)
161 ENDIF
162
163 tenscut = ep20
164 DO i=1,5
165 mu(i)=ten*fscal_unit
166 al(i)=ten*fscal_unit
167 ENDDO
168 gs = zero
169 IF (lawid == 1) THEN
170 DO i=1,5
171 gs = gs + mu(i)*al(i)
172 ENDDO
173 ELSEIF (lawid == 2) THEN
174 DO i=1,2
175 gs = gs + mu(i)*al(i)
176 ENDDO
177 ENDIF
178
179 IF (nu == zero ) nu = zep495
180 bulk = gs*(one+nu)/
max(em20,three*(one-two*nu))
181 ifunc(1) = bulk_fnct
182 ifunc(2) = ntable_
183 parmat(1)= gs
184 parmat(2)= gs*(one+nu)
185 parmat(3)= nu
186 parmat(6)= bulk
187 mu = gs/two
188
189 IF (rhor == zero) rhor=rho0
190 pm(1) = rhor
191 pm(2) = gs
192 pm(89) = rho0
193 pm(100)= bulk
194
195 uparam(1) = mu(1)
196 uparam(2) = mu(2)
197 uparam(3) = mu(3)
198 uparam(4) = mu(4)
199 uparam(5) = mu(5)
200 uparam(6) = al(1)
201 uparam(7) = al(2)
202 uparam(8) = al(3)
203 uparam(9) = al(4)
204 uparam(10)= al(5)
205 uparam(11)= bulk
206 uparam(12)= tenscut
207 uparam(13)= lawid
208 uparam(14)= nu
209 uparam(15)= fscal
210 uparam(17)= gs
211 uparam(18)= nmual
212 uparam(19)= icheck
213 uparam(20)= nstart
214 uparam(21) = zero
215 IF(is_encrypted)uparam(21)= one
216
220
223
224 WRITE(iout,1100) trim(titr),
id,69
225 WRITE(iout,1000)
226 IF(is_encrypted)THEN
227 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
228 ELSE
229 WRITE(iout,1200) rho0
230 IF (ntable_ /= 0) THEN
231 WRITE(iout,'(5X,A,//)')'HYPERELASTIC MATERIAL CONSTANTS WILL BE DETERMINED BY NONLINEAR LEAST SQUARE FITTING '
232 WRITE(iout,1300) nu,lawid,bulk_fnct,fscal,nmual,icheck
233 ENDIF
234 ENDIF
235
236 RETURN
237
238 1000 FORMAT
240 & 5x,29h ---------------------------,//)
241 1100 FORMAT(/
242 & 5x,a,/,
243 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
244 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
245 1200 FORMAT(
246 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
247 1300 FORMAT
248 &(5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
249 &,5x,'LAW TYPE. . . . . . . . . . . . . . . .=',i10/
250 &,5x,'BULK FUNCTION ID. . . . . . . . . . . .=',i10/
251 &,5x,'SCALE FACTOR FOR BULK FUNCTION. . . . .=',1pg20.13/
252 &,5x,'FIT ORDER . . . . . . . . . . . . . . .=',i10/
253 &,5x,'ICHECK = ', i10//)
254
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 init_mat_keyword(matparam, keyword)
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)
subroutine tabulated(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, npf, tf)