39
40
41
42
43
49
50
51
52#include "implicit_f.inc"
53
54
55
56
57
58
59 INTEGER,INTENT(IN) :: NPARI, NPARIR
60 INTEGER ISU1,,ILAGM,NOINT
61 INTEGER IPARI(NPARI)
64
65 TYPE (SURF_) ,TARGET , DIMENSION(NSURF) :: IGRSURF
66 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
67 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
68
69
70
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "units_c.inc"
74
75
76
77 INTEGER I,J,L, NTYP,IS1, IS2,,ILEV,
78 . INACTI, IBC1, IBC2, IBC3,IBC1M, IBC2M, IBC3M,
79 . IGSTI,IDEL3,IVOID,IRS,IRM,INTKG
81 . fric,gap,startt,stopt,visc,viscf,gapscale,ptmax
82 CHARACTER(LEN=40)::MESS
83 CHARACTER(LEN=NCHARTITLE)::MSGTITL
84 CHARACTER(LEN=NCHARKEY)::OPT,KEY,KEY1
85 CHARACTER(LEN=NCHARFIELD)::BCFLAG,BCFLAGM
86
87 INTEGER, DIMENSION(:), POINTER :: INGR2USR
88
89
90
91 INTEGER NGR2USR
92 LOGICAL IS_AVAILABLE
93
94
95
96
97
98
99 is1=0
100 is2=0
101 idelkeep=0
102 idel3= 0
103 inacti = 0
104 igsti = 0
105 ilev = 0
106 ibc1=0
107 ibc2=0
108 ibc3=0
109 ibc1m=0
110 ibc2m=0
111 ibc3m=0
112 intkg = 0
113
114 fric = zero
115 gap = zero
116 gapscale = zero
117 startt = zero
118 stopt=ep30
119 visc = zero
120 viscf = zero
121 ptmax=ep30
122
123 ntyp = 3
124 ipari(15)=noint
125 ipari(7)=ntyp
126
127 is_available = .false.
128
129
130
131
133 CALL hm_get_intv(
'secondaryentityids',isu2,is_available,lsubmodel)
134 CALL hm_get_intv(
'NodDel3',idel3,is_available,lsubmodel
135
136 CALL hm_get_intv(
'Deactivate_X_BC',ibc1,is_available,lsubmodel)
137 CALL hm_get_intv(
'Deactivate_Y_BC',ibc2,is_available,lsubmodel)
138 CALL hm_get_intv(
'Deactivate_Z_BC',ibc3,is_available,lsubmodel)
139 CALL hm_get_intv(
'Gflag',irs,is_available,lsubmodel)
140 CALL hm_get_intv(
'Vflag',irm,is_available,lsubmodel)
141
142
143
144
145
146 CALL hm_get_floatv(
'TYPE3_SCALE',stfac,is_available,lsubmodel
149 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
150 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
151
152 CALL hm_get_floatv(
'Ptlim',ptmax,is_available,lsubmodel,unitab)
153
154
155
156
157
158
159
160
161
162
163 is1=1
164 is2=1
165 ingr2usr => igrsurf(1:nsurf)%ID
166 isu1=
ngr2usr(isu1,ingr2usr,nsurf)
167 isu2=
ngr2usr(isu2,ingr2usr,nsurf
168 IF (idel3 < 0) THEN
169 idelkeep=1
170 idel3=abs(idel3)
171 END IF
172 ipari(61)=idelkeep
173 IF (idel3>2.OR.n2d==1) idel3 = 0
174 ipari(17)=idel3
175
176
177 ipari(45)=isu1
178 ipari(46)=isu2
179 ipari(13)=is1*10+is2
180 ipari(20)=ilev
181
182
183
184
185 IF(stfac==zero) stfac=one_fifth
186
187 IF (stopt == zero) stopt = ep30
188
189
190 frigap(1)=fric
191 frigap(2)=gap
192 frigap(3)=startt
193 frigap(11)=stopt
194
195
196
197
198 ipari(11)=4*ibc1+2*ibc2+ibc3 + 8 *(4*ibc1m+2*ibc2m+ibc3m)
199
200
201 ipari(24) = irm
202 ipari(25) = irs
203
204 ipari(11)=4*ibc1+2*ibc2+ibc3 + 8 *(4*ibc1m+2*ibc2m+ibc3m)
205 frigap(14)=visc
206
207
208
209
210 IF(ptmax==zero) ptmax=ep30
211
212 frigap(16)=ptmax
213
214 ipari(65) = intkg
215
216
217
218
219
220
221 WRITE(iout,1503)ibc1,ibc2,ibc3,stfac,fric,gap,startt,stopt,
222 . irs,irm,ptmax
223 IF(idel3/=0) THEN
224 WRITE(iout,'(A,A,I5/)')
225 . ' DELETION FLAG ON FAILURE OF ELEMENT',
226 . ' (1:YES-ALL/2:YES-ANY) SET TO ',idel3
227 IF(idelkeep == 1)THEN
228 WRITE(iout,'(A/)')
229 . ' IDEL: DO NOT REMOVE NON-CONNECTED NODES FROM SECONDARY SURFACE'
230 ENDIF
231 ENDIF
232
233
234 IF(is1==0)THEN
235 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
236 ELSEIF(is1==1)THEN
237 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
238 ELSEIF(is1==2)THEN
239 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
240 ELSEIF(is1==3)THEN
241 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
242 ELSEIF(is1==4 )THEN
243 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
244 ELSEIF(is1==5 )THEN
245 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
246 ENDIF
247 IF(is2==0)THEN
248 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
249 ELSEIF(is2==1)THEN
250 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
251 ELSEIF(is2==2)THEN
252 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
253 ELSEIF(is2==3)THEN
254 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
255 ELSEIF(is2==4)THEN
256 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
257 . 'TO HYPER-ELLIPSOIDAL SURFACE'
258 ENDIF
259
260
261 1000 FORMAT(/1x,' INTERFACE NUMBER :',i10,1x,a)
262
263 RETURN
264
265 1503 FORMAT(//
266 . ' TYPE==3 SLIDING AND VOIDS ' //,
267 . ' BOUND. COND. DELETED AFTER IMPACT IN X DIR ',i1/,
268 . ' (1:YES 0:NO) Y DIR ',i1/,
269 . ' Z DIR ',i1/,
270 . ' STIFFNESS FACTOR. . . . . . . . . . . . . ',1pg20.13/,
271 . ' FRICTION FACTOR . . . . . . . . . . . . . ',1pg20.13/,
272 . ' INITIAL GAP . . . . . . . . . . . . . . . ',1pg20.13/,
273 . ' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
274 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
275 . ' SECONDARY SURFACE REORDERING FLAG . . . . . . ',i1/,
276 . ' MAIN SURFACE REORDERING FLAG. . . . . . ',i1/,
277 . ' tangential pressure limit. . .. . . . . . ',1PG20.13/)
278
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
integer function ngr2usr(iu, igr, ngr)