42
43
44
50
51
52
53#include "implicit_f.inc"
54
55
56
57#include "com01_c.inc"
58#include "param_c.inc"
59#include "sphcom.inc"
60#include "tablen_c.inc"
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 TYPE (),INTENT(IN) ::UNITAB
100 INTEGER IOUT,NUVAR,ISKN(LISKN,*),IG,IGTYP,IGEO(*)
101 CHARACTER(LEN=NCHARTITLE)::TITR
103 . pargeo(*), geo(*)
104 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
105 INTEGER SET_U_PNU,SET_U_GEO
107 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
108
109
110
111
112#include "com04_c.inc"
113
114
115
116 INTEGER IERROR,IORDER,ISK,K
118 . xk,mp,qa,qb,alpcs,xorder,dist,pun,zstab,
119 . hmin,hmax,h_scal
120 INTEGER IFLG_H
122 . h_dilat_coeff,rflg_h
123 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
124
125
126
127 DATA pun/0.1/
128
129
130 nuvar=0
131 pargeo(1) = 0
132 xk=0.0
133 pargeo(2)=xk
134
135 pargeo(3) =1
136
137 isk=0
138 iflg_h=0
139 iorder=-1
140 dist =zero
141 zstab =zero
142
143
144
145
147
148
149
150 CALL hm_get_intv(
'SKEW_CSID',isk,is_available,lsubmodel)
151 CALL hm_get_intv(
'h_1D',iflg_h,is_available,lsubmodel)
152 CALL hm_get_intv(
'ORDER',iorder,is_available,lsubmodel)
153
154
155
159 CALL hm_get_floatv(
'ALPHA1',alpcs,is_available,lsubmodel,unitab)
161 CALL hm_get_floatv(
'Xi_Stab',zstab,is_available,lsubmodel,unitab)
162 CALL hm_get_floatv(
'hmin',hmin,is_available,lsubmodel,unitab)
163 CALL hm_get_floatv(
'hmax',hmax,is_available,lsubmodel,unitab)
164 CALL hm_get_floatv(
'h_scal',h_scal,is_available,lsubmodel,unitab)
165
166
167 WRITE(iout,1100) ig
168
169 IF(qa==zero)qa=two
170 IF(qb==zero)qb=one
171 IF (zstab>0) nspbuf=15
172
173 IF (iflg_h == 3) THEN
174 IF(hmin==zero) hmin = zep2
175 IF(hmax==zero) hmax = two
176 IF(h_scal==zero) h_scal = onep2
177 ENDIF
178
179 IF(isk /= 0)THEN
180 DO k=1,numskw
181 IF(isk == iskn(4,k+1)) THEN
182 pargeo(1)=(k+1)+pun
183 GO TO 100
184 ENDIF
185 ENDDO
186 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
187 . c1='PROPERTY',
188 . c2='PROPERTY',
189 . i1=ig,i2=isk,c3=titr)
190100 CONTINUE
191 ELSE
192 pargeo(1)=zero
193 k = 1
194 ENDIF
195
196
197
198
199
200
201
202
203 rflg_h = iflg_h
204
205 IF (iflg_h==1) THEN
206 h_dilat_coeff = one
207 ELSEIF (iflg_h==2) THEN
208 h_dilat_coeff = zero
209 ELSE
210 h_dilat_coeff = third
211 ENDIF
212
213 IF(is_encrypted)THEN
214 WRITE(iout,'(5X,A,//)')' CONFIDENTIAL DATA'
215 ELSE
216 IF(dist==zero)THEN
217 WRITE(iout,1000)mp,qa,qb,alpcs,zstab,isk,iorder
218 IF (iflg_h==3) THEN
219 WRITE(iout,1005)
220 ELSE
221 WRITE(iout,1004)
222 ENDIF
223 ELSE
224 WRITE(iout,1001)mp,qa,qb,alpcs,zstab,isk,iorder,dist
225 ENDIF
226 IF (iflg_h==1) THEN
227 WRITE(iout,1002)
228 ELSEIF (iflg_h==2) THEN
229 WRITE(iout,1003)
230 ELSEIF (iflg_h==3) THEN
231 WRITE(iout,1006) hmin,hmax,h_scal
232 END IF
233 ENDIF
234
235 IF(mp<=zero)THEN
236 CALL ancmsg(msgid=138,anmode=aninfo,msgtype=msgwarning,
237 . c1=titr,i1=ig)
238 mp=one
239 ENDIF
240
245 xorder = iorder+em01
254
255 geo(14)=qa
256 geo(15)=qb
257 IF (geo(16) /= zero .OR. geo(17) /= zero) THEN
258 igeo(33) = 1
259 ENDIF
260
261 prop_tag(igtyp)%G_SIG = 6
262 prop_tag(igtyp)%G_VOL = 1
263 prop_tag(igtyp)%G_EINT = 1
264 prop_tag(igtyp)%G_QVIS = 1
265 prop_tag(igtyp)%L_SIG = 6
266 prop_tag(igtyp)%L_EINT = 1
267 prop_tag(igtyp)%L_VOL = 1
268 prop_tag(igtyp)%L_QVIS = 1
269
270 RETURN
271
272 999 CONTINUE
273
274
275
277 . msgtype=msgerror,
278 . anmode=aninfo,
279 . i1=ig,
280 . c2=titr,
281 . c1='SPH')
282 RETURN
283
284 1000 FORMAT(
285 & 5x,'PARTICLES MASS. . . . . . . . . . . . .=',1pg20.13/,
286 & 5x,'QA. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
287 & 5x,'QB. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
288 & 5x,'ALPCS . . . . . . . . . . . . . . . . .=',1pg20.13/,
289 & 5x,'coefficient wrt tensile instability . .=',1PG20.13/,
290 & 5X,'orthotropic initial skew system . . . .=',I10/,
291 & 5X,'formulation correction order. . . . . .=',I10/,
292 & 5X,'smoothing length automatically computed')
293 1001 FORMAT(
294 & 5X,'particles mass. . . . . . . . . . . . .=',1PG20.13/,
295 & 5X,'qa. . . . . . . . . . . . . . . . . . .=',1PG20.13/,
296 & 5X,'qb. . . . . . . . . . . . . . . . . . .=',1PG20.13/,
297 & 5X,'alpcs . . . . . . . . . . . . . . . . .=',1PG20.13/,
298 & 5X,'coefficient wrt tensile instability . .=',1PG20.13/,
299 & 5X,'orthotropic initial skew system . . . .=',I10/,
300 & 5X,'formulation correction order. . . . . .=',I10/,
301 & 5X,'smoothing length. . . . . . . . . . . .=',1PG20.13)
302 1002 FORMAT(
303 & 5X,'uniaxial dilatation of smoothing length')
304 1003 FORMAT(
305 & 5X,'constant smoothing length')
306 1004 FORMAT(
307 & 5X,'smoothing length computed from particle mass')
308 1005 FORMAT(
309 & 5X,'smoothing length computed from')
310 1006 FORMAT(
311 & 5X,'bounded dilatation of smoothing length'/,
312 & 5X,'minimum dilatation ratio . . . . . . . =',1PG20.13/,
313 & 5X,'maximum dilatation ratio . . . . . . . =',1PG20.13/,
314 & 5X,'smoothing length scaling factor. . . . =',1PG20.13)
315 1100 FORMAT(
316 & 5X,'sph property set'/,
317 & 5X,'property set number . . . . . . . . . .=',I10)
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)
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)
integer function set_u_pnu(ivar, ip, k)
integer function set_u_geo(ivar, a)