31 logical cload_flag,add,user,submodel,green
34 character*20 labmpc(*)
35 character*80 amplitude,amname(*)
36 character*81 set(*),noset
37 character*132 textpart(16)
39 integer istartset(*),iendset(*),ialset(*),nodeforc(2,*),
40 & nset,nforc,nforc_,istep,istat,n,i,j,k,l,iforcdir,key,
41 & iamforc(*),nam,iamplitude,ntrans,inotr(2,*),ipos,ikforc(*),
42 & ilforc(*),nk,iline,ipol,inl,ipoinp(2,*),inp(3,*),nam_,namtot,
43 & namtot_,namta(3,*),idelay,lc,nmethod,ndirforc(*),isector,
44 & iperturb,iaxial,ipoinpc(0:*),maxsectors,jsector,idefforc(*),
45 & iglobstep,ipompc(*),nodempc(3,*),nmpc,ikmpc(*),ilmpc(*)
47 real*8 xforc(*),forcval,co(3,*),trab(7,*),amta(2,*),omega0
60 write(*,*)
'*ERROR in cloads: *CLOAD should only be used' 61 write(*,*)
' within a STEP' 66 if((textpart(i)(1:6).eq.
'OP=NEW').and.(.not.cload_flag))
then 70 elseif(textpart(i)(1:10).eq.
'AMPLITUDE=')
then 71 read(textpart(i)(11:90),
'(a80)') amplitude
73 if(amname(j).eq.amplitude)
then 79 write(*,*)
'*ERROR in cloads: nonexistent amplitude' 86 elseif(textpart(i)(1:10).eq.
'TIMEDELAY=')
THEN 88 write(*,*)
'*ERROR in cloads: the parameter TIME DELAY' 89 write(*,*)
' is used twice in the same keyword' 99 write(*,*)
'*ERROR in cloads: increase nam_' 104 if(iamplitude.eq.0)
then 105 write(*,*)
'*ERROR in cloads: time delay must be' 106 write(*,*)
' preceded by the amplitude parameter' 109 namta(3,nam)=sign(iamplitude,namta(3,iamplitude))
114 namtot=namta(2,nam-1)
117 if(namtot.gt.namtot_)
then 118 write(*,*)
'*ERROR cloads: increase namtot_' 123 read(textpart(i)(11:30),
'(f20.0)',iostat=istat)
125 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
127 elseif(textpart(i)(1:9).eq.
'LOADCASE=')
then 128 read(textpart(i)(10:19),
'(i10)',iostat=istat) lc
129 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
131 if(nmethod.ne.5)
then 132 write(*,*)
'*ERROR in cloads: the parameter LOAD CASE' 133 write(*,*)
' is only allowed in STEADY STATE' 134 write(*,*)
' DYNAMICS calculations' 137 elseif(textpart(i)(1:7).eq.
'SECTOR=')
then 138 read(textpart(i)(8:17),
'(i10)',iostat=istat) isector
139 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
141 if((nmethod.le.3).or.(iperturb.gt.1))
then 142 write(*,*)
'*ERROR in cloads: the parameter SECTOR' 143 write(*,*)
' is only allowed in MODAL DYNAMICS or' 144 write(*,*)
' STEADY STATE DYNAMICS calculations' 147 if(isector.gt.maxsectors)
then 148 write(*,*)
'*ERROR in cloads: sector ',isector
149 write(*,*)
' exceeds number of sectors' 153 elseif(textpart(i)(1:4).eq.
'USER')
then 155 elseif(textpart(i)(1:8).eq.
'SUBMODEL')
then 157 elseif(textpart(i)(1:5).eq.
'STEP=')
then 158 read(textpart(i)(6:15),
'(i10)',iostat=istat) iglobstep
159 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
161 elseif(textpart(i)(1:7).eq.
'OMEGA0=')
then 163 read(textpart(i)(8:27),
'(f20.0)',iostat=istat) omega0
164 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
169 &
'*WARNING in cloads: parameter not recognized:' 171 & textpart(i)(1:index(textpart(i),
' ')-1)
179 if((submodel).and.(iglobstep.eq.0))
then 180 write(*,*)
'*ERROR reading *CLOAD: no global step' 181 write(*,*)
' step specified for the submodel' 189 if(iamplitude.ne.0)
then 190 write(*,*)
'*WARNING reading *CLOAD:' 191 write(*,*)
' no amplitude definition is allowed' 192 write(*,*)
' in combination with a submodel' 197 if(user.and.(iamplitude.ne.0))
then 198 write(*,*)
'*WARNING: no amplitude definition is allowed' 199 write(*,*)
' for concentrated loads defined by a' 200 write(*,*)
' user routine' 205 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
206 & ipoinp,inp,ipoinpc)
207 if((istat.lt.0).or.(key.eq.1))
return 209 read(textpart(2)(1:10),
'(i10)',iostat=istat) iforcdir
210 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
212 if((iforcdir.lt.1).or.(iforcdir.gt.6))
then 213 write(*,*)
'*ERROR in cloads: nonexistent degree of freedom' 226 elseif(textpart(3)(1:1).eq.
' ')
then 229 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) forcval
230 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
232 if(iaxial.eq.180) forcval=forcval/iaxial
237 if(user) forcval=1.2357111317d0
238 if(submodel) forcval=1.9232931374d0
240 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
243 write(*,*)
'*ERROR in cloads: node ',l
244 write(*,*)
' is not defined' 249 if(inotr(1,l).gt.0)
then 250 write(*,*)
'*ERROR reading *CLOAD: in submodel' 251 write(*,*)
' node',l,
' a local coordinate' 252 write(*,*)
' system was defined. This is not' 253 write(*,*)
' allowed' 259 jsector=isector+maxsectors
263 call forcadd(l,iforcdir,forcval,nodeforc,ndirforc,xforc,
264 & nforc,nforc_,iamforc,iamplitude,nam,ntrans,trab,inotr,co,
265 & ikforc,ilforc,jsector,add,user,idefforc,ipompc,nodempc,
266 & nmpc,ikmpc,ilmpc,labmpc)
268 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
270 ipos=index(noset,
' ')
273 if(set(i).eq.noset)
exit 277 write(*,*)
'*ERROR in cloads: node set ',noset
278 write(*,*)
' has not yet been defined. ' 283 do j=istartset(i),iendset(i)
284 if(ialset(j).gt.0)
then 288 if(inotr(1,k).gt.0)
then 290 &
'*ERROR reading *CLOAD: in submodel' 291 write(*,*)
' node',k,
292 &
' a local coordinate' 294 &
' system was defined. This is not' 295 write(*,*)
' allowed' 301 jsector=isector+maxsectors
305 call forcadd(k,iforcdir,forcval,
306 & nodeforc,ndirforc,xforc,nforc,nforc_,iamforc,
307 & iamplitude,nam,ntrans,trab,inotr,co,ikforc,ilforc,
308 & jsector,add,user,idefforc,ipompc,nodempc,
309 & nmpc,ikmpc,ilmpc,labmpc)
314 if(k.ge.ialset(j-1))
exit 317 if(inotr(1,k).gt.0)
then 319 &
'*ERROR reading *CLOAD: in submodel' 320 write(*,*)
' node',k,
321 &
' a local coordinate' 323 &
' system was defined. This is not' 324 write(*,*)
' allowed' 330 jsector=isector+maxsectors
334 call forcadd(k,iforcdir,forcval,
335 & nodeforc,ndirforc,xforc,nforc,nforc_,
336 & iamforc,iamplitude,nam,ntrans,trab,inotr,co,
337 & ikforc,ilforc,jsector,add,user,idefforc,
338 & ipompc,nodempc,nmpc,ikmpc,ilmpc,labmpc)
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine forcadd(node, i, val, nodeforc, ndirforc, xforc, nforc, nforc_, iamforc, iamplitude, nam, ntrans, trab, inotr, co, ikforc, ilforc, isector, add, user, idefforc, ipompc, nodempc, nmpc, ikmpc, ilmpc, labmpc)
Definition: forcadd.f:23