30 logical liquid,manning
35 character*80 matname(*),material,typename,typename_oil
36 character*81 set(*),elset
37 character*132 textpart(16)
39 integer mi(*),istartset(*),iendset(*),ialset(*),nconstants,
40 & ielmat(mi(3),*),irstrt,nset,nmat,ndprop,npropstart,ndpropread,
41 & istep,istat,n,key,i,j,k,imaterial,ipos,lprop,ipoinpc(0:*),
42 & iline,ipol,inl,ipoinp(2,*),inp(3,*),ielprop(*),nprop,nprop_,
43 & nodea,nodeb,noil _mat,npu,nfix,nstart,iset
51 if((istep.gt.0).and.(irstrt.ge.0))
then 53 &
'*ERROR reading *FLUID SECTION: *FLUID SECTION should' 54 write(*,*)
' be placed before all step definitions' 62 if(textpart(i)(1:9).eq.
'MATERIAL=')
then 63 material=textpart(i)(10:89)
64 elseif(textpart(i)(1:6).eq.
'ELSET=')
then 65 elset=textpart(i)(7:86)
70 elseif(textpart(i)(1:5).eq.
'TYPE=')
then 71 read(textpart(i)(6:85),
'(a80)',iostat=istat) typename
72 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
75 elseif(textpart(i)(1:4).eq.
'OIL=')
then 76 read(textpart(i)(5:85),
'(a80)',iostat=istat) typename_oil
78 if(matname(j)(1:80).eq. typename_oil(1:80))
then 85 &
'*ERROR reading *FLUID SECTION: no oil with the' 86 write(*,*)
' name',typename_oil,
'has been defined' 90 elseif(textpart(i)(1:6).eq.
'LIQUID')
then 92 elseif(textpart(i)(1:7).eq.
'MANNING')
then 94 elseif(textpart(i)(1:10).eq.
'CONSTANTS=')
then 95 read(textpart(i)(11:20),
'(i10)',iostat=istat) nconstants
96 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
100 &
'*WARNING reading *FLUID SECTION: parameter not recognized:' 102 & textpart(i)(1:index(textpart(i),
' ')-1)
110 if(typename(1:18).eq.
'ABSOLUTETORELATIVE')
then 116 elseif(typename(1:10).eq.
'ACCTUBEONE')
then 122 elseif(typename(1:7).eq.
'ACCTUBE')
then 126 elseif(typename(1:12).eq.
'BLEEDTAPPING')
then 133 elseif(typename(1:9).eq.
'BLINDLINK')
then 137 elseif(typename(1:6).eq.
'BRANCH')
then 138 if(typename(7:13).eq.
'JOINTGE')
then 141 elseif(typename(7:20).eq.
'JOINTIDELCHIK1')
then 144 elseif(typename(7:20).eq.
'JOINTIDELCHIK2')
then 147 elseif(typename(7:13).eq.
'SPLITGE')
then 150 elseif(typename(7:20).eq.
'SPLITIDELCHIK1')
then 153 elseif(typename(7:20).eq.
'SPLITIDELCHIK2')
then 158 elseif(typename(1:10).eq.
'CARBONSEAL')
then 160 if(typename(11:12).eq.
'GE')
then 166 elseif(typename(1:12).eq.
'CHANNELINOUT')
then 170 elseif(typename(1:7).eq.
'CHANNEL')
then 171 if(typename(8:17).eq.
'SLUICEGATE')
then 174 elseif(typename(8:20).eq.
'SLUICEOPENING')
then 177 elseif(typename(8:16).eq.
'WEIRCREST')
then 180 elseif(typename(8:16).eq.
'WEIRSLOPE')
then 183 elseif(typename(8:17).eq.
'STRAIGHT')
then 186 elseif(typename(8:16).eq.
'RESERVOIR')
then 189 elseif(typename(8:25).eq.
'DISCONTINUOUSSLOPE')
then 192 elseif(typename(8:27).eq.
'DISCONTINUOUSOPENING')
then 195 elseif(typename(8:18).eq.
'CONTRACTION')
then 198 elseif(typename(8:18).eq.
'ENLARGEMENT')
then 201 elseif(typename(8:11).eq.
'STEP')
then 204 elseif(typename(8:11).eq.
'DROP')
then 208 write(*,*)
'*ERROR reading *FLUID SECTION:' 209 write(*,*)
' unknown channel section' 214 elseif(typename(1:14).eq.
'CHARACTERISTIC')
then 218 elseif(typename(1:10).eq.
'CROSSSPLIT')
then 222 elseif (typename(1:18).eq.
'FREECONVECTIONFLOW')
then 226 elseif (typename(1:16).eq.
'FREEDISCPUMPFLOW')
then 230 elseif(typename(1:12).eq.
'GASPIPEFANNO')
then 234 if(typename(13:21).eq.
'ADIABATIC')
then 235 if(typename(22:27).eq.
'ALBERS')
then 238 elseif(typename(22:28).eq.
'FRIEDEL')
then 241 elseif(typename(22:35).eq.
'FLEXIBLERADIUS')
then 244 elseif(typename(22:44).eq.
'FLEXIBLERADIUSANDLENGTH')
then 252 elseif(typename(13:22).eq.
'ISOTHERMAL')
then 253 if(typename(23:28).eq.
'ALBERS')
then 256 elseif(typename(23:29).eq.
'FRIEDEL')
then 259 elseif(typename(22:35).eq.
'FLEXIBLERADIUS')
then 262 elseif(typename(22:44).eq.
'FLEXIBLERADIUSANDLENGTH')
then 274 elseif(typename(1:5).eq.
'INLET')
then 278 elseif(typename(1:5).eq.
'INOUT')
then 282 elseif(typename(1:9).eq.
'LABYRINTH')
then 283 if(typename(10:17).eq.
'FLEXIBLE')
then 285 if(typename(18:23).eq.
'SINGLE')
then 287 elseif(typename(18:25).eq.
'STRAIGHT')
then 289 elseif(typename(18:24).eq.
'STEPPED')
then 292 elseif(typename(10:14).eq.
'DUMMY')
then 297 if(typename(10:15).eq.
'SINGLE')
then 299 elseif(typename(10:17).eq.
'STRAIGHT')
then 301 elseif(typename(10:16).eq.
'STEPPED')
then 306 elseif(typename(1:10).eq.
'LIQUIDPUMP')
then 311 elseif (typename(1:15).eq.
'MASSFLOWPERCENT')
then 315 elseif(typename(1:8).eq.
'MOEHRING')
then 316 if(typename(9:19).eq.
'CENTRIFUGAL')
then 318 elseif(typename(9:19).eq.
'CENTRIPETAL')
then 323 else if (typename(1:6).eq.
'O-PUMP')
then 327 elseif(typename(1:7).eq.
'ORIFICE')
then 329 if(typename(8:13).eq.
'OWN_AL')
then 331 elseif(typename(8:12).eq.
'PK_AL')
then 333 elseif(typename(8:12).eq.
'MS_MS')
then 335 elseif(typename(8:12).eq.
'PK_MS')
then 337 elseif(typename(8:12).eq.
'BRAGG')
then 339 elseif(typename(8:14).eq.
'RINGGAP')
then 341 elseif(typename(8:17).eq.
'SEGMENTGAP')
then 343 elseif(typename(8:11).eq.
'BORE')
then 345 elseif(typename(8:22).eq.
'GEOMETRICALAREA')
then 347 elseif(typename(8:20).eq.
'BRUSHFLEXIBLE')
then 356 elseif(typename(1:6).eq.
'OUTLET')
then 360 elseif(typename(1:9).eq.
'PIPEINOUT')
then 366 elseif(typename(1:4).eq.
'PIPE')
then 367 if(typename(5:8).eq.
'BEND')
then 370 elseif(typename(5:10).eq.
'BRANCH')
then 373 elseif(typename(5:15).eq.
'CONTRACTION')
then 376 elseif(typename(5:13).eq.
'DIAPHRAGM')
then 379 elseif(typename(5:15).eq.
'ENLARGEMENT')
then 382 elseif(typename(5:12).eq.
'ENTRANCE')
then 385 elseif(typename(5:13).eq.
'GATEVALVE')
then 388 elseif(typename(5:11).eq.
'MANNING')
then 389 if(typename(12:19).eq.
'FLEXIBLE')
then 396 elseif(typename(5:19).eq.
'WHITE-COLEBROOK')
then 397 if(typename(20:27).eq.
'FLEXIBLE')
then 406 elseif(typename(1:14).eq.
'PRESWIRLNOZZLE')
then 410 elseif(typename(1:13).eq.
'RADIALOUTFLOW')
then 411 if(typename(14:24).eq.
'RADIALINLET')
then 414 else if(typename(14:23).eq.
'AXIALINLET')
then 419 elseif(typename(1:18).eq.
'RELATIVETOABSOLUTE')
then 423 elseif(typename(1:10).eq.
'RESTRICTOR')
then 424 if(typename(11:15).eq.
'USER')
then 428 elseif(typename(11:15).eq.
'BRUSH')
then 431 elseif(typename(11:29).eq.
'LONGORIFICEIDELCHIK')
then 435 elseif(typename(11:21).eq.
'WALLORIFICE')
then 438 elseif(typename(11:18).eq.
'ENTRANCE')
then 441 elseif(typename(11:21).eq.
'ENLARGEMENT')
then 444 elseif(typename(11:21).eq.
'CONTRACTION')
then 447 elseif(typename(11:23).eq.
'BENDIDELCIRC')
then 450 elseif(typename(11:23).eq.
'BENDIDELRECT')
then 453 elseif(typename(11:20).eq.
'BENDMILLER')
then 456 elseif(typename(11:17).eq.
'BENDOWN')
then 459 elseif(typename(11:14).eq.
'EXIT')
then 462 elseif(typename(11:33).eq.
'LONGORIFICELICHTAROWICZ')
then 467 elseif((typename(1:7).eq.
'RIMSEAL').and.
468 & (typename(1:15).ne.
'RIMSEALFLEXIBLE'))
then 472 elseif(typename(1:15).eq.
'RIMSEALFLEXIBLE')
then 476 elseif(typename(1:14).eq.
'ROTATINGCAVITY')
then 477 if(typename(15:20).eq.
'LINEAR')
then 479 else if(typename(15:23).eq.
'NONLINEAR')
then 484 else if (typename(1:6).eq.
'S-PUMP')
then 488 elseif(typename(1:6).eq.
'VORTEX')
then 489 if(typename(7:10).eq.
'FREE')
then 492 elseif(typename(7:12).eq.
'FORCED')
then 497 elseif(typename(1:1).eq.
' ')
then 500 elseif(typename(1:1).eq.
'U')
then 501 elname(1:7)=typename(1:7)
504 write(*,*)
'*ERROR reading *FLUID SECTION: ',typename
505 write(*,*)
' is an unknown fluid section type' 512 if(matname(i).eq.material)
exit 516 &
'*ERROR reading *FLUID SECTION: nonexistent material' 525 if(set(i).eq.elset)
exit 529 write(*,*)
'*ERROR reading *FLUID SECTION: element set ',elset
530 write(*,*)
' has not yet been defined. ' 546 if((elname(1:4).eq.
'LIPU').or.(elname(1:4).eq.
'CHAR').or.
547 & (elname(1:4).eq.
'ORPN').or.(elname(1:4).eq.
'ORBT'))
then 552 if(elname(1:4).eq.
'LIPU')
then 554 elseif(elname(1:4).eq.
'CHAR')
then 556 elseif(elname(1:4).eq.
'ORPN')
then 558 elseif(elname(1:4).eq.
'ORBT')
then 596 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
597 & ipoinp,inp,ipoinpc)
598 if((istat.lt.0).or.(key.eq.1))
exit 601 if(ndprop.eq.nfix)
then 602 if(elname(1:4).eq.
'CHAR')
then 609 elseif(ndprop.gt.nfix)
then 615 if(elname(1:4).eq.
'LIPU')
then 616 if(ndprop.gt.19)
then 617 write(*,*)
'ERROR reading *FLUID SECTION: more' 618 write(*,*)
' than 9 pairs were defined for' 619 write(*,*)
' fluid section type LIQUID PUMP' 622 elseif(elname(1:4).eq.
'CHAR')
then 623 if(ndprop.gt.23)
then 624 write(*,*)
'ERROR reading *FLUID SECTION: more' 625 write(*,*)
' than 9 pairs were defined for' 627 &
' fluid section type CHARACTERISTIC' 630 elseif(elname(1:4).eq.
'ORPN')
then 631 if(ndprop.gt.41)
then 632 write(*,*)
'ERROR reading *FLUID SECTION: more' 633 write(*,*)
' than 17 pairs were defined for' 635 &
' fluid section type PRESWIRL NOZZLE' 638 elseif(elname(1:4).eq.
'ORBT')
then 639 if(ndprop.gt.41)
then 640 write(*,*)
'ERROR reading *FLUID SECTION: more' 641 write(*,*)
' than 18 pairs were defined for' 642 write(*,*)
' fluid section type BLEED TAPPING' 647 read(textpart(j),
'(f40.0)',iostat=istat)
649 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
656 if(ndprop.lt.nfix)
then 665 if(2*(npu/2).ne.npu)
then 666 write(*,*)
'*WARNING reading *FLUID SECTION: less y data' 667 write(*,*)
' points x data points for fluid' 668 write(*,*)
' section type',elname(1:4)
673 prop(nprop+nfix)=npu/2
678 if(elname(1:4).eq.
'LIPU')
then 680 if(prop(nprop+nfix+2*j-1).le.prop(nprop+nfix+2*j-3))
then 681 write(*,*)
'*ERROR reading *FLUID SECTION: volumetric' 682 write(*,*)
' flow data points must be in' 683 write(*,*)
' strict increasing order' 685 elseif(prop(nprop+nfix+2*j).gt.prop(nprop+nfix+2*j-2))
687 write(*,*)
'*ERROR reading *FLUID SECTION: total' 688 write(*,*)
' head data points must be ' 689 write(*,*)
' decreasing' 697 elseif(elname.eq.
'ACCTUBE')
then 708 do j=1,(ndpropread-1)/8+1
709 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
710 & ipoinp,inp,ipoinpc)
711 if((istat.lt.0).or.(key.eq.1))
exit 714 if(lprop.gt.ndpropread)
exit 715 read(textpart(k),
'(f40.0)',iostat=istat)
718 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
723 if (lprop.eq.20)
then 725 & (prop(nprop+19)+prop(nprop+20))*2
734 if(ndpropread.gt.lprop)
then 735 do j=3,(ndpropread-1)/8+1
736 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
737 & ipoinp,inp,ipoinpc)
738 if((istat.lt.0).or.(key.eq.1))
exit 741 if(lprop.gt.ndpropread)
exit 742 read(textpart(k),
'(f40.0)',iostat=istat)
745 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
753 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
754 & ipoinp,inp,ipoinpc)
756 elseif(ndprop.gt.0)
then 765 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
766 & ipoinp,inp,ipoinpc)
767 if((istat.lt.0).or.(key.eq.1))
exit 770 if(lprop.gt.ndprop)
exit 771 read(textpart(k),
'(f20.0)',iostat=istat)
773 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
779 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
780 & ipoinp,inp,ipoinpc)
783 if(nprop.gt.nprop_)
then 784 write(*,*)
'*ERROR reading *FLUID SECTION: increase nprop_' 790 if((elname(1:6).eq.
'REBEMI').or.
791 & (elname(1:6).eq.
'REBEMA'))
then 792 prop(npropstart+7)=noil_mat
794 elseif(elname(1:7).eq.
'REBEIDC')
then 795 prop(npropstart+7)=noil_mat
797 elseif(elname(1:7).eq.
'REBEIDR')
then 798 prop(npropstart+9)=noil_mat
800 elseif(elname(1:4).eq.
'REEX')
then 802 prop(npropstart+6)=noil_mat
804 elseif(elname(1:6).eq.
'REWAOR')
then 806 prop(npropstart+6)=noil_mat
808 elseif(elname(1:4).eq.
'REEN')
then 810 prop(npropstart+6)=noil_mat
814 elseif(elname(1:7).eq.
'REBRJI1')
then 815 prop(npropstart+11)=noil_mat
817 elseif(elname(1:7).eq.
'REBRJI2')
then 818 prop(npropstart+11)=noil_mat
819 elseif(elname(1:6).eq.
'REBRJG')
then 820 prop(npropstart+11)=noil_mat
821 elseif(elname(1:6).eq.
'REBRSG')
then 822 prop(npropstart+11)=noil_mat
823 elseif(elname(1:7).eq.
'REBRSI1')
then 824 prop(npropstart+15)=noil_mat
825 elseif(elname(1:7).eq.
'REBRSI2')
then 826 prop(npropstart+13)=noil_mat
832 if((elname(1:4).eq.
'REUS').or.
833 & (elname(1:6).eq.
'RELOID').or.
834 & (elname(1:6).eq.
'RELOLI'))
then 836 prop(npropstart+6)= noil_mat
840 elseif (elname(1:4).eq.
'REEL')
then 841 prop(npropstart+5)= noil_mat
846 elseif(elname(1:4).eq.
'RECO')
then 847 prop(npropstart+7)= noil_mat
851 elseif(elname(1:3).eq.
'GAP')
then 852 prop(npropstart+7)=noil_mat
853 elseif(elname(1:4).eq.
'LICH')
then 858 if((elname(5:6).eq.
'SO').or.
859 & (elname(5:6).eq.
'WO').or.
860 & (elname(5:6).eq.
' ').or.
861 & (elname(5:6).eq.
'RE').or.
862 & (elname(5:6).eq.
'DS').or.
863 & (elname(5:6).eq.
'DO'))
then 864 prop(npropstart+5)=-prop(npropstart+5)
872 do j=istartset(iset),iendset(iset)
873 if(ialset(j).gt.0)
then 874 if(lakon(ialset(j))(1:1).ne.
'D')
then 875 write(*,*)
'*ERROR reading *FLUID SECTION: element ',
876 & ialset(j),
' is no fluid element.' 879 lakon(ialset(j))(2:8)=elname(1:7)
883 if((liquid.and.(lakon(ialset(j))(2:3).eq.
'RE')).or.
884 & (liquid.and.(lakon(ialset(j))(2:3).eq.
'OR')))
885 & lakon(ialset(j))(2:3)=
'LP' 887 if(liquid.and.(lakon(ialset(j))(2:3).eq.
'VO'))
then 888 lakon(ialset(j))(2:3)=
'LP' 889 if(lakon(ialset(j))(4:5).eq.
'FR')
then 890 lakon(ialset(j))(4:5)=
'VF' 891 else if(lakon(ialset(j))(4:5).eq.
'FO')
then 892 lakon(ialset(j))(4:5)=
'VS' 896 if(liquid.and.((lakon(ialset(j))(4:5).eq.
'BG').or.
897 & (lakon(ialset(j))(4:5).eq.
'BT').or.
898 & (lakon(ialset(j))(4:5).eq.
'MA').or.
899 & (lakon(ialset(j))(4:5).eq.
'MM').or.
900 & (lakon(ialset(j))(4:5).eq.
'PA').or.
901 & (lakon(ialset(j))(4:5).eq.
'PM').or.
902 & (lakon(ialset(j))(4:5).eq.
'PN')))
then 904 write(*,*)
'*ERROR reading *FLUID SECTION: element ',k,
905 &
' is no valid incompressible orifice element.' 906 write(*,*)
' Please change element type',
907 &
' and/or definition.' 908 write(*,*)
' Calculation stopped.' 912 ielmat(1,ialset(j))=imaterial
913 if(ndprop.gt.0) ielprop(ialset(j))=npropstart
918 if(k.ge.ialset(j-1))
exit 919 if(lakon(k)(1:1).ne.
'D')
then 920 write(*,*)
'*ERROR reading *FLUID SECTION: element ',
921 & k,
' is no fluid element.' 924 lakon(k)(2:8)=elname(1:7)
928 if((liquid.and.(lakon(ialset(j))(2:3).eq.
'RE')).or.
929 & (liquid.and.(lakon(ialset(j))(2:3).eq.
'OR')))
930 & lakon(ialset(j))(2:3)=
'LP' 932 if(liquid.and.(lakon(ialset(j))(2:3).eq.
'VO'))
then 933 lakon(ialset(j))(2:3)=
'LP' 934 if(lakon(ialset(j))(4:5).eq.
'FR')
then 935 lakon(ialset(j))(4:5)=
'VF' 936 else if(lakon(ialset(j))(4:5).eq.
'FO')
then 937 lakon(ialset(j))(4:5)=
'VS' 941 if(liquid.and.((lakon(ialset(j))(4:5).eq.
'BG').or.
942 & (lakon(ialset(j))(4:5).eq.
'BT').or.
943 & (lakon(ialset(j))(4:5).eq.
'MA').or.
944 & (lakon(ialset(j))(4:5).eq.
'MM').or.
945 & (lakon(ialset(j))(4:5).eq.
'PA').or.
946 & (lakon(ialset(j))(4:5).eq.
'PM').or.
947 & (lakon(ialset(j))(4:5).eq.
'PN')))
then 949 write(*,*)
'*ERROR reading *FLUID SECTION: element ',k,
950 &
' is no valid incompressible orifice element.' 951 write(*,*)
' Please change element type ',
952 &
'and/or definition.' 953 write(*,*)
' Calculation stopped.' 956 ielmat(1,k)=imaterial
957 if(ndprop.gt.0) ielprop(k)=npropstart
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21