41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
63 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,
INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
80 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
81 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
82 INTEGER,INTENT(IN) :: MAT_ID
83 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
84 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
85 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
86
87
88
89 my_real ssp,vis,smag,smag2,c1,cps,ca,fac_m,fac_l,fac_t,fac_c
90 INTEGER I,ISGS
92 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
93
94
95
96 is_encrypted = .false.
97 is_available = .false.
98 israte = 0
99 imatvis = 0
100 nuparam = 5
101 nfunc = 0
102 nuvar = 2
103 mtag%NUVAR = nuvar
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_C' ,ssp ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'MAT_NU' ,vis ,is_available, lsubmodel, unitab)
113
114 CALL hm_get_intv (
'Istf' ,isgs ,is_available, lsubmodel)
115 CALL hm_get_floatv(
'MAT_C5' ,smag ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_CO1' ,cps ,is_available, lsubmodel, unitab)
117
118
119 IF(rhor==zero)rhor=rho0
120 pm(1) =rhor
121 pm(89)=rho0
122 IF(isgs==0)smag2=zero
123 IF(isgs>=1)THEN
124 IF(smag==zero)THEN
125 smag=em01
126 smag2=em02
127 ELSE
128 smag2=smag**2
129 ENDIF
130 ENDIF
131 IF(isgs>=2)THEN
132 IF(cps==0)cps=smag
133 ca=(cps/smag)**2
134 ELSE
135 ca=zero
136 ENDIF
137 c1=pm(1)*ssp**2
138
139
140 uparam(1) = vis
141 uparam(2) = c1
142 uparam(3) = isgs+em01
143 uparam(4) = smag2
144 uparam(5) = ca
145
146 parmat(1) = c1
147
148
149
150
152
153
155
156
157 WRITE(iout,1001) trim(titr),mat_id,46
158 WRITE(iout,'(5X,A,//)')' LES FLUID'
159 WRITE(iout,'(5X,A,//)')' ---------'
160 IF(is_encrypted)THEN
161 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
162 ELSE
163 IF(isgs==0)WRITE(iout,1000)rho0,rhor,ssp,vis
164 IF(isgs==1)WRITE(iout,1100)rho0,rhor,ssp,vis,smag
165 IF(isgs>=2)WRITE(iout,1200)rho0,rhor,ssp,vis,smag,cps
166 ENDIF
167
168
169 1000 FORMAT(
170 & 5x,40h les fluid ,/,
171 & 5x,40h --------- ,//
172 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',e12.4/,
173 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',e12.4/,
174 & 5x,40hsound speed . . . . . . . . . . . . . .=,e12.4/,
175 & 5x,40hmolecular dynamic viscosity . . . . . .=,e12.4/)
176 1001 FORMAT(
177 & 5x,a,/,
178 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . =',i10/,
179 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . =',i10/)
180 1100 FORMAT(
181 & 5x,40h les with smagorinsky sgs model ,/,
182 & 5x,40h ------------------------------ ,//
183 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',e12.4/,
184 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',e12.4/,
185 & 5x,40hsound speed . . . . . . . . . . . . . .=,e12.4/,
186 & 5x,40hmolecular dynamic viscosity . . . . . .=,e12.4/,
187 & 5x,40hsmagorinsky constant . . . . . . . . .=,e12.4//)
188 1200 FORMAT(
189 & 5x,40h les with acoustic smagorinsky sgs ,/,
190 & 5x,40h --------------------------------- ,//
191 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',e12.4/,
192 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',e12.4/,
193 & 5x,40hsound speed . . . . . . . . . . . . . .=,e12.4/,
194 & 5x,40hmolecular dynamic viscosity . . . . . .=,e12.4/,
195 & 5x,40hsmagorinsky constant . . . . . . . . .=,e12.4/,
196 & 5x,40hpressure
damping. . . . . . . . . . . .=,e12.4//)
197
198
199 RETURN
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
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