42
43
44
48 USE matparam_def_mod
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "units_c.inc"
69#include "param_c.inc"
70
71
72
73 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
74 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
75 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
76 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
77 INTEGER, INTENT(INOUT) :: IMATVIS,,NUVAR,NFUNC
78 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
79 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
80 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
81 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
82 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT)
83
84
85
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
88 . mu(100),al(100),nu,nu0,rho0,
89 . gs,p,d(100),zep495,rhor
90 INTEGER I,NORDRE,ILAW
91
92 is_encrypted = .false.
93 is_available = .false.
94 imatvis = 1
95 ilaw = 82
96 zep495 = zep4 + nine*em02 + five*em03
97 nfunc = 0
98
100
101 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
102 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
103
104 CALL hm_get_floatv(
'MAT_NU' ,nu0 ,is_available, lsubmodel, unitab)
105 CALL hm_get_intv(
'ORDER' ,nordre ,is_available,lsubmodel)
106
107 IF(nordre == 0)THEN
109 . msgtype=msgerror,
110 . anmode=aninfo_blind_1,
111 . i1=mat_id,
112 . c1=titr)
113 ENDIF
114 DO i=1,nordre
118 ENDDO
119
120 gs = zero
121 DO i=1,nordre
122 gs = gs + mu(i)
123 ENDDO
124
125 IF(gs < zero) THEN
127 . msgtype=msgerror,
128 . anmode=aninfo,
129 . i1=mat_id,
130 . c1=titr)
131 ENDIF
132
133 IF(nu0 == half) nu0= zep495
134 IF(nu0 == zero ) THEN
135 IF( d(1) > zero) THEN
136 p=two/d(1)
137 nu = one/(six*p + two*gs)
138 nu = (three*p - two*gs)*nu
139 IF(nu == half) nu= zep499
140 d(1) = three*(one - two*nu)/gs/(one + nu)
141 p = two/d(1)
142 ELSE
143 nu = zep495
144 d(1) = three*(one - two*nu)/gs/(one + nu)
145 p = two/d(1)
146 ENDIF
147 ELSE
148 nu = nu0
149 d(1) = three*(one - two*nu)/gs/(one + nu)
150 p = two/d(1)
151 ENDIF
152
153 uparam(1) = nordre
154 DO i=1,nordre
155 uparam(1 + i ) = mu(i)
156 uparam(1 + nordre + i) = al(i)
157 uparam(1 + 2*nordre + i) = d(i)
158 ENDDO
159 nuparam = 1 + 3*nordre
160 nuvar = 1
161 parmat(1) = p
162 parmat(2) = two*gs*(one + nu)
163 parmat(3) = nu
164 parmat(6) = p
165
166 IF(rhor==zero)rhor=rho0
167 pm(1) =rhor
168 pm(89)=rho0
169
173
176
177 WRITE(iout,1010) trim(titr),mat_id,ilaw
178 WRITE(iout,1000)
179 IF(is_encrypted)THEN
180 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
181 ELSE
182 WRITE(iout,1020)rho0
183 WRITE(iout,1100)nordre,nu,gs
184 IF (nordre >= 1) WRITE(iout,1201) mu(1) ,al(1) ,d(1)
185 IF (nordre >= 2) WRITE(iout,1202) mu(2) ,al(2) ,d(2)
186 IF (nordre >= 3) WRITE(iout,1203) mu(3) ,al(3) ,d(3)
187 IF (nordre >= 4) WRITE(iout,1204) mu(4) ,al(4) ,d(4)
188 IF (nordre >= 5) WRITE(iout,1205) mu(5) ,al(5) ,d(5)
189 IF (nordre >= 6) WRITE(iout,1206) mu(6) ,al(6) ,d(6)
190 IF (nordre >= 7) WRITE(iout,1207) mu(7) ,al(7) ,d
191 IF (nordre >= 8) WRITE(iout,1208) mu(8) ,al(8) ,d(8)
192 IF (nordre >= 9) WRITE(iout,1209) mu(9) ,al(9) ,d(9)
193 IF (nordre ==10) WRITE(iout,1210) mu(10),al(10),d(10)
194 ENDIF
195
196 1000 FORMAT
197 & (5x, 'OGDEN HYPERELASIC LAW' ,/,
198 & 5x, ' ---------------',//)
199 1010 FORMAT(/
200 & 5x,a,/,
201 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . .=',i10/,
202 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . .=',i10/)
203 1020 FORMAT(
204 & 5x,'INITIAL DENSITY. . . . . . . . . . . . . .=',1pg20.13/)
205 1100 FORMAT
206 & (5x,'ORDER OF STRAIN ENERGY . . . . . . . . . .=',i10/
207 & 5x,'POISSON RATIO. . . . . . . . . . . . . . .=',1pg20.13/
208 & 5x,'INITIAL SHEAR MODULUS. . . . . . . . . . .=',e12.4/)
209 1201 FORMAT(
210 & 5x,'MATERIAL PARAMETER (MU1). . . . . . . . . .=',1pg20.13/
211 & 5x,'MATERIAL PARAMETER (ALPHA1) . . . . . . . .=',1pg20.13/
212 & 5x,'MATERIAL PARAMETER (D1) . . . . . . . . . .=',1pg20.13)
213 1202 FORMAT(
214 & 5x,'MATERIAL PARAMETER (MU2). . . . . . . . . .=',1pg20.13/
215 & 5x,'MATERIAL PARAMETER (ALPHA2) . . . . . . . .=',1pg20.13/
216 & 5x,'MATERIAL PARAMETER (D2) . . . . . . . . . .=',1pg20.13)
217 1203 FORMAT(
218 & 5x,'MATERIAL PARAMETER (MU3). . . . . . . . . .=',1pg20.13/
219 & 5x,'MATERIAL PARAMETER (ALPHA3) . . . . . . . .=',1pg20.13/
220 & 5x,'MATERIAL PARAMETER (D3) . . . . . . . . . .=',1pg20.13)
221 1204 FORMAT(
222 & 5x,'MATERIAL PARAMETER (MU4). . . . . . . . . .=',1pg20.13/
223 & 5x,'MATERIAL PARAMETER (ALPHA4) . . . . . . . .=',1pg20.13/
224 & 5x,'MATERIAL PARAMETER (D4) . . . . . . . . . .=',1pg20.13)
225 1205 FORMAT(
226 & 5x,'MATERIAL PARAMETER (MU5). . . . . . . . . .=',1pg20.13/
227 & 5x,'MATERIAL PARAMETER (ALPHA5) . . . . . . . .=',1pg20.13/
228 & 5x,'MATERIAL PARAMETER (D5) . . . . . . . . . .=',1pg20.13)
229 1206 FORMAT(
230 & 5x,'MATERIAL PARAMETER (MU6). . . . . . . . . .=',1pg20.13/
231 & 5x,'material parameter(alpha6) . . . . . . . .=',1PG20.13/
232 & 5X,'material parameter(d6) . . . . . . . . . .=',1PG20.13)
233 1207 FORMAT(
234 & 5X,'material parameter(mu7). . . . . . . . . .=',1PG20.13/
235 & 5X,'material PARAMETER (alpha7) . . . . . . . .=',1PG20.13/
236 & 5X,'material parameter(d7) . . . . . . . . . .=',1PG20.13)
237 1208 FORMAT(
238 & 5X,'material parameter(mu8). . . . . . . . . .=',1PG20.13/
239 & 5X,'material parameter(alpha8) . . . . . . . .=',1PG20.13/
240 & 5X,'material parameter(d8) . . . . . . . . . .=',1PG20.13)
241 1209 FORMAT(
242 & 5X,'material parameter(mu9). . . . . . . . . .=',1PG20.13/
243 & 5X,'material parameter(alpha9) . . . . . . . .=',1PG20.13/
244 & 5X,'material parameter(d9) . . . . . . . . . .=',1PG20.13)
245 1210 FORMAT(
246 & 5X,'material parameter(mu10) . . . . . . . . .=',1PG20.13/
247 & 5X,'material parameter(alpha10). . . . . . . .=',1PG20.13/
248 & 5X,'material parameter(d10). . . . . . . . . .=',1PG20.13)
249
250 RETURN
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
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)
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)