40
41
42
43
44
50
51
52
53#include "implicit_f.inc"
54
55
56
57
58
59
60 INTEGER NOINT
61 INTEGER IPARI(*),NPC(*)
64 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
65 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
66 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
67
68 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
69 TYPE (SURF_) ,TARGET , DIMENSION(NSURF) :: IGRSURF
70
71
72
73#include "com04_c.inc"
74#include "units_c.inc"
75
76
77
78 CHARACTER(LEN=NCHARTITLE) :: TITR1
79 INTEGER ISU1,ISU2, NTYP,IS1, IS2,NLO,NFRIC,NDAMP1,NDAMP2,NCURS,ISU20,INTKG
80 my_real fric,gap,startt,stopt,visc
81 INTEGER, DIMENSION(:), POINTER :: INGR2USR
82 LOGICAL IS_AVAILABLE
83
84
85
86 INTEGER NGR2USR
87
88
89
90
91
92
93 is1=0
94 is2=0
95 nlo = 0
96 nfric = 0
97 ndamp1 = 0
98 ndamp2 = 0
99 intkg=0
100
101 fric = zero
102 gap = zero
103 startt = zero
104 stopt=ep30
105 visc = zero
106
107 ntyp = 14
108 ipari(15)=noint
109 ipari(7)=ntyp
110
111 is_available = .false.
112
113
114
115 CALL hm_get_intv(
'secondaryentityids',isu1,is_available,lsubmodel)
116 CALL hm_get_intv(
'mainentityids',isu2,is_available,lsubmodel)
117 CALL hm_get_intv(
'Iload',nlo,is_available,lsubmodel)
118 CALL hm_get_intv(
'IFRIC',nfric,is_available,lsubmodel)
119 CALL hm_get_intv(
'FUN_A1',ndamp1,is_available,lsubmodel)
120 CALL hm_get_intv(
'FUN_A2',ndamp2,is_available,lsubmodel)
121
122
123
124 CALL hm_get_floatv(
'STIFF1',stfac,is_available,lsubmodel,unitab)
125 CALL hm_get_floatv(
'FRIC',fric,is_available,lsubmodel,unitab)
126 CALL hm_get_floatv(
'VISC',visc,is_available,lsubmodel,unitab)
128
129
130
131 is1=2
132 is2=4
133 ingr2usr => igrnod(1:ngrnod)%ID
134 IF(isu1/=0)isu1=
ngr2usr(isu1,ingr2usr,ngrnod)
135 isu20=isu2
136 ingr2usr => igrsurf(1:nsurf)%ID
137 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
138 IF ( igrsurf(isu2)%TYPE/=100
139 . .AND.igrsurf(isu2)%TYPE/=101) THEN
140 titr1 = igrsurf(isu20)%TITLE
142 . msgtype=msgerror,
143 . anmode=aninfo,
144 . i1=noint,
145 . c1=titr,
146 . i2=isu20,
147 . c2=titr1)
148 END IF
149
150
151 IF (nlo==0) GOTO 11
152 DO ncurs=1,nfunct
153 IF (nlo==npc(nfunct+1+ncurs)) THEN
154 ipari(8)=ncurs
155 GOTO 11
156 ENDIF
157 ENDDO
159 . msgtype=msgerror,
160 . anmode=aninfo,
161 . i1=noint,
162 . c1=titr,
163 . i2=nlo)
164 11 CONTINUE
165 IF (nfric==0) GOTO 12
166 DO ncurs=1,nfunct
167 IF (nfric==npc(nfunct+1+ncurs)) THEN
168 ipari(9)=ncurs
169 GOTO 12
170 ENDIF
171 ENDDO
173 . msgtype=msgerror,
174 . anmode=aninfo,
175 . i1=noint,
176 . c1=titr,
177 . i2=nfric)
178 12 CONTINUE
179 IF (ndamp1==0) GOTO 13
180 DO ncurs=1,nfunct
181 IF (ndamp1==npc(nfunct+1+ncurs)) THEN
182 ipari(10)=ncurs
183 GOTO 13
184 ENDIF
185 ENDDO
187 . msgtype=msgerror,
188 . anmode=aninfo,
189 . i1=noint,
190 . c1=titr,
191 . i2=ndamp1)
192 13 CONTINUE
193 IF (ndamp2==0) GOTO 14
194 DO ncurs=1,nfunct
195 IF (ndamp2==npc(nfunct+1+ncurs)) THEN
196 ipari(11)=ncurs
197 GOTO 14
198 ENDIF
199 ENDDO
201 . msgtype=msgerror,
202 . anmode=aninfo,
203 . i1=noint,
204 . c1=titr,
205 . i2=ndamp2)
206 14 CONTINUE
207
208
209 ipari(45)=isu1
210 ipari(46)=isu2
211 ipari(13)=is1*10+is2
212
213 startt=zero
214 stopt =ep30
215
216
217 frigap(1)=fric
218 frigap(2)=gap
219 frigap(3)=startt
220 frigap(11)=stopt
221 frigap(14)=visc
222
223
224
225
226 ipari(65) = intkg
227
228
229
230
231 WRITE(iout,1514)
232 . stfac,nlo,fric,nfric,visc,ndamp1,ndamp2,gap,
233 . startt,stopt
234
235
236 IF(is1==0)THEN
237 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
238 ELSEIF(is1==1)THEN
239 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
240 ELSEIF(is1==2)THEN
241 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
242 ELSEIF(is1==3)THEN
243 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
244 ELSEIF(is1==4 )THEN
245 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
246 ELSEIF(is1==5 )THEN
247 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
248 ENDIF
249 IF(is2==0)THEN
250 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
251 ELSEIF(is2==1)THEN
252 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
253 ELSEIF(is2==2)THEN
254 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
255 ELSEIF(is2==3)THEN
256 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
257 ELSEIF(is2==4)THEN
258 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
259 . 'TO HYPER-ELLIPSOIDAL SURFACE'
260 ENDIF
261
262
263
264 RETURN
265
266
267 1514 FORMAT(//
268 . ' TYPE==14 NODE to SURFACE ' //,
269 . ' INTERFACE STIFFNESS . . . . . . . . . . . . ',1pg20.13/,
270 . ' FUNCTION FOR ELASTIC CONTACT . . . . . . . ',i10/,
271 . ' FRICTION COEFFICIENT . . . . . . . . . . . ',1pg20.13/,
272 . ' FUNCTION FOR FRICTION . . . . . . . . . . . ',i10/,
273 . ' NORMAL DAMPING FACTOR . . . . . . . . . . . ',1pg20.13/,
274 . ' FUNCTION FOR DAMPING VERSUS VELOCITY . . . ',i10/,
275 . ' FUNCTION FOR DAMPING VERSUS ELASTIC FORCE . ',i10/,
276 . ' MINIMUM GAP . . . . . . . . . . . . . . . . ',1pg20.13/,
277 . ' START TIME. . . . . . . . . . . . . . . . . ',1pg20.13/,
278 . ' STOP TIME . . . . . . . . . . . . . . . . . ',1pg20.13/)
279
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
integer, parameter nchartitle
integer function ngr2usr(iu, igr, ngr)
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)