31 logical dload_flag,submodel,edgeload,surface
35 character*20 sideload(*),label
36 character*80 amname(*),amplitude
37 character*81 set(*),elset,cbody(*)
38 character*132 textpart(16)
40 integer istartset(*),iendset(*),ialset(*),nelemload(2,*),mi(*),
41 & ielmat(mi(3),*),nset,nload,nload_,istep,istat,n,i,j,l,key,
42 & iamload(2,*),nam,iamplitude,ipos,ne,iline,ipol,iperturb,
43 & inl,ipoinp(2,*),inp(3,*),ibody(3,*),nbody,nbody_,nam_,namtot,
44 & namtot_,namta(3,*),idelay,nmethod,lc,isector,node,ipoinpc(0:*),
45 & maxsectors,jsector,iglobstep,idefload(*),idefbody(*),ipkon(*),
48 real*8 xload(2,*),xbody(7,*),xmagnitude,dd,p1(3),p2(3),bodyf(3),
49 & xbodyold(7,*),physcon(*),amta(2,*),xxmagnitude,thicke(mi(3),*),
62 write(*,*)
'*ERROR reading *DLOAD: *DLOAD should only be used' 63 write(*,*)
' within a STEP' 68 if((textpart(i)(1:6).eq.
'OP=NEW').and.(.not.dload_flag))
then 70 if(sideload(j)(1:1).eq.
'P')
then 77 elseif(textpart(i)(1:10).eq.
'AMPLITUDE=')
then 78 read(textpart(i)(11:90),
'(a80)') amplitude
80 if(amname(j).eq.amplitude)
then 86 write(*,*)
'*ERROR reading *DLOAD: nonexistent amplitude' 93 elseif(textpart(i)(1:10).eq.
'TIMEDELAY=')
THEN 96 &
'*ERROR reading *DLOAD: the parameter TIME DELAY' 97 write(*,*)
' is used twice in the same keyword' 107 write(*,*)
'*ERROR reading *DLOAD: increase nam_' 112 if(iamplitude.eq.0)
then 113 write(*,*)
'*ERROR reading *DLOAD: time delay must be' 114 write(*,*)
' preceded by the amplitude parameter' 117 namta(3,nam)=sign(iamplitude,namta(3,iamplitude))
122 namtot=namta(2,nam-1)
125 if(namtot.gt.namtot_)
then 126 write(*,*)
'*ERROR dloads: increase namtot_' 131 read(textpart(i)(11:30),
'(f20.0)',iostat=istat)
133 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
135 elseif(textpart(i)(1:9).eq.
'LOADCASE=')
then 136 read(textpart(i)(10:19),
'(i10)',iostat=istat) lc
137 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
139 if(nmethod.ne.5)
then 141 &
'*ERROR reading *DLOAD: the parameter LOAD CASE' 142 write(*,*)
' is only allowed in STEADY STATE' 143 write(*,*)
' DYNAMICS calculations' 146 elseif(textpart(i)(1:7).eq.
'SECTOR=')
then 147 read(textpart(i)(8:17),
'(i10)',iostat=istat) isector
148 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
150 if((nmethod.le.3).or.(iperturb.gt.1))
then 151 write(*,*)
'*ERROR reading *DLOAD: the parameter SECTOR' 152 write(*,*)
' is only allowed in MODAL DYNAMICS or' 153 write(*,*)
' STEADY STATE DYNAMICS calculations' 156 if(isector.gt.maxsectors)
then 157 write(*,*)
'*ERROR reading *DLOAD: sector ',isector
158 write(*,*)
' exceeds number of sectors' 162 elseif(textpart(i)(1:8).eq.
'SUBMODEL')
then 164 elseif(textpart(i)(1:5).eq.
'STEP=')
then 165 read(textpart(i)(6:15),
'(i10)',iostat=istat) iglobstep
166 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
170 &
'*WARNING reading *DLOAD: parameter not recognized:' 172 & textpart(i)(1:index(textpart(i),
' ')-1)
181 if(iamplitude.ne.0)
then 182 write(*,*)
'*WARNING reading *DSLOAD:' 183 write(*,*)
' no amplitude definition is allowed' 184 write(*,*)
' in combination with a submodel' 190 if((submodel).and.(iglobstep.eq.0))
then 191 write(*,*)
'*ERROR reading *DLOAD: no global step' 192 write(*,*)
' step specified for the submodel' 198 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
199 & ipoinp,inp,ipoinpc)
200 if((istat.lt.0).or.(key.eq.1))
return 202 read(textpart(2)(1:20),
'(a20)',iostat=istat) label
212 if(label(3:4).ne.
'NP')
then 213 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) xmagnitude
215 read(textpart(3)(1:10),
'(i10)',iostat=istat) node
217 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
219 if(label(1:7).eq.
'CENTRIF')
then 221 read(textpart(i+3)(1:20),
'(f20.0)',iostat=istat) p1(i)
222 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
226 read(textpart(i+6)(1:20),
'(f20.0)',iostat=istat) p2(i)
227 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
230 dd=dsqrt(p2(1)**2+p2(2)**2+p2(3)**2)
234 elseif(label(1:4).eq.
'GRAV')
then 236 read(textpart(i+3)(1:20),
'(f20.0)',iostat=istat) bodyf(i)
237 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
240 elseif(label(1:6).eq.
'NEWTON')
then 241 if(iperturb.le.1)
then 242 write(*,*)
'*ERROR reading *DLOAD: NEWTON gravity force' 243 write(*,*)
' can only be used in a nonlinear' 244 write(*,*)
' procedure' 247 if(physcon(3).le.0.d0)
then 248 write(*,*)
'*ERROR reading *DLOAD: NEWTON gravity force' 249 write(*,*)
' requires the definition of a' 250 write(*,*)
' positive gravity constant with' 251 write(*,*)
' a *PHYSICAL CONSTANTS card' 254 elseif(((label(1:2).ne.
'P1').and.(label(1:2).ne.
'P2').and.
255 & (label(1:2).ne.
'P3').and.(label(1:2).ne.
'P4').and.
256 & (label(1:2).ne.
'P5').and.(label(1:2).ne.
'P6').and.
257 & (label(1:2).ne.
'P ').and.(label(1:2).ne.
'BX').and.
258 & (label(1:2).ne.
'BY').and.(label(1:2).ne.
'BZ').and.
260 & (label(1:2).ne.
'ED')).or.
261 & ((label(3:6).ne.
'NOR1').and.(label(3:6).ne.
'NOR2').and.
262 & (label(3:6).ne.
'NOR3').and.(label(3:6).ne.
'NOR4')).and.
264 & ((label(3:4).ne.
' ').and.(label(3:4).ne.
'NU').and.
265 & (label(3:4).ne.
'NP').and.(label(3:4).ne.
'SM')))
then 270 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
273 write(*,*)
'*ERROR reading *DLOAD: element ',l
274 write(*,*)
' is not defined' 277 if((label(1:7).eq.
'CENTRIF').or.(label(1:4).eq.
'GRAV').or.
278 & (label(1:6).eq.
'NEWTON'))
then 279 elset(1:80)=textpart(1)(1:80)
281 call bodyadd(cbody,ibody,xbody,nbody,nbody_,elset,label,
282 & iamplitude,xmagnitude,p1,p2,bodyf,xbodyold,lc,idefbody)
284 xxmagnitude=xmagnitude
285 if((lakon(l)(1:2).eq.
'CP').or.
286 & (lakon(l)(2:2).eq.
'A').or.
287 & (lakon(l)(7:7).eq.
'E').or.
288 & (lakon(l)(7:7).eq.
'S').or.
289 & (lakon(l)(7:7).eq.
'A'))
then 290 if(label(1:2).eq.
'P1')
then 292 elseif(label(1:2).eq.
'P2')
then 294 elseif(label(1:2).eq.
'P3')
then 296 elseif(label(1:2).eq.
'P4')
then 299 elseif((lakon(l)(1:1).eq.
'B').or.
300 & (lakon(l)(7:7).eq.
'B'))
then 301 if(label(1:2).eq.
'P2') label(1:2)=
'P5' 302 elseif((lakon(l)(1:1).eq.
'S').or.
303 & (lakon(l)(7:7).eq.
'L'))
then 305 if(label(1:6).eq.
'EDNOR1')
then 308 elseif(label(1:6).eq.
'EDNOR2')
then 311 elseif(label(1:6).eq.
'EDNOR3')
then 314 elseif(label(1:6).eq.
'EDNOR4')
then 327 if(ielmat(k,l).ne.0)
then 338 jsector=isector+maxsectors
342 if(label(3:4).ne.
'NP')
then 343 call loadadd(l,label,xxmagnitude,nelemload,sideload,
344 & xload,nload,nload_,iamload,iamplitude,
345 & nam,jsector,idefload)
347 call loadaddp(l,label,nelemload,sideload,
348 & xload,nload,nload_,iamload,iamplitude,
353 read(textpart(1)(1:80),
'(a80)',iostat=istat) elset
355 ipos=index(elset,
' ')
361 if(set(i).eq.elset)
exit 370 if(set(i).eq.elset)
exit 374 write(*,*)
'*ERROR reading *DLOAD: element set ' 375 write(*,*)
' or facial surface ',elset
376 write(*,*)
' has not yet been defined. ' 383 if((label(1:7).eq.
'CENTRIF').or.(label(1:4).eq.
'GRAV').or.
384 & (label(1:6).eq.
'NEWTON'))
then 385 call bodyadd(cbody,ibody,xbody,nbody,nbody_,elset,label,
386 & iamplitude,xmagnitude,p1,p2,bodyf,xbodyold,lc,idefbody)
388 l=ialset(istartset(i))
390 write(label(2:2),
'(i1)') l-10*(l/10)
393 if((lakon(l)(1:2).eq.
'CP').or.
394 & (lakon(l)(2:2).eq.
'A').or.
395 & (lakon(l)(7:7).eq.
'E').or.
396 & (lakon(l)(7:7).eq.
'S').or.
397 & (lakon(l)(7:7).eq.
'A'))
then 398 if(label(1:2).eq.
'P1')
then 400 elseif(label(1:2).eq.
'P2')
then 402 elseif(label(1:2).eq.
'P3')
then 404 elseif(label(1:2).eq.
'P4')
then 407 elseif((lakon(l)(1:1).eq.
'B').or.
408 & (lakon(l)(7:7).eq.
'B'))
then 409 if(label(1:2).eq.
'P2') label(1:2)=
'P5' 410 elseif((lakon(l)(1:1).eq.
'S').or.
411 & (lakon(l)(7:7).eq.
'L'))
then 413 if(label(1:6).eq.
'EDNOR1')
then 416 elseif(label(1:6).eq.
'EDNOR2')
then 419 elseif(label(1:6).eq.
'EDNOR3')
then 422 elseif(label(1:6).eq.
'EDNOR4')
then 431 do j=istartset(i),iendset(i)
432 if(ialset(j).gt.0)
then 435 write(label(2:2),
'(i1)') l-10*(l/10)
438 xxmagnitude=xmagnitude
446 if(ielmat(k,l).ne.0)
then 456 jsector=isector+maxsectors
460 if(label(3:4).ne.
'NP')
then 461 call loadadd(l,label,xxmagnitude,nelemload,
462 & sideload,xload,nload,nload_,iamload,
463 & iamplitude,nam,jsector,idefload)
466 & sideload,xload,nload,nload_,iamload,
467 & iamplitude,nam,node)
473 if(l.ge.ialset(j-1))
exit 474 xxmagnitude=xmagnitude
482 if(ielmat(k,l).ne.0)
then 492 jsector=isector+maxsectors
496 if(label(3:4).ne.
'NP')
then 497 call loadadd(l,label,xxmagnitude,nelemload,
498 & sideload,xload,nload,nload_,
499 & iamload,iamplitude,nam,jsector,idefload)
502 & sideload,xload,nload,nload_,
503 & iamload,iamplitude,nam,node)
subroutine loadadd(nelement, label, value, nelemload, sideload, xload, nload, nload_, iamload, iamplitude, nam, isector, idefload)
Definition: loadadd.f:21
subroutine bodyadd(cbody, ibody, xbody, nbody, nbody_, set, label, iamplitude, xmagnitude, p1, p2, bodyf, xbodyold, lc, idefbody)
Definition: bodyadd.f:21
subroutine loadaddp(nelement, label, nelemload, sideload, xload, nload, nload_, iamload, iamplitude, nam, node)
Definition: loadaddp.f:21
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine thickness(dgdx, nobject, nodedesiboun, ndesiboun, objectset, xo, yo, zo, x, y, z, nx, ny, nz, co, ifree, ndesia, ndesib, iobject, ndesi, dgdxglob, nk)
Definition: thickness.f:22