42
43
44
45
46
47
48
52 USE matparam_def_mod
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "units_c.inc"
63#include "param_c.inc"
64
65
66
67 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
68 my_real,
INTENT(INOUT) :: parmat
69 INTEGER, INTENT(INOUT) :: IFUNC(MAXFUNC), NFUNC, MAXFUNC, MAXUPARAM,
70 . NUPARAM, NUVAR
71 INTEGER, INTENT(IN) :: MAT_ID
72 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
73 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
74 TYPE(MLAW_TAG_), INTENT(INOUT) ::
75 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
76
77
78
79 INTEGER MATS,IFLAG1,IFLAG2,ITEMAX
81 . ce, pe, ps, nn, tol, young, nu, bulk, rho0, rhor
82 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
83
84
85
86 is_encrypted = .false.
87 is_available = .false.
89
90
91 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
92 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab
93
94 CALL hm_get_floatv(
'MAT_E', young, is_available, lsubmodel, unitab
95 CALL hm_get_floatv(
'MAT_NU', nu, is_available, lsubmodel, unitab)
96
97 CALL hm_get_intv(
'MAT1', mats, is_available, lsubmodel)
98 CALL hm_get_intv(
'HFLAG1', iflag1, is_available, lsubmodel)
101
102 CALL hm_get_floatv(
'MAT_PPRES', pe, is_available, lsubmodel, unitab)
104 CALL hm_get_floatv(
'MAT_EXP1', nn, is_available, lsubmodel, unitab)
105
106 CALL hm_get_floatv(
'MAT_Tol', tol, is_available, lsubmodel, unitab)
107
108 IF(iflag1 <= 0) iflag1=1
109 IF(iflag2 <= 0) iflag2=1
110 IF(itemax <= 0) itemax=5
111 IF(nn <= zero) nn=two
112 IF(tol <= zero) tol=em08
113
114 nuvar = 4
115 pm(1) = rhor
116 pm(89) = rho0
117 bulk=young/three/(one-two*nu)
118 ce=sqrt(bulk/rho0)
119
120 uparam(1) = bulk
121 uparam(2) = pe
122 uparam(3) = ps
123 uparam(4) = nn
124 uparam(5) = tol
125 uparam(6) = mats
126 uparam(7) = iflag1
127 uparam(8) = iflag2
128 uparam(9) = young/(one+nu)
129 uparam(10)= half*uparam(9)
130 uparam(17)= itemax
131
132 nuparam= 17
133
134 parmat(1) = bulk
135 parmat(2) = young
136 parmat(3) = nu
137
138 parmat(16) = 2
139 parmat(17) = (one - two*nu)/(one - nu) ! ==two*g/(bulk+sfour_over_3*g)
140
141
143
144
146 CALL INIT_MAT_KEYWORD(MATPARAM,"sph")
147
148
149 WRITE(IOUT, 900) TRIM(TITR),MAT_ID,75
150 WRITE(IOUT,1000)
151 IF (IS_ENCRYPTED) THEN
152 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
153 ELSE
154 WRITE(IOUT,950)RHO0
155 WRITE(IOUT,1100) YOUNG, NU, UPARAM(10), BULK
156 WRITE(IOUT,1200) MATS, IFLAG1, IFLAG2, ITEMAX, PE, PS, NN
157 WRITE(IOUT,1300) TOL, CE
158 ENDIF
159
160
161
162 IF (PE > PS) THEN
163 CALL ANCMSG(MSGID=897,
164 . MSGTYPE=MSGERROR,
165 . ANMODE=ANINFO,
166 . I1=MAT_ID,
167 . C1=TITR)
168 ENDIF
169
170 RETURN
171
172 900 FORMAT(/
173 & 5X,A,/,
174 & 5X,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',I10/,
175 & 5X,'MATERIAL LAW . . . . . . . . . . . . . . . .=',I10/)
176 950 FORMAT(
177 & 5X,'INITIAL DENSITY . . . . . . . . . . .=',1PG20.13/)
178 1000 FORMAT(
179 & 5X,' POROUS MATERIAL',/,
180 & 5X,' ---------------',//)
181 1100 FORMAT(
182 & 5X,'YOUNG',1H','S MODULUS . . . . . . . . . . . . =',1PG20.13/,
183 &5X,'POISSON',1H','S RATIO . . . . . . . . . . . . =',1PG20.13/,
184 & 5X,'SHEAR MODULUS . . . . . . . . . . . . . =',1PG20.13/,
185 & 5X,'BULK MODULUS . . . . . . . . . . . . . =',1PG20.13//)
186 1200 FORMAT(
187 & 5X,'SOLID MATERIAL IDENTIFIER . . . . . . . =',I10/
188 & 5X,'PRESSURE FORMULATION FLAG . . . . . . . =',I10/
189 & 5X,'DEVIATORIC STRESSES FORMULATION FLAG. . =',I10/
190 & 5X,'MAXIMUM NUMBER OF ITERATIONS. . . . . . =',I10//
191 & 5X,'ELASTIC COMPACTION PRESSURE (PE). . . . =',1PG20.13/
192 & 5X,'SOLID COMPACTION PRESSURE (PS). . . . . =',1PG20.13/
193 & 5X,'EXPONENT (NN) . . . . . . . . . . . . . =',1PG20.13)
194 1300 FORMAT(
195 & 5X,'CONVERGENCE TOLERANCE (TOL) . . . . . . =',1PG20.13/
196 & 5X,'INITIAL POROUS BULK SOUND SPEED . . . . =',1PG20.13)
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