40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
64 USE matparam_def_mod
66
67
68
69#include "implicit_f.inc"
70
71
72
73#include "units_c.inc"
74#include "param_c.inc"
75
76
77
78 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
79 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
80 my_real,
DIMENSION(100) ,
INTENT(INOUT) :: parmat
81 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
82 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
83 INTEGER, INTENT(INOUT) :: ISRATE,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
84 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
85 INTEGER,INTENT(IN) :: MAT_ID
86 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
87 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
88 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
89
90
91
96 LOGICAL :: IS_ENCRYPTED,IS_AVAILABLE
97
98
99
100 israte=0
101 imatvis=1
102 is_encrypted = .false.
103 is_available = .false.
104
105
107
108 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
110
111 CALL hm_get_floatv(
'MAT_BULK' ,bulk ,is_available, lsubmodel, unitab)
112
113
114 CALL hm_get_floatv(
'MAT_G0' ,g0 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_GI' ,gi ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('mat_decay
' ,BETA ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117
118 CALL HM_GET_FLOATV('mat_p0' ,P0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_FLOATV('mat_phi' ,PHI ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 CALL HM_GET_FLOATV('mat_gama0' ,GAMA0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121
122 !GAMA0 = GAMA0 * FAC_L * FAC_L * FAC_L
123
124
125 IF (RHOR==ZERO) RHOR=RHO0
126
127 NUPARAM=7
128 NFUNC=0
129 NUVAR=8
130
131 UPARAM(1)=BULK
132 UPARAM(2)=G0
133 UPARAM(3)=GI
134 UPARAM(4)=BETA
135 UPARAM(5)=P0
136 UPARAM(6)=PHI
137 UPARAM(7)=GAMA0
138
139 YOUNG = (NINE*BULK*G0)/(THREE*BULK + G0)
140
141 PARMAT(1) = BULK
142! PARMAT(1) = TWO*GI
143 PARMAT(2) = YOUNG
144
145 PARMAT(16) = 2
146 PARMAT(17) = TWO*G0/(BULK + FOUR_OVER_3*G0)
147
148 PM(1) = RHOR
149 PM(89) = RHO0
150 PM(12) = SQRT(MAX(ZERO, G0)) !done by default in lecmuser.F for law34
151 PM(22) = G0
152 PM(27) = SQRT(YOUNG/RHO0) ! Sound speed
153
154 ! MATPARAM keywords
155 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
156
157 ! Properties compatibility
158 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ISOTROPIC")
159 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
160 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
161 CALL INIT_MAT_KEYWORD(MATPARAM,"TRUSS")
162 CALL INIT_MAT_KEYWORD(MATPARAM,"BEAM_INTEGRATED")
163
164 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,34
165 WRITE(IOUT,1000)
166
167 IF(IS_ENCRYPTED)THEN
168 WRITE(IOUT,'(5x,a,//)')'confidential data'
169 ELSE
170 WRITE(IOUT,1002) RHO0
171 WRITE(IOUT,1100) BULK,G0,GI,BETA,P0,PHI,GAMA0
172 ENDIF
173
174 RETURN
175
176 1000 FORMAT
177 & (5X,14H VISCOELASTIC,/,
178 & 5X,14H ------------,//)
179 1001 FORMAT(/
180 & 5X,A,/,
181 & 5X, 'material number . . . . . . . . . . . .=',I10/,
182 & 5X, 'material law. . . . . . . . . . . . . .=',I10/)
183 1002 FORMAT(
184 & 5X, 'initial density . . . . . . . . . . . .=',1PG20.13/)
185 1100 FORMAT
186 & (5X, 'bulk modulus. . . . . . . . . . . . . .=',1PG20.13/
187 & ,5X, 'shear modulus(short time). . . . . . .=',1PG20.13/
188 & ,5X, 'shear modulus(long time) . . . . . . .=',1PG20.13/
189 & ,5X, 'decay constant. . . . . . . . . . . . .=',1PG20.13//
190 & ,5X, 'initial foam pressure . . . . . . . . .=',1PG20.13/
191 & ,5X, 'ratio of foam to polymer density. . . .=',1PG20.13/
192 & ,5X, 'initial volumetric strain. . . .. . . .=',1PG20.13//)
193
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
integer, parameter nchartitle