30 logical nodefile_flag,elfile_flag,out3d,sectionforces,
33 character*1 nodesys,elemsys,inpc(*)
34 character*80 amname(*),timepointsname
35 character*81 noset,set(*)
37 character*132 textpart(16)
39 integer istep,istat,n,key,ii,jout(2),joutl,nmethod,nener,
41 & iline,ipol,inl,ipoinp(2,*),inp(3,*),j,nlabel,nam,itpamp,i,
42 & idrct,ipoinpc(0:*),cfd,ifile_output,ipos,nset
59 &
'*ERROR reading *NODE FILE or *EL FILE: *NODE FILE, *EL FILE' 60 write(*,*)
' *CONTACT FILE' 61 write(*,*)
' should only be used within a *STEP' 62 write(*,*)
' definition' 66 if(ifile_output.eq.1)
then 70 if(.not.nodefile_flag)
then 72 if((.not.elfile_flag).and.(.not.contactfile_flag))
then 116 elseif(ifile_output.eq.2)
then 120 if(.not.elfile_flag)
then 124 if((.not.nodefile_flag).and.(.not.contactfile_flag))
then 157 sectionforces=.false.
159 elseif(ifile_output.eq.3)
then 163 if(.not.contactfile_flag)
then 167 if((.not.nodefile_flag).and.(.not.elfile_flag))
then 178 if(textpart(ii)(1:10).eq.
'FREQUENCY=')
then 179 read(textpart(ii)(11:20),
'(i10)',iostat=istat) joutl
180 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
181 &
"*NODE FILE/OUTPUT or *EL FILE/OUTPUT or *CONTACT FILE/OUTPUT %")
184 call getnewline(inpc,textpart,istat,n,key,iline,ipol,
185 & inl,ipoinp,inp,ipoinpc)
186 if((key.eq.1).or.(istat.lt.0))
return 193 elseif(textpart(ii)(1:11).eq.
'FREQUENCYF=')
then 194 read(textpart(ii)(12:21),
'(i10)',iostat=istat) joutl
195 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
196 &
"*NODE FILE/OUTPUT or *EL FILE/OUTPUT or *CONTACT FILE/OUTPUT %")
199 call getnewline(inpc,textpart,istat,n,key,iline,ipol,
200 & inl,ipoinp,inp,ipoinpc)
201 if((key.eq.1).or.(istat.lt.0))
return 208 elseif(textpart(ii)(1:10).eq.
'GLOBAL=YES')
then 211 elseif(textpart(ii)(1:9).eq.
'GLOBAL=NO')
then 214 elseif((textpart(ii)(1:9).eq.
'OUTPUT=2D').or.
215 & (textpart(ii)(1:9).eq.
'OUTPUT=2d'))
then 219 if(filab(j)(5:5).eq.
'E') filab(j)(5:5)=
'I' 223 &
'*WARNING reading *NODE FILE or *EL FILE: OUTPUT=2D has no' 224 write(*,*)
' effect in all but the first step' 226 elseif((textpart(ii)(1:9).eq.
'OUTPUT=3D').or.
227 & (textpart(ii)(1:9).eq.
'OUTPUT=3d'))
then 233 elseif(.not.out3d)
then 235 &
'*WARNING reading *NODE FILE or *EL FILE: OUTPUT=3D has no' 236 write(*,*)
' effect in all but the first step' 238 elseif(textpart(ii)(1:13).eq.
'SECTIONFORCES')
then 240 elseif(textpart(ii)(1:11).eq.
'TIMEPOINTS=')
then 241 timepointsname=textpart(ii)(12:91)
243 if(amname(i).eq.timepointsname)
then 249 write(*,*)
'*ERROR reading *NODE FILE or *EL FILE: time' 250 write(*,*)
' points definition',
251 & timepointsname,
' is unknown' 256 &
'*ERROR reading *NODE FILE or *EL FILE: the DIRECT option' 257 write(*,*)
' collides with a TIME POINTS ' 258 write(*,*)
' specification' 263 elseif(textpart(ii)(1:5).eq.
'NSET=')
then 264 noset=textpart(ii)(6:85)
266 ipos=index(noset,
' ')
268 elseif(textpart(ii)(1:14).eq.
'LASTITERATIONS')
then 270 elseif(textpart(ii)(1:15).eq.
'CONTACTELEMENTS')
then 274 &
'*WARNING reading *NODE FILE or *EL FILE:' 275 write(*,*)
' parameter not recognized:' 277 & textpart(ii)(1:index(textpart(ii),
' ')-1)
279 &
"*NODE FILE/OUTPUT or *EL FILE/OUTPUT or *CONTACT FILE/OUTPUT %")
285 if((filab(3)(5:5).eq.
'M').and.(out3d))
then 287 &
'*ERROR reading *NODE FILE or *EL FILE: SECTION FORCES and' 288 write(*,*)
' OUTPUT=3D are mutually exclusive' 290 &
"*NODE FILE/OUTPUT or *EL FILE/OUTPUT or *CONTACT FILE/OUTPUT %")
297 if(set(i).eq.noset)
exit 301 write(*,*)
'*ERROR in transforms: node set ',noset
302 write(*,*)
' has not yet been defined.' 308 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
309 & ipoinp,inp,ipoinpc)
310 if((key.eq.1).or.(istat.lt.0))
return 312 if(textpart(ii)(1:4).eq.
'U ')
then 314 filab(1)(6:6)=nodesys
316 elseif(textpart(ii)(1:4).eq.
'NT ')
then 318 filab(2)(6:6)=nodesys
320 elseif(textpart(ii)(1:4).eq.
'S ')
then 322 filab(3)(6:6)=elemsys
324 elseif(textpart(ii)(1:4).eq.
'E ')
then 326 filab(4)(6:6)=elemsys
328 elseif(textpart(ii)(1:4).eq.
'RF ')
then 330 filab(5)(6:6)=nodesys
332 elseif(textpart(ii)(1:4).eq.
'PEEQ')
then 333 if((nmethod.eq.2).or.(nmethod.eq.3))
then 335 &
'*WARNING reading *NODE FILE or *EL FILE: selection of PEEQ' 336 write(*,*)
' does not make sense for a' 337 write(*,*)
' frequency or bucking calculation' 340 filab(6)(6:6)=elemsys
343 elseif(((textpart(ii)(1:4).eq.
'CEEQ').or.
344 & (textpart(ii)(1:2).eq.
'CE').or.
345 & (textpart(ii)(1:2).eq.
'PE')).and.
346 & (textpart(ii)(1:4).ne.
'CELS'))
then 347 textpart(ii)(1:4)=
'PEEQ' 348 if((nmethod.eq.2).or.(nmethod.eq.3))
then 350 &
'*WARNING reading *NODE FILE or *EL FILE:' 351 write(*,*)
' selection of CEEQ or CE or PE' 352 write(*,*)
' does not make sense for a' 353 write(*,*)
' frequency or bucking calculation' 356 &
'*WARNING in elprints: selection of CEEQ or CE or PE' 357 write(*,*)
' is converted into PEEQ; no distin 360 &
' is made between PEEQ, CEEQ, CE and PE' 362 filab(6)(6:6)=elemsys
365 elseif(textpart(ii)(1:4).eq.
'ENER')
then 367 filab(7)(6:6)=elemsys
370 elseif(textpart(ii)(1:4).eq.
'SDV ')
then 371 if((nmethod.eq.2).or.(nmethod.eq.3))
then 373 &
'*WARNING reading *NODE FILE or *EL FILE: selection of SDV' 374 write(*,*)
' does not make sense for a' 375 write(*,*)
' frequency or bucking calculation' 378 filab(8)(6:6)=elemsys
381 elseif(textpart(ii)(1:4).eq.
'HFL ')
then 382 if((ithermal.le.1).and.(nmethod.le.7))
then 384 &
'*WARNING reading *NODE FILE or *EL FILE: HFL only makes ' 385 write(*,*)
' sense for heat transfer ' 386 write(*,*)
' calculations' 389 filab(9)(6:6)=elemsys
392 elseif(textpart(ii)(1:4).eq.
'RFL ')
then 393 if(ithermal.le.1)
then 395 &
'*WARNING reading *NODE FILE or *EL FILE: RFL only makes ' 396 write(*,*)
' sense for heat transfer ' 397 write(*,*)
' calculations' 399 filab(10)(1:4)=
'RFL ' 400 filab(10)(6:6)=nodesys
401 filab(10)(7:87)=noset
403 elseif(textpart(ii)(1:4).eq.
'PU ')
then 404 if((nmethod.ne.2).and.(nmethod.ne.5).and.
405 & (nmethod.ne.6).and.(nmethod.ne.7))
then 407 &
'*WARNING reading *NODE FILE or *EL FILE: PU only makes' 408 write(*,*)
' sense for frequency and steady' 409 write(*,*)
' state dynamics calculations' 410 elseif((nmethod.eq.5).and.(xmodal(7).gt.0.d0))
then 412 &
'*WARNING reading *NODE FILE or *EL FILE: PU does not make' 413 write(*,*)
' sense for nonharmonic periodic' 414 write(*,*)
' excitations; use U instead' 417 filab(11)(7:87)=noset
419 elseif(textpart(ii)(1:4).eq.
'PNT ')
then 420 filab(12)(1:4)=
'PNT ' 421 filab(12)(7:87)=noset
422 elseif(textpart(ii)(1:3).eq.
'ZZS')
then 423 filab(13)(1:4)=
'ZZS ' 424 filab(13)(6:6)=elemsys
425 filab(13)(7:87)=noset
426 elseif(textpart(ii)(1:3).eq.
'ERR')
then 427 filab(13)(1:4)=
'ERR ' 428 filab(13)(6:6)=elemsys
429 filab(13)(7:87)=noset
430 elseif(textpart(ii)(1:4).eq.
'TT ')
then 432 filab(14)(6:6)=nodesys
433 filab(14)(7:87)=noset
434 elseif(textpart(ii)(1:4).eq.
'MF ')
then 436 filab(15)(6:6)=nodesys
437 filab(15)(7:87)=noset
438 elseif(textpart(ii)(1:4).eq.
'PT ')
then 440 filab(16)(6:6)=nodesys
441 filab(16)(7:87)=noset
442 elseif(textpart(ii)(1:4).eq.
'TS ')
then 444 filab(17)(6:6)=nodesys
445 filab(17)(7:87)=noset
446 elseif(textpart(ii)(1:4).eq.
'PHS ')
then 447 if((nmethod.ne.2).and.(nmethod.ne.5))
then 449 &
'*WARNING reading *NODE FILE or *EL FILE: PHS only makes' 450 write(*,*)
' sense for frequency and steady' 451 write(*,*)
' state dynamics calculations' 453 filab(18)(1:4)=
'PHS ' 454 filab(18)(6:6)=elemsys
455 filab(18)(7:87)=noset
457 elseif(textpart(ii)(1:4).eq.
'MAXU')
then 458 if(nmethod.ne.2)
then 460 &
'*WARNING reading *NODE FILE or *EL FILE: MAXU only makes' 461 write(*,*)
' sense for frequency calculations' 463 filab(19)(1:4)=
'MAXU' 464 filab(19)(6:6)=nodesys
465 filab(19)(7:87)=noset
467 elseif(textpart(ii)(1:4).eq.
'MAXS')
then 468 if(nmethod.ne.2)
then 470 &
'*WARNING reading *NODE FILE or *EL FILE: MAXS only makes' 471 write(*,*)
' sense for frequency calculations' 473 filab(20)(1:4)=
'MAXS' 474 filab(20)(6:6)=elemsys
475 filab(20)(7:87)=noset
477 elseif(textpart(ii)(1:4).eq.
'V ')
then 478 if((nmethod.eq.4).or.(cfd.ne.0))
then 480 filab(21)(6:6)=nodesys
481 filab(21)(7:87)=noset
484 &
'*WARNING reading *NODE FILE or *EL FILE: V only available' 485 write(*,*)
' for dynamic calculations and' 486 write(*,*)
' 3-D fluid calculations' 488 elseif(textpart(ii)(1:4).eq.
'PS ')
then 490 filab(22)(6:6)=nodesys
491 filab(22)(7:87)=noset
492 elseif(textpart(ii)(1:4).eq.
'MACH')
then 495 &
'*WARNING reading *NODE FILE or *EL FILE: MACH only makes' 496 write(*,*)
' sense for 3D fluid calculations' 498 filab(23)(1:4)=
'MACH' 499 filab(23)(6:6)=nodesys
500 filab(23)(7:87)=noset
502 elseif(textpart(ii)(1:4).eq.
'CP ')
then 505 &
'*WARNING reading *NODE FILE or *EL FILE: CP only makes' 506 write(*,*)
' sense for 3D fluid calculations' 509 filab(24)(6:6)=nodesys
510 filab(24)(7:87)=noset
512 elseif(textpart(ii)(1:4).eq.
'TURB')
then 515 &
'*WARNING reading *NODE FILE or *EL FILE: TURB only makes' 516 write(*,*)
' sense for 3D fluid calculations' 518 filab(25)(1:4)=
'TURB' 519 filab(25)(6:6)=nodesys
520 filab(25)(7:87)=noset
522 elseif((textpart(ii)(1:4).eq.
'CSTR').or.
523 & (textpart(ii)(1:4).eq.
'CDIS'))
then 524 filab(26)(1:4)=
'CONT' 525 filab(26)(6:6)=nodesys
526 filab(26)(7:87)=noset
527 elseif(textpart(ii)(1:4).eq.
'CELS')
then 528 filab(27)(1:4)=
'CELS' 529 filab(27)(6:6)=nodesys
530 filab(27)(7:87)=noset
532 elseif(textpart(ii)(1:4).eq.
'DEPT')
then 533 filab(28)(1:4)=
'DEPT' 534 filab(28)(6:6)=nodesys
535 filab(28)(7:87)=noset
536 elseif(textpart(ii)(1:4).eq.
'HCRI')
then 537 filab(29)(1:4)=
'HCRI' 538 filab(29)(6:6)=nodesys
539 filab(29)(7:87)=noset
540 elseif(textpart(ii)(1:4).eq.
'MAXE')
then 541 if(nmethod.ne.2)
then 543 &
'*WARNING reading *NODE FILE or *EL FILE: MAXE only makes' 544 write(*,*)
' sense for frequency calculations' 546 filab(30)(1:4)=
'MAXE' 547 filab(30)(6:6)=elemsys
548 filab(30)(7:87)=noset
550 elseif(textpart(ii)(1:4).eq.
'PRF ')
then 551 if((nmethod.ne.2).and.(nmethod.ne.5).and.
552 & (nmethod.ne.6).and.(nmethod.ne.7))
then 554 &
'*WARNING reading *NODE FILE or *EL FILE: PRF only makes' 555 write(*,*)
' sense for frequency and steady' 556 write(*,*)
' state dynamics calculations' 557 elseif((nmethod.eq.5).and.(xmodal(7).gt.0.d0))
then 559 &
'*WARNING reading *NODE FILE or *EL FILE: PRF does not make' 560 write(*,*)
' sense for nonharmonic periodic' 561 write(*,*)
' excitations; use RF instead' 563 filab(31)(1:4)=
'PRF ' 564 filab(31)(7:87)=noset
566 elseif(textpart(ii)(1:4).eq.
'ME ')
then 568 filab(32)(6:6)=elemsys
569 filab(32)(7:87)=noset
570 elseif(textpart(ii)(1:3).eq.
'HER')
then 571 filab(33)(1:4)=
'HER ' 572 filab(33)(6:6)=elemsys
573 filab(33)(7:87)=noset
574 elseif(textpart(ii)(1:4).eq.
'VF ')
then 577 &
'*WARNING reading *NODE FILE or *EL FILE: VF only makes' 578 write(*,*)
' sense for 3D fluid calculations' 581 filab(34)(6:6)=nodesys
582 filab(34)(7:87)=noset
584 elseif(textpart(ii)(1:4).eq.
'PSF ')
then 587 &
'*WARNING reading *NODE FILE or *EL FILE: PSF only makes' 588 write(*,*)
' sense for 3D fluid calculations' 590 filab(35)(1:4)=
'PSF ' 591 filab(35)(6:6)=nodesys
592 filab(35)(7:87)=noset
594 elseif(textpart(ii)(1:4).eq.
'TSF ')
then 597 &
'*WARNING reading *NODE FILE or *EL FILE: TSF only makes' 598 write(*,*)
' sense for 3D fluid calculations' 600 filab(36)(1:4)=
'TSF ' 601 filab(36)(6:6)=nodesys
602 filab(36)(7:87)=noset
604 elseif(textpart(ii)(1:4).eq.
'PTF ')
then 607 &
'*WARNING reading *NODE FILE or *EL FILE: PTF only makes' 608 write(*,*)
' sense for 3D fluid calculations' 610 filab(37)(1:4)=
'PTF ' 611 filab(37)(6:6)=nodesys
612 filab(37)(7:87)=noset
614 elseif(textpart(ii)(1:4).eq.
'TTF ')
then 617 &
'*WARNING reading *NODE FILE or *EL FILE: TTF only makes' 618 write(*,*)
' sense for 3D fluid calculations' 620 filab(38)(1:4)=
'TTF ' 621 filab(38)(6:6)=nodesys
622 filab(38)(7:87)=noset
624 elseif(textpart(ii)(1:4).eq.
'SF ')
then 627 &
'*WARNING reading *NODE FILE or *EL FILE: SF only makes' 628 write(*,*)
' sense for 3D fluid calculations' 631 filab(39)(6:6)=elemsys
632 filab(39)(7:87)=noset
634 elseif(textpart(ii)(1:4).eq.
'HFLF')
then 637 &
'*WARNING reading *NODE FILE or *EL FILE: HFLF only makes' 638 write(*,*)
' sense for 3D fluid calculations' 640 filab(40)(1:4)=
'HFLF' 641 filab(40)(6:6)=elemsys
642 filab(40)(7:87)=noset
644 elseif(textpart(ii)(1:4).eq.
'SVF ')
then 647 &
'*WARNING reading *NODE FILE or *EL FILE: SVF only makes' 648 write(*,*)
' sense for 3D fluid calculations' 650 filab(41)(1:4)=
'SVF ' 651 filab(41)(6:6)=elemsys
652 filab(41)(7:87)=noset
654 elseif(textpart(ii)(1:3).eq.
'ECD')
then 655 if(nmethod.lt.8)
then 657 &
'*WARNING reading *NODE FILE or *EL FILE: ECD only makes' 659 &
' sense for electromagnetic calculations' 661 filab(42)(1:4)=
'ECD ' 662 filab(42)(6:6)=elemsys
663 filab(42)(7:87)=noset
665 elseif(textpart(ii)(1:3).eq.
'POT')
then 666 if(nmethod.lt.8)
then 668 &
'*WARNING reading *NODE FILE or *EL FILE: POT only makes' 670 &
' sense for electromagnetic calculations' 672 filab(43)(1:4)=
'POT ' 673 filab(43)(6:6)=nodesys
674 filab(43)(7:87)=noset
676 elseif(textpart(ii)(1:4).eq.
'EMFE')
then 677 if(nmethod.lt.8)
then 679 &
'*WARNING reading *NODE FILE or *EL FILE: EMFE only makes' 681 &
' sense for electromagnetic calculations' 683 filab(44)(1:4)=
'EMFE' 684 filab(44)(6:6)=elemsys
685 filab(44)(7:87)=noset
687 elseif(textpart(ii)(1:4).eq.
'EMFB')
then 688 if(nmethod.lt.8)
then 690 &
'*WARNING reading *NODE FILE or *EL FILE: EMFB only makes' 692 &
' sense for electromagnetic calculations' 694 filab(45)(1:4)=
'EMFB' 695 filab(45)(6:6)=elemsys
696 filab(45)(7:87)=noset
698 elseif(textpart(ii)(1:4).eq.
'PCON')
then 699 if((nmethod.ne.2).and.(nmethod.ne.5))
then 701 &
'*WARNING reading *NODE FILE or *EL FILE: PCON only makes' 702 write(*,*)
' sense for frequency and steady' 703 write(*,*)
' state dynamics calculations' 705 filab(46)(1:4)=
'PCON' 706 filab(46)(6:6)=elemsys
707 filab(46)(7:87)=noset
709 elseif(textpart(ii)(1:4).eq.
'SEN ')
then 710 if(nmethod.ne.12)
then 712 &
'*WARNING reading *NODE FILE or *EL FILE: SEN only makes' 713 write(*,*)
' sense for sensitivity' 714 write(*,*)
' calculations' 716 filab(47)(1:4)=
'SEN ' 717 filab(47)(6:6)=elemsys
718 filab(47)(7:87)=noset
722 &
'*WARNING reading *NODE FILE or *EL FILE: label not applicable' 723 write(*,*)
' or unknown; ' 725 &
"*NODE FILE/OUTPUT or *EL FILE/OUTPUT or *CONTACT FILE/OUTPUT %")
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21