34 character*81 set(*),noset
35 character*132 textpart(16)
37 integer istartset(*),iendset(*),ialset(*),nset,iprestr,ithermal,
38 & istep,istat,n,i,j,k,l,ii,key,idir,ipos,inoelfree,nk_,mi(*),
39 & iline,ipol,inl,ipoinp(2,*),inp(3,*),ij,jj,ntens,ncrds,layer,
40 & kspt,lrebar,iflag,i1,mint3d,nope,kon(*),konl(20),indexe,
41 & ipkon(*),ne,ipoinpc(0:*),nstate_,nk,jmax,ntot,numberoflines,
42 & iaxial,null,ielprop(*)
44 real*8 t0(*),t1(*),beta(8),prestr(6,mi(1),*),veold(0:mi(2),*),
45 & temperature,velocity,tempgrad1,tempgrad2,pgauss(3),
46 & shp(4,20),xsj,xl(3,20),xi,et,ze,weight,co(3,*),pressure,
47 & vold(0:mi(2),*),xstate(nstate_,mi(1),*),dispvelo,totpres,
48 & xmassflow,t0g(2,*),t1g(2,*),prop(*)
56 &
'*ERROR reading *INITIAL CONDITIONS: *INITIAL CONDITIONS' 57 write(*,*)
' should be placed before all step definitions' 62 if(textpart(ij)(1:16).eq.
'TYPE=TEMPERATURE')
then 66 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
68 if((istat.lt.0).or.(key.eq.1))
return 69 read(textpart(2)(1:20),
'(f20.0)',iostat=istat)
71 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
72 &
"*INITIAL CONDITIONS%")
73 temperature=1.d-6*int(1.d6*temperature+0.5d0)
75 if(inoelfree.ne.0)
then 79 read(textpart(3)(1:20),
'(f20.0)',iostat=istat)
81 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
82 &
"*INITIAL CONDITIONS%")
85 read(textpart(4)(1:20),
'(f20.0)',iostat=istat)
87 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
88 &
"*INITIAL CONDITIONS%")
92 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
96 &
'*WARNING reading *INITIAL CONDITIONS: node ',l
97 write(*,*)
' exceeds the largest defined ',
103 vold(0,l)=temperature
104 if(inoelfree.ne.0)
then 111 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
113 ipos=index(noset,
' ')
116 if(set(ii).eq.noset)
exit 121 &
'*ERROR reading *INITIAL CONDITIONS: node set ' 123 write(*,*)
' has not yet been defined. ' 125 &
"*INITIAL CONDITIONS%")
128 do j=istartset(ii),iendset(ii)
129 if(ialset(j).gt.0)
then 130 t0(ialset(j))=temperature
131 t1(ialset(j))=temperature
132 vold(0,ialset(j))=temperature
133 if(inoelfree.ne.0)
then 134 t0g(1,ialset(j))=tempgrad1
135 t0g(2,ialset(j))=tempgrad2
136 t1g(1,ialset(j))=tempgrad1
137 t1g(2,ialset(j))=tempgrad2
143 if(k.ge.ialset(j-1))
exit 146 vold(0,k)=temperature
147 if(inoelfree.ne.0)
then 159 elseif(textpart(ij)(1:11).eq.
'TYPE=STRESS')
then 163 if(textpart(jj)(1:4).eq.
'USER')
then 174 if(lakon(i)(4:4).eq.
'2')
then 176 elseif(lakon(i)(4:4).eq.
'8')
then 178 elseif(lakon(i)(4:5).eq.
'10')
then 180 elseif(lakon(i)(4:4).eq.
'4')
then 182 elseif(lakon(i)(4:5).eq.
'15')
then 184 elseif(lakon(i)(4:4).eq.
'6')
then 190 if(lakon(i)(4:5).eq.
'8R')
then 192 elseif(lakon(i)(4:7).eq.
'20RB')
then 193 if((lakon(i)(8:8).eq.
'R').or.
194 & (lakon(i)(8:8).eq.
'C'))
then 199 & null,xi,et,ze,weight)
201 elseif((lakon(i)(4:4).eq.
'8').or.
202 & (lakon(i)(4:6).eq.
'20R'))
then 204 elseif(lakon(i)(4:4).eq.
'2')
then 206 elseif(lakon(i)(4:5).eq.
'10')
then 208 elseif(lakon(i)(4:4).eq.
'4')
then 210 elseif(lakon(i)(4:5).eq.
'15')
then 212 elseif(lakon(i)(4:4).eq.
'6')
then 217 konl(j)=kon(indexe+j)
219 xl(k,j)=co(k,konl(j))
224 if(lakon(i)(4:5).eq.
'8R')
then 229 elseif(lakon(i)(4:7).eq.
'20RB')
then 230 if((lakon(i)(8:8).eq.
'R').or.
231 & (lakon(i)(8:8).eq.
'C'))
then 241 elseif((lakon(i)(4:4).eq.
'8').or.
242 & (lakon(i)(4:6).eq.
'20R'))
248 elseif(lakon(i)(4:4).eq.
'2')
then 253 elseif(lakon(i)(4:5).eq.
'10')
then 258 elseif(lakon(i)(4:4).eq.
'4')
then 263 elseif(lakon(i)(4:5).eq.
'15')
then 268 elseif(lakon(i)(4:4).eq.
'6')
then 276 call shape20h(xi,et,ze,xl,xsj,shp,iflag)
277 elseif(nope.eq.8)
then 278 call shape8h(xi,et,ze,xl,xsj,shp,iflag)
279 elseif(nope.eq.10)
then 281 elseif(nope.eq.4)
then 282 call shape4tet(xi,et,ze,xl,xsj,shp,iflag)
283 elseif(nope.eq.15)
then 284 call shape15w(xi,et,ze,xl,xsj,shp,iflag)
286 call shape6w(xi,et,ze,xl,xsj,shp,iflag)
293 & shp(4,i1)*co(k,konl(i1))
297 call sigini(prestr(1,j,i),pgauss,ntens,ncrds,
298 & i,j,layer,kspt,lrebar,rebarn)
302 call getnewline(inpc,textpart,istat,n,key,iline,ipol,
303 & inl,ipoinp,inp,ipoinpc)
311 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
312 & ipoinp,inp,ipoinpc)
313 if((istat.lt.0).or.(key.eq.1))
return 315 read(textpart(j+2)(1:20),
'(f20.0)',iostat=istat)
317 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
318 &
"*INITIAL CONDITIONS%")
320 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
321 if(istat.ne.0)
call inputerror(inpc,ipoinpc,iline,
322 &
"*INITIAL CONDITIONS%")
325 &
'*WARNING reading *INITIAL CONDITIONS: element ',l
326 write(*,*)
' exceeds the largest defined ',
330 read(textpart(2)(1:10),
'(i10)',iostat=istat) k
333 prestr(j,k,l)=beta(j)
337 &
"*INITIAL CONDITIONS%")
341 elseif(textpart(ij)(1:18).eq.
'TYPE=PLASTICSTRAIN')
then 345 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
346 & ipoinp,inp,ipoinpc)
347 if((istat.lt.0).or.(key.eq.1))
return 349 read(textpart(j+2)(1:20),
'(f20.0)',iostat=istat)
351 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
352 &
"*INITIAL CONDITIONS%")
354 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
355 if(istat.ne.0)
call inputerror(inpc,ipoinpc,iline,
356 &
"*INITIAL CONDITIONS%")
359 &
'*WARNING reading *INITIAL CONDITIONS: element ',l
360 write(*,*)
' exceeds the largest defined ',
364 read(textpart(2)(1:10),
'(i10)',iostat=istat) k
367 prestr(j,k,l)=beta(j)
371 &
"*INITIAL CONDITIONS%")
375 elseif((textpart(ij)(1:17).eq.
'TYPE=DISPLACEMENT').or.
376 & (textpart(ij)(1:18).eq.
'TYPE=FLUIDVELOCITY'))
then 379 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
380 & ipoinp,inp,ipoinpc)
381 if((istat.lt.0).or.(key.eq.1))
return 382 read(textpart(2)(1:10),
'(i10)',iostat=istat) idir
383 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
384 &
"*INITIAL CONDITIONS%")
385 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) dispvelo
386 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
387 &
"*INITIAL CONDITIONS%")
388 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
392 &
'*WARNING reading *INITIAL CONDITIONS: node ',l
393 write(*,*)
' exceeds the largest defined ',
397 vold(idir,l)=dispvelo
399 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
401 ipos=index(noset,
' ')
404 if(set(ii).eq.noset)
exit 409 &
'*ERROR reading *INITIAL CONDITIONS: node set ' 411 write(*,*)
' has not yet been defined. ' 413 &
"*INITIAL CONDITIONS%")
416 do j=istartset(ii),iendset(ii)
417 if(ialset(j).gt.0)
then 418 vold(idir,ialset(j))=dispvelo
423 if(k.ge.ialset(j-1))
exit 424 vold(idir,k)=dispvelo
431 elseif(textpart(ij)(1:13).eq.
'TYPE=VELOCITY')
then 434 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
435 & ipoinp,inp,ipoinpc)
436 if((istat.lt.0).or.(key.eq.1))
return 437 read(textpart(2)(1:10),
'(i10)',iostat=istat) idir
438 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
439 &
"*INITIAL CONDITIONS%")
440 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) velocity
441 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
442 &
"*INITIAL CONDITIONS%")
443 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
447 &
'*WARNING reading *INITIAL CONDITIONS: node ',l
448 write(*,*)
' exceeds the largest defined ',
452 veold(idir,l)=velocity
454 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
456 ipos=index(noset,
' ')
459 if(set(ii).eq.noset)
exit 464 &
'*ERROR reading *INITIAL CONDITIONS: node set ' 466 write(*,*)
' has not yet been defined. ' 468 &
"*INITIAL CONDITIONS%")
471 do j=istartset(ii),iendset(ii)
472 if(ialset(j).gt.0)
then 473 veold(idir,ialset(j))=velocity
478 if(k.ge.ialset(j-1))
exit 479 veold(idir,k)=velocity
486 elseif(textpart(ij)(1:13).eq.
'TYPE=PRESSURE')
then 489 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
490 & ipoinp,inp,ipoinpc)
491 if((istat.lt.0).or.(key.eq.1))
return 492 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) pressure
493 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
494 &
"*INITIAL CONDITIONS%")
495 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
499 &
'*WARNING reading *INITIAL CONDITIONS: node ',l
500 write(*,*)
' exceeds the largest defined ',
506 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
508 ipos=index(noset,
' ')
511 if(set(ii).eq.noset)
exit 516 &
'*ERROR reading *INITIAL CONDITIONS: node set ' 518 write(*,*)
' has not yet been defined. ' 520 &
"*INITIAL CONDITIONS%")
523 do j=istartset(ii),iendset(ii)
524 if(ialset(j).gt.0)
then 525 vold(4,ialset(j))=pressure
530 if(k.ge.ialset(j-1))
exit 538 elseif(textpart(ij)(1:18).eq.
'TYPE=TOTALPRESSURE')
then 541 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
542 & ipoinp,inp,ipoinpc)
543 if((istat.lt.0).or.(key.eq.1))
return 544 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) totpres
545 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
546 &
"*INITIAL CONDITIONS%")
547 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
551 &
'*WARNING reading *INITIAL CONDITIONS: node ',l
552 write(*,*)
' exceeds the largest defined ',
558 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
560 ipos=index(noset,
' ')
563 if(set(ii).eq.noset)
exit 568 &
'*ERROR reading *INITIAL CONDITIONS: node set ' 570 write(*,*)
' has not yet been defined. ' 572 &
"*INITIAL CONDITIONS%")
575 do j=istartset(ii),iendset(ii)
576 if(ialset(j).gt.0)
then 577 vold(2,ialset(j))=totpres
582 if(k.ge.ialset(j-1))
exit 590 elseif(textpart(ij)(1:13).eq.
'TYPE=MASSFLOW')
then 593 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
594 & ipoinp,inp,ipoinpc)
595 if((istat.lt.0).or.(key.eq.1))
return 596 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) xmassflow
597 if(iaxial.eq.180) xmassflow=xmassflow/iaxial
598 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
599 &
"*INITIAL CONDITIONS%")
600 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
604 &
'*WARNING reading *INITIAL CONDITIONS: node ',l
605 write(*,*)
' exceeds the largest defined ',
611 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
613 ipos=index(noset,
' ')
616 if(set(ii).eq.noset)
exit 621 &
'*ERROR reading *INITIAL CONDITIONS: node set ' 623 write(*,*)
' has not yet been defined. ' 625 &
"*INITIAL CONDITIONS%")
628 do j=istartset(ii),iendset(ii)
629 if(ialset(j).gt.0)
then 630 vold(1,ialset(j))=xmassflow
635 if(k.ge.ialset(j-1))
exit 644 elseif(textpart(ij)(1:13).eq.
'TYPE=SOLUTION')
then 647 if(textpart(j)(1:4).eq.
'USER') user=.true.
664 if(lakon(i)(4:4).eq.
'2')
then 666 elseif(lakon(i)(4:4).eq.
'8')
then 668 elseif(lakon(i)(4:5).eq.
'10')
then 670 elseif(lakon(i)(4:4).eq.
'4')
then 672 elseif(lakon(i)(4:5).eq.
'15')
then 674 elseif(lakon(i)(4:4).eq.
'6')
then 680 if(lakon(i)(4:5).eq.
'8R')
then 682 elseif((lakon(i)(4:4).eq.
'8').or.
683 & (lakon(i)(4:6).eq.
'20R'))
then 685 elseif(lakon(i)(4:4).eq.
'2')
then 687 elseif(lakon(i)(4:5).eq.
'10')
then 689 elseif(lakon(i)(4:4).eq.
'4')
then 691 elseif(lakon(i)(4:5).eq.
'15')
then 693 elseif(lakon(i)(4:4).eq.
'6')
then 698 konl(j)=kon(indexe+j)
700 xl(k,j)=co(k,konl(j))
705 if(lakon(i)(4:5).eq.
'8R')
then 710 elseif((lakon(i)(4:4).eq.
'8').or.
711 & (lakon(i)(4:6).eq.
'20R'))
717 elseif(lakon(i)(4:4).eq.
'2')
then 722 elseif(lakon(i)(4:5).eq.
'10')
then 727 elseif(lakon(i)(4:4).eq.
'4')
then 732 elseif(lakon(i)(4:5).eq.
'15')
then 737 elseif(lakon(i)(4:4).eq.
'6')
then 745 call shape20h(xi,et,ze,xl,xsj,shp,iflag)
746 elseif(nope.eq.8)
then 747 call shape8h(xi,et,ze,xl,xsj,shp,iflag)
748 elseif(nope.eq.10)
then 750 elseif(nope.eq.4)
then 751 call shape4tet(xi,et,ze,xl,xsj,shp,iflag)
752 elseif(nope.eq.15)
then 753 call shape15w(xi,et,ze,xl,xsj,shp,iflag)
755 call shape6w(xi,et,ze,xl,xsj,shp,iflag)
762 & shp(4,i1)*co(k,konl(i1))
766 call sdvini(xstate(1,j,i),pgauss,nstate_,ncrds,
771 call getnewline(inpc,textpart,istat,n,key,iline,ipol,
772 & inl,ipoinp,inp,ipoinpc)
779 call getnewline(inpc,textpart,istat,n,key,iline,ipol,
780 & inl,ipoinp,inp,ipoinpc)
781 if((istat.lt.0).or.(key.eq.1))
return 783 if(nstate_.lt.6)
then 790 read(textpart(j+2)(1:20),
'(f20.0)',iostat=istat)
792 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
793 &
"*INITIAL CONDITIONS%")
795 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
796 if(istat.ne.0)
call inputerror(inpc,ipoinpc,iline,
797 &
"*INITIAL CONDITIONS%")
800 &
'*WARNING reading *INITIAL CONDITIONS: element ',l
801 write(*,*)
' exceeds the largest defined ',
805 read(textpart(2)(1:10),
'(i10)',iostat=istat) k
808 xstate(j,k,l)=beta(j)
812 &
"*INITIAL CONDITIONS%")
815 if(nstate_.gt.6)
then 816 numberoflines=(nstate_-7)/8+1
817 do ii=1,numberoflines
818 if(ii.lt.numberoflines)
then 823 call getnewline(inpc,textpart,istat,n,key,iline,
824 & ipol,inl,ipoinp,inp,ipoinpc)
825 if((istat.lt.0).or.(key.eq.1))
return 827 read(textpart(j+2)(1:20),
'(f20.0)',
828 & iostat=istat) beta(j)
831 &
"*INITIAL CONDITIONS%")
832 xstate(ntot+j,k,l)=beta(j)
844 &
'*WARNING reading *INITIAL CONDITIONS: parameter not recognized:' 846 & textpart(ij)(1:index(textpart(ij),
' ')-1)
848 &
"*INITIAL CONDITIONS%")
852 write(*,*)
'*ERROR reading *INITIAL CONDITIONS: unknown type' 855 &
"*INITIAL CONDITIONS%")
subroutine shape6w(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape6w.f:20
subroutine sdvini(statev, coords, nstatv, ncrds, noel, npt, layer, kspt)
Definition: sdvini.f:21
subroutine shape10tet(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape10tet.f:20
subroutine shape8h(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape8h.f:20
subroutine shape15w(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape15w.f:20
subroutine sigini(sigma, coords, ntens, ncrds, noel, npt, layer, kspt, lrebar, rebarn)
Definition: sigini.f:21
subroutine shape20h(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape20h.f:20
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine beamintscheme(lakonl, mint3d, npropstart, prop, kk, xi, et, ze, weight)
Definition: beamintscheme.f:21
subroutine shape4tet(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape4tet.f:20