31 logical boun_flag,user,massflowrate,fixed,submodel
33 character*1 typeboun(*),
type,inpc(*)
34 character*20 labmpc(*),label
35 character*80 amname(*),amplitude
36 character*81 set(*),noset
37 character*132 textpart(16)
39 integer istartset(*),iendset(*),ialset(*),nodeboun(*),
41 & nset,nboun,nboun_,istat,n,i,j,k,l,ibounstart,ibounend,
42 & key,nk,iamboun(*),nam,iamplitude,ipompc(*),nodempc(3,*),
43 & nmpc,nmpc_,mpcfree,inotr(2,*),ikboun(*),ilboun(*),ikmpc(*),
44 & ilmpc(*),nmpcold,id,idof,index1,ntrans,nk_,ipos,m,node,is,ie,
45 & iline,ipol,inl,ipoinp(2,*),inp(3,*),nam_,namtot,namtot_,
46 & namta(3,*),idelay,nmethod,iperturb,lc,iaxial,ipoinpc(0:*),
47 & ktrue,mi(*),iglobstep
49 real*8 xboun(*),bounval,coefmpc(*),trab(7,*),co(3,*),amta(2,*),
64 if((textpart(i)(1:6).eq.
'OP=NEW').and.(.not.boun_flag))
then 78 if(inotr(2,j).gt.0)
then 80 idof=8*(inotr(2,j)-1)+k
81 call nident(ikboun,idof,nboun,id)
83 if(ikboun(id).eq.idof)
then 96 call nident(ikmpc,idof,nmpc,id)
98 if(ikmpc(id).eq.idof)
then 99 index1=ipompc(ilmpc(id))
100 if(index1.eq.0) cycle
102 if((nodempc(1,index1).eq.
104 & (nodempc(2,index1).eq.k))
106 nodempc(3,index1)=mpcfree
107 mpcfree=ipompc(ilmpc(id))
118 index1=nodempc(3,index1)
135 if(ipompc(j).ne.0)
then 140 idof=8*(nodempc(1,index1)-1)+nodempc(2,index1)
141 call nident(ikmpc,idof,nmpc,id)
143 write(*,*)
'*ERROR reading *BOUNDARY' 145 elseif(ikmpc(id).ne.idof)
then 146 write(*,*)
'*ERROR reading *BOUNDARY' 160 if(typeboun(j).eq.
'B')
then 164 call bounrem(node,is,j,nodeboun,ndirboun,xboun,
165 & nboun,iamboun,nam,ikboun,ilboun,typeboun)
173 elseif(textpart(i)(1:10).eq.
'AMPLITUDE=')
then 174 read(textpart(i)(11:90),
'(a80)') amplitude
176 if(amname(j).eq.amplitude)
then 183 &
'*ERROR reading *BOUNDARY: nonexistent amplitude' 190 elseif(textpart(i)(1:10).eq.
'TIMEDELAY=')
THEN 192 write(*,*)
'*ERROR reading *BOUNDARY: the parameter TIME' 193 write(*,*)
' DELAY is used twice in the same' 194 write(*,*)
' keyword; ' 203 write(*,*)
'*ERROR reading *BOUNDARY: increase nam_' 208 if(iamplitude.eq.0)
then 209 write(*,*)
'*ERROR reading *BOUNDARY: time delay must be' 210 write(*,*)
' preceded by the amplitude parameter' 213 namta(3,nam)=sign(iamplitude,namta(3,iamplitude))
218 namtot=namta(2,nam-1)
221 if(namtot.gt.namtot_)
then 222 write(*,*)
'*ERROR boundaries: increase namtot_' 227 read(textpart(i)(11:30),
'(f20.0)',iostat=istat)
229 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
231 elseif(textpart(i)(1:9).eq.
'LOADCASE=')
then 232 read(textpart(i)(10:19),
'(i10)',iostat=istat) lc
233 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
235 if(nmethod.ne.5)
then 236 write(*,*)
'*ERROR reading *BOUNDARY: the parameter LOAD' 237 write(*,*)
' CASE is only allowed in STEADY STATE' 238 write(*,*)
' DYNAMICS calculations' 241 elseif(textpart(i)(1:4).eq.
'USER')
then 243 elseif(textpart(i)(1:8).eq.
'MASSFLOW')
then 245 elseif(textpart(i)(1:5).eq.
'FIXED')
then 247 elseif(textpart(i)(1:8).eq.
'SUBMODEL')
then 249 elseif(textpart(i)(1:5).eq.
'STEP=')
then 250 read(textpart(i)(6:15),
'(i10)',iostat=istat) iglobstep
251 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
255 &
'*WARNING reading *BOUNDARY: parameter not recognized:' 257 & textpart(i)(1:index(textpart(i),
' ')-1)
265 if((submodel).and.(iglobstep.eq.0))
then 266 write(*,*)
'*ERROR reading *BOUNDARY: no global step' 267 write(*,*)
' step specified for the submodel' 275 if(iamplitude.ne.0)
then 276 write(*,*)
'*WARNING reading *BOUNDARY:' 277 write(*,*)
' no amplitude definition is allowed' 278 write(*,*)
' in combination with a submodel' 283 if(user.and.(iamplitude.ne.0))
then 284 write(*,*)
'*WARNING reading *BOUNDARY: ' 285 write(*,*)
' no amplitude definition is allowed' 286 write(*,*)
' for boundary conditions defined by a' 287 write(*,*)
' user routine' 292 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
293 & ipoinp,inp,ipoinpc)
294 if((istat.lt.0).or.(key.eq.1))
return 296 read(textpart(2)(1:10),
'(i10)',iostat=istat) ibounstart
297 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
300 if(textpart(3)(1:1).eq.
' ')
then 303 read(textpart(3)(1:10),
'(i10)',iostat=istat) ibounend
304 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
308 if(textpart(4)(1:1).eq.
' ')
then 311 read(textpart(4)(1:20),
'(f20.0)',iostat=istat) bounval
312 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
315 if((massflowrate).and.(iaxial.eq.180)) bounval=bounval/iaxial
319 if(user) bounval=1.2357111317d0
320 if(submodel) bounval=1.9232931374d0
322 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
324 if((l.gt.nk).or.(l.le.0))
then 325 write(*,*)
'*ERROR reading *BOUNDARY:' 326 write(*,*)
' node ',l,
' is not defined' 331 if(inotr(1,l).gt.0)
then 332 write(*,*)
'*ERROR reading *BOUNDARY: in submodel' 333 write(*,*)
' node',l,
' a local coordinate' 334 write(*,*)
' system was defined. This is not' 335 write(*,*)
' allowed' 342 call bounadd(l,ibounstart,ibounend,bounval,
343 & nodeboun,ndirboun,xboun,nboun,nboun_,
344 & iamboun,iamplitude,nam,ipompc,nodempc,
345 & coefmpc,nmpc,nmpc_,mpcfree,inotr,trab,
346 & ntrans,ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,labmpc,
347 &
type,typeboun,nmethod,iperturb,fixed,vold,ktrue,
350 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
352 ipos=index(noset,
' ')
355 if(set(i).eq.noset)
exit 359 write(*,*)
'*ERROR reading *BOUNDARY: node set ',noset
360 write(*,*)
' has not yet been defined. ' 365 do j=istartset(i),iendset(i)
366 if(ialset(j).gt.0)
then 370 if(inotr(1,k).gt.0)
then 372 &
'*ERROR reading *BOUNDARY: in submodel' 373 write(*,*)
' node',k,
374 &
' a local coordinate' 376 &
' system was defined. This is not' 377 write(*,*)
' allowed' 384 call bounadd(k,ibounstart,ibounend,bounval,
385 & nodeboun,ndirboun,xboun,nboun,nboun_,
386 & iamboun,iamplitude,nam,ipompc,nodempc,
387 & coefmpc,nmpc,nmpc_,mpcfree,inotr,trab,
388 & ntrans,ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,labmpc,
389 &
type,typeboun,nmethod,iperturb,fixed,vold,ktrue,
395 if(k.ge.ialset(j-1))
exit 398 if(inotr(1,k).gt.0)
then 400 &
'*ERROR reading *BOUNDARY: in submodel' 401 write(*,*)
' node',k,
402 &
' a local coordinate' 404 &
' system was defined. This is not' 405 write(*,*)
' allowed' 412 call bounadd(k,ibounstart,ibounend,bounval,
413 & nodeboun,ndirboun,xboun,nboun,nboun_,
414 & iamboun,iamplitude,nam,ipompc,nodempc,
415 & coefmpc,nmpc,nmpc_,mpcfree,inotr,trab,
416 & ntrans,ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,
417 & labmpc,
type,typeboun,nmethod,iperturb,fixed,
418 & vold,ktrue,mi,label)
subroutine bounrem(node, is, iboun, nodeboun, ndirboun, xboun, nboun, iamboun, nam, ikboun, ilboun, typeboun)
Definition: bounrem.f:21
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine bounadd(node, is, ie, val, nodeboun, ndirboun, xboun, nboun, nboun_, iamboun, iamplitude, nam, ipompc, nodempc, coefmpc, nmpc, nmpc_, mpcfree, inotr, trab, ntrans, ikboun, ilboun, ikmpc, ilmpc, co, nk, nk_, labmpc, type, typeboun, nmethod, iperturb, fixed, vold, nodetrue, mi, label)
Definition: bounadd.f:24