module defpi implicit none real(8),parameter::pi=3.14159265358979323846D0 end module defpi program f90_PSS use defpi real(8)::ELT,ELC,ELG,ELF,ELB,ELS,LG1,LG2 real(8)::TC_1,DG_1,HG_1,D1_1,OS_1,PS_1,GH_1,GW_1 real(8)::TC_2,DG_2,HG_2,D1_2,OS_2,PS_2,GH_2,GW_2 real(8)::TC,DG,HG,D1,OS,PS real(8),parameter::SWL=95.0D0 real(8),parameter::FSL=90.0D0 real(8),parameter::MOL=80.0D0 real(8)::ww,wu,wd character(len=50)::dummy,fnameR,fnameW character(len=15)::elstr integer::i real(8)::dh,dw,xx,yy,work call getarg(1,fnameR) open(11,file=fnameR,status='old') read(11,*) dummy,ELT read(11,*) dummy,ELC read(11,*) dummy,ELG read(11,*) dummy,ELF read(11,*) dummy,ELB read(11,*) dummy,ELS read(11,*) dummy,LG1 read(11,*) dummy,LG2 read(11,*) dummy,TC_1 read(11,*) dummy,DG_1 read(11,*) dummy,HG_1 read(11,*) dummy,D1_1 read(11,*) dummy,OS_1 read(11,*) dummy,PS_1 read(11,*) dummy,GH_1 read(11,*) dummy,GW_1 read(11,*) dummy,TC_2 read(11,*) dummy,DG_2 read(11,*) dummy,HG_2 read(11,*) dummy,D1_2 read(11,*) dummy,OS_2 read(11,*) dummy,PS_2 read(11,*) dummy,GH_2 read(11,*) dummy,GW_2 close(11) ww=LG1 wu=10.0D0 wd=10.0D0 ELgc=ELG+8.0D0 fnameW='_S_ps_1.txt' open(12, file=fnameW, status='replace') ! polygon of structure (solid line + pattern filling) ! outline write(12,'(2(e15.7))') -ww-wu-5.0D0,TC_1+0.5D0*PS_1+1.0D0 write(12,'(2(e15.7))') -ww-wu ,TC_1+0.5D0*PS_1+1.0D0 write(12,'(2(e15.7))') -ww-wu ,ELG write(12,'(2(e15.7))') -ww ,ELG write(12,'(2(e15.7))') -ww ,ELT write(12,'(2(e15.7))') -ww+1.0D0 ,ELT write(12,'(2(e15.7))') -ww+1.0D0 ,ELC write(12,'(2(e15.7))') -ww+2.0D0 ,ELC write(12,'(2(e15.7))') -ww+2.0D0 ,ELC-1.0D0 write(12,'(2(e15.7))') -ww+1.0D0 ,ELC-2.0D0 write(12,'(2(e15.7))') -ww+1.0D0 ,ELF write(12,'(2(e15.7))') ww-1.0D0 ,ELF write(12,'(2(e15.7))') ww-1.0D0 ,ELC-2.0D0 write(12,'(2(e15.7))') ww-2.0D0 ,ELC-1.0D0 write(12,'(2(e15.7))') ww-2.0D0 ,ELC write(12,'(2(e15.7))') ww-1.0D0 ,ELC write(12,'(2(e15.7))') ww-1.0D0 ,ELT write(12,'(2(e15.7))') ww ,ELT write(12,'(2(e15.7))') ww ,ELgc write(12,'(2(e15.7))') ww+1.0D0 ,ELgc write(12,'(2(e15.7))') ww+1.0D0 ,ELgc-1.0D0 write(12,'(2(e15.7))') ww ,ELgc-2.0D0 write(12,'(2(e15.7))') ww ,ELG write(12,'(2(e15.7))') ww+wd+2.0D0,ELG write(12,'(2(e15.7))') ww+wd+2.0D0,ELG+1.0D0 write(12,'(2(e15.7))') ww+wd+2.5D0,ELG+1.0D0 write(12,'(2(e15.7))') ww+wd+2.5D0,ELG-1.0D0 write(12,'(2(e15.7))') ww+wd+2.0D0,ELG-1.5D0 write(12,'(2(e15.7))') ww+wd+2.0D0,ELB+2.0D0 write(12,'(2(e15.7))') ww+wd ,ELB+2.0D0 write(12,'(2(e15.7))') 5.0D0 ,ELB write(12,'(2(e15.7))') -ww ,ELB dh=10.0D0 xx=-ww yy=ELB work=TC_1-0.5D0*PS_1-1.0D0 do i=1,10 xx=xx-0.3D0*dh yy=yy+dh write(12,'(2(e15.7))') xx,yy xx=xx-2.0D0 write(12,'(2(e15.7))') xx,yy if(work' write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-1.0D0 write(12,'(2(e15.7))') -ww ,yy-1.0D0 write(12,'(2(e15.7))') -ww ,yy-dh write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-dh write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-1.0D0 yy=ELG-dh write(12,'(a)') '>' write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-1.0D0 write(12,'(2(e15.7))') -ww ,yy-1.0D0 write(12,'(2(e15.7))') -ww ,yy-dh write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-dh write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-1.0D0 yy=ELF write(12,'(a)') '>' write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-1.0D0 write(12,'(2(e15.7))') -ww ,yy-1.0D0 write(12,'(2(e15.7))') -ww ,yy-dh write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-dh write(12,'(2(e15.7))') -ww-wu+1.0D0,yy-1.0D0 ! dranage gallery write(12,'(a)') '>' write(12,'(2(e15.7))') -ww+3.0D0,ELB+3.0D0 write(12,'(2(e15.7))') -ww+3.0D0,ELB+5.5D0 write(12,'(2(e15.7))') -ww+3.5D0,ELB+6.0D0 write(12,'(2(e15.7))') -ww+5.5D0,ELB+6.0D0 write(12,'(2(e15.7))') -ww+6.0D0,ELB+5.5D0 write(12,'(2(e15.7))') -ww+6.0D0,ELB+2.0D0 write(12,'(2(e15.7))') -ww+4.0D0,ELB+2.0D0 write(12,'(2(e15.7))') -ww+4.0D0,ELB+3.0D0 write(12,'(2(e15.7))') -ww+3.0D0,ELB+3.0D0 ! transformer write(12,'(a)') '>' write(12,'(2(e15.7))') -ww-wu+3.0D0,ELG write(12,'(2(e15.7))') -ww-wu+3.0D0,ELG+5.0D0 write(12,'(2(e15.7))') -ww-3.0D0 ,ELG+5.0D0 write(12,'(2(e15.7))') -ww-3.0D0 ,ELG write(12,'(2(e15.7))') -ww-wu+3.0D0,ELG ! rooms at downstream yy=ELG write(12,'(a)') '>' write(12,'(2(e15.7))') ww ,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-dh write(12,'(2(e15.7))') ww ,yy-dh write(12,'(2(e15.7))') ww ,yy-1.0D0 yy=ELG-dh write(12,'(a)') '>' write(12,'(2(e15.7))') ww ,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-dh write(12,'(2(e15.7))') ww ,yy-dh write(12,'(2(e15.7))') ww ,yy-1.0D0 yy=ELF write(12,'(a)') '>' write(12,'(2(e15.7))') ww ,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-dh write(12,'(2(e15.7))') ww ,yy-dh write(12,'(2(e15.7))') ww ,yy-1.0D0 yy=ELF-dh write(12,'(a)') '>' write(12,'(2(e15.7))') ww ,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-dh write(12,'(2(e15.7))') ww ,yy-dh write(12,'(2(e15.7))') ww ,yy-1.0D0 yy=ELF-2.0D0*dh write(12,'(a)') '>' write(12,'(2(e15.7))') ww ,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-dh write(12,'(2(e15.7))') ww ,yy-dh write(12,'(2(e15.7))') ww ,yy-1.0D0 yy=ELF-3.0D0*dh write(12,'(a)') '>' write(12,'(2(e15.7))') ww ,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-1.0D0 write(12,'(2(e15.7))') ww+wd-1.0D0,yy-dh write(12,'(2(e15.7))') ww ,yy-dh write(12,'(2(e15.7))') ww ,yy-1.0D0 ! draft gate write(12,'(a)') '>' write(12,'(2(e15.7))') ww+wd ,ELG write(12,'(2(e15.7))') ww+wd+1.0D0,ELG write(12,'(2(e15.7))') ww+wd+1.0D0,ELB+5.0D0 write(12,'(2(e15.7))') ww+wd ,ELB+5.0D0 write(12,'(2(e15.7))') ww+wd ,ELG close(12) ! penstock (solid line + white filling) fnameW='_S_ps_3.txt' open(12, file=fnameW, status='replace') write(12,'(2(e15.7))') -ww-wu-5.0D0,TC_1+0.5D0*PS_1 write(12,'(2(e15.7))') 0.0D0,TC_1+0.5D0*PS_1 xx=OS_1-0.5D0*PS_1+0.9D0*PS_1*0.5D0 work=0.9D0*PS_1*0.5D0 write(12,'(2(e15.7))') xx,TC_1+work write(12,'(2(e15.7))') xx,TC_1-work write(12,'(2(e15.7))') 0.0D0,TC_1-0.5D0*PS_1 write(12,'(2(e15.7))') -ww-wu-5.0D0,TC_1-0.5D0*PS_1 close(12) fnameW='_S_ps_4.txt' open(12, file=fnameW, status='replace') ! line of structures (solid line) ! roof, gate,crane write(12,'(a)') '>' write(12,'(2(e15.7))') -ww ,ELT write(12,'(2(e15.7))') 0.0D0,ELT+2.0D0 write(12,'(2(e15.7))') ww ,ELT write(12,'(a)') '>' write(12,'(2(e15.7))') ww+wd ,ELB+5.0D0 write(12,'(2(e15.7))') ww+wd ,ELB+5.0D0+GH_1 write(12,'(2(e15.7))') ww+wd+1.0D0,ELB+5.0D0+GH_1 write(12,'(2(e15.7))') ww+wd+1.0D0,ELB+5.0D0 write(12,'(a)') '>' write(12,'(2(e15.7))') -ww+1.5D0 ,ELC write(12,'(2(e15.7))') -ww+1.5D0 ,ELC+1.0D0 write(12,'(2(e15.7))') ww-1.5D0 ,ELC+1.0D0 write(12,'(2(e15.7))') ww-1.5D0 ,ELC write(12,'(2(e15.7))') -ww+1.5D0 ,ELC write(12,'(a)') '>' write(12,'(2(e15.7))') ww+0.5D0 ,ELgc write(12,'(2(e15.7))') ww+0.5D0 ,ELgc+1.0D0 write(12,'(2(e15.7))') ww+wd+1.5D0,ELgc+1.0D0 write(12,'(2(e15.7))') ww+wd+1.5D0,ELG write(12,'(2(e15.7))') ww+wd+1.0D0,ELG write(12,'(2(e15.7))') ww+wd+1.0D0,ELgc write(12,'(2(e15.7))') ww+0.5D0 ,ELgc close(12) fnameW='_S_arrow.txt' open(12, file=fnameW, status='replace') ! arrow yy=ELT+4.0D0 write(12,'(4(e15.7))') -ww-wu,yy,-ww,yy write(12,'(4(e15.7))') -ww,yy,0.0D0,yy write(12,'(4(e15.7))') 0.0D0,yy,ww,yy write(12,'(4(e15.7))') ww,yy,ww+wd,yy close(12) fnameW='_S_text1.txt' open(12, file=fnameW, status='replace') ! text1 yy=ELT+5.0D0 xx=-ww-0.5D0*wu write(12,'(2(e15.7),3(i3),a3,f8.3)') xx,yy,8,0,0,'BC',wu xx=-0.5D0*ww write(12,'(2(e15.7),3(i3),a3,f8.3)') xx,yy,8,0,0,'BC',ww xx=0.5D0*ww write(12,'(2(e15.7),3(i3),a3,f8.3)') xx,yy,8,0,0,'BC',ww xx=ww+0.5*wd write(12,'(2(e15.7),3(i3),a3,f8.3)') xx,yy,8,0,0,'BC',wd xx=-ww-0.5D0*wu; yy=ELG+2.5D0 write(12,'(2(e15.7),3(i3),a3,a3)') xx,yy,8,0,0,'MC','Tr' close(12) fnameW='_S_line.txt' open(12, file=fnameW, status='replace') ! line yy=ELT+5.0D0 write(12,'(4(e15.7))') -ww-wu,ELG,-ww-wu,yy write(12,'(4(e15.7))') -ww,ELT,-ww,yy write(12,'(4(e15.7))') 0.0D0,ELT+2.0D0,0.0D0,yy write(12,'(4(e15.7))') ww,ELT,ww,yy write(12,'(4(e15.7))') ww+wd,ELG,ww+wd,yy xx=-40.0D0 write(12,'(4(e15.7))') xx,ELB,-ww,ELB write(12,'(4(e15.7))') xx,ELB+3.0D0,5.0D0,ELB+3.0D0 write(12,'(4(e15.7))') xx,TC_1,-ww-wu,TC_1 write(12,'(4(e15.7))') xx,ELF ,-ww-wu,ELF write(12,'(4(e15.7))') xx,ELG ,-ww-wu,ELG write(12,'(4(e15.7))') xx,ELC ,-ww,ELC write(12,'(4(e15.7))') xx,ELT ,-ww,ELT xx=45.0D0 write(12,'(4(e15.7))') ww+wd+2.5D0 ,SWL,xx,SWL write(12,'(4(e15.7))') ww+wd+2.0D0 ,FSL,xx,FSL write(12,'(4(e15.7))') ww+wd+2.0D0 ,MOL,xx,MOL write(12,'(4(e15.7))') ww+wd+2.0D0 ,ELB+5.0D0,xx,ELB+5.0D0 write(12,'(4(e15.7))') ww+wd+2.0D0 ,ELB+5.0D0+GH_1,xx,ELB+5.0D0+GH_1 close(12) fnameW='_S_text2.txt' open(12, file=fnameW, status='replace') ! text2 (EL) dh=0.5D0 xx=-40.0D0 yy=ELB; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BL',trim(elstr) yy=ELB+3.0D0; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BL',trim(elstr) yy=TC_1; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BL',trim(elstr) yy=ELF; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BL',trim(elstr) yy=ELG; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BL',trim(elstr) yy=ELC; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BL',trim(elstr) yy=ELT; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BL',trim(elstr) xx=45.0 yy=SWL; elstr='';write(elstr,'(f7.3)') yy; elstr='SWL EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a15)') xx,yy+dh,8,0,0,'BR',trim(elstr) yy=FSL; elstr='';write(elstr,'(f7.3)') yy; elstr='FSL EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a15)') xx,yy+dh,8,0,0,'BR',trim(elstr) yy=MOL; elstr='';write(elstr,'(f7.3)') yy; elstr='MOL EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a15)') xx,yy+dh,8,0,0,'BR',trim(elstr) yy=ELB+5.0D0+GH_1; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BR',trim(elstr) yy=ELB+5.0D0; elstr='';write(elstr,'(f7.3)') yy; elstr='EL.'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a11)') xx,yy+dh,8,0,0,'BR',trim(elstr) xx=-ww-0.5D0*wu; yy=TC_1; elstr='';write(elstr,'(f4.2)') PS_1; elstr='@~f@~'//trim(adjustl(elstr)) write(12,'(2(e15.7),3(i3),a3,1x,a9)') xx,yy,8,0,0,'ML',trim(elstr) close(12) ! turbine drawing dummy='S_tb1';call TURBINE(ELF,ELB,TC_1,DG_1,HG_1,D1_1,OS_1,PS_1,GH_1,dummy) stop contains subroutine TURBINE(ELF,ELB,TC,DG,HG,D1,OS,PS,GH,fn) real(8),intent(in)::ELF,ELB real(8),intent(in)::TC,DG,HG,D1,OS,PS,GH character(len=50),intent(in)::fn real(8),parameter::theta=5.0D0/180.0D0*pi real(8)::DB,y,r,d,l,wk integer::i character(len=50)::fnameW !(1) generator fnameW='_'//trim(adjustl(fn))//'_1.txt' open(12, file=fnameW, status='replace') write(12,'(2(e15.7))') -0.5D0*DG,ELF-HG write(12,'(2(e15.7))') 0.5D0*DG,ELF-HG write(12,'(2(e15.7))') 0.5D0*DG,ELF write(12,'(2(e15.7))') -0.5D0*DG,ELF write(12,'(2(e15.7))') -0.5D0*DG,ELF-HG close(12) !(2) axis fnameW='_'//trim(adjustl(fn))//'_2.txt' open(12, file=fnameW, status='replace') wk=1.0D0 write(12,'(2(e15.7))') -0.5D0*wk,TC write(12,'(2(e15.7))') 0.5D0*wk,TC write(12,'(2(e15.7))') 0.5D0*wk,ELF-HG write(12,'(2(e15.7))') -0.5D0*wk,ELF-HG write(12,'(2(e15.7))') -0.5D0*wk,TC close(12) !(3) draft tube fnameW='_'//trim(adjustl(fn))//'_3.txt' open(12, file=fnameW, status='replace') DB=ELB+3.0D0 write(12,'(2(e15.7))') -0.5D0*D1 ,TC r=5.0D0+0.5D0*D1;y=DB+r do i=0,90 wk=dble(i)/180.0*pi write(12,'(2(e15.7))') 5.0D0-r*cos(wk),y-r*sin(wk) end do write(12,'(2(e15.7))') ww+wd ,DB+2.0D0 write(12,'(2(e15.7))') ww+wd+2.0D0,DB+2.0D0 write(12,'(2(e15.7))') ww+wd+2.0D0,DB+2.0D0+GH write(12,'(2(e15.7))') ww+wd ,DB+2.0D0+GH r=5.0D0-0.5D0*D1;y=DB+0.6D0*GH+r do i=0,90 wk=dble(i)/180.0*pi write(12,'(2(e15.7))') 5.0D0-r*sin(wk),y-r*cos(wk) end do write(12,'(2(e15.7))') 0.5D0*D1 ,TC close(12) !(4) turbine fnameW='_'//trim(adjustl(fn))//'_4.txt' open(12, file=fnameW, status='replace') wk=D1/3.0D0 write(12,'(2(e15.7))') -(OS-0.5D0*PS),-0.5*wk+TC write(12,'(2(e15.7))') (OS-0.5D0*PS),-0.5*wk+TC write(12,'(2(e15.7))') (OS-0.5D0*PS), 0.5*wk+TC write(12,'(2(e15.7))') -(OS-0.5D0*PS), 0.5*wk+TC close(12) !(5) downstream casing fnameW='_'//trim(adjustl(fn))//'_5.txt' open(12, file=fnameW, status='replace') r=0.9D0*0.5D0*PS do i=1,359 wk=dble(i)/180.0D0*pi write(12,'(2(e15.7))') (OS-0.5D0*PS+r)+r*cos(wk),TC+r*sin(wk) end do close(12) !(6) upstream casing fnameW='_'//trim(adjustl(fn))//'_6.txt' open(12, file=fnameW, status='replace') r=0.5D0*0.5D0*PS do i=1,359 wk=dble(i)/180.0D0*pi write(12,'(2(e15.7))') -(OS-0.5D0*PS+r)+r*cos(wk),TC+r*sin(wk) end do close(12) end subroutine TURBINE end program f90_PSS