module defary implicit none integer,parameter::NDmax=100 character(len=200)::strcom ! Comment integer::nd; ! Numbers of calculation integer::IE_inp(NDmax) ! 0:Inner pressure, 1:External pressure real(8)::PP_inp(NDmax) ! Water pressure real(8)::TT_inp(NDmax) ! Temperature change (+:increse of temperature) real(8)::aa_inp(NDmax) ! Internal radius of pressure tunnel real(8)::bb_inp(NDmax) ! Excavation radius real(8)::rr_inp(NDmax) ! Model edge radius real(8)::cc_inp(NDmax) ! Cover for reinforcement real(8)::ta_inp(NDmax) ! Equivalent thickness of inner reinforcement real(8)::tb_inp(NDmax) ! Equivalent thickness of outer reinforcement real(8)::Ec_inp(NDmax) ! Elastic modulus of concrete real(8)::nc_inp(NDmax) ! Poisson ratio of concrete real(8)::ac_inp(NDmax) ! Thermal expansion coefficient of concrete real(8)::Es_inp(NDmax) ! Elastic modulus of reinforcement real(8)::ns_inp(NDmax) ! Poisson ratio of reinforcement real(8)::as_inp(NDmax) ! Thermal expansion coefficient of reinforcement real(8)::Eg_inp(NDmax) ! Elastic modulus of bed rock real(8)::ng_inp(NDmax) ! Poisson ratio of bed rock end module defary !=========================== program f90_CPT !=========================== ! Stress analysis for Circular Pressure Tunnel ! using multiple cylindrical theorem use defary implicit none character(len=50)::fnameR,fnameW call getarg(1,fnameR) call getarg(2,fnameW) call main_part(fnameR,fnameW) stop contains !------------------------------------------------------------------------------ subroutine main_part(fnameR,fnameW) !------------------------------------------------------------------------------ character(len=50),intent(in)::fnameR,fnameW character(len=200)::dat character(len=20)::dummy integer::i,j,k,kk,io integer::ncomma(1:16) integer::iwork real(8)::rwork ! Data input open(11,file=fnameR,status='old') read(11,*) strcom kk=0 do read(11,'(a)',iostat=io) dat if(io<0)exit if(dat(1:1)/='#')then k=0 i=1 do j=index(dat(i:),',') if(j==0)exit k=k+1 ncomma(k)=i+j-1 i=i+j if(16<=k)exit end do kk=kk+1 dummy=dat(1:ncomma(1)-1) ;read(dummy,*) iwork; IE_inp(kk)=iwork dummy=dat(ncomma( 1)+1:ncomma( 2)-1) ;read(dummy,*) rwork; PP_inp(kk)=rwork dummy=dat(ncomma( 2)+1:ncomma( 3)-1) ;read(dummy,*) rwork; TT_inp(kk)=rwork dummy=dat(ncomma( 3)+1:ncomma( 4)-1) ;read(dummy,*) rwork; aa_inp(kk)=rwork dummy=dat(ncomma( 4)+1:ncomma( 5)-1) ;read(dummy,*) rwork; bb_inp(kk)=rwork dummy=dat(ncomma( 5)+1:ncomma( 6)-1) ;read(dummy,*) rwork; rr_inp(kk)=rwork dummy=dat(ncomma( 6)+1:ncomma( 7)-1) ;read(dummy,*) rwork; cc_inp(kk)=rwork dummy=dat(ncomma( 7)+1:ncomma( 8)-1) ;read(dummy,*) rwork; ta_inp(kk)=rwork dummy=dat(ncomma( 8)+1:ncomma( 9)-1) ;read(dummy,*) rwork; tb_inp(kk)=rwork dummy=dat(ncomma( 9)+1:ncomma(10)-1) ;read(dummy,*) rwork; Ec_inp(kk)=rwork dummy=dat(ncomma(10)+1:ncomma(11)-1) ;read(dummy,*) rwork; nc_inp(kk)=rwork dummy=dat(ncomma(11)+1:ncomma(12)-1) ;read(dummy,*) rwork; ac_inp(kk)=rwork dummy=dat(ncomma(12)+1:ncomma(13)-1) ;read(dummy,*) rwork; Es_inp(kk)=rwork dummy=dat(ncomma(13)+1:ncomma(14)-1) ;read(dummy,*) rwork; ns_inp(kk)=rwork dummy=dat(ncomma(14)+1:ncomma(15)-1) ;read(dummy,*) rwork; as_inp(kk)=rwork dummy=dat(ncomma(15)+1:ncomma(16)-1) ;read(dummy,*) rwork; Eg_inp(kk)=rwork dummy=dat(ncomma(16)+1:len(trim(dat)));read(dummy,*) rwork; ng_inp(kk)=rwork end if end do close(11) nd=kk ! Making output file open(12, file=fnameW, status='replace') write(12,'(a)') trim(adjustl(strcom)) write(12,'(a)') '*Input data' write(12,'(a)') 'k,IE,PP,TT,aa,bb,rr,cc,ta,tb,Ec,nc,ac,Es,ns,as,Eg,ng' do i=1,nd write(12,'(i5,",",i5,16(",",f10.3))') k,IE_inp(i),& PP_inp(i),TT_inp(i),aa_inp(i),bb_inp(i),rr_inp(i),cc_inp(i),ta_inp(i),tb_inp(i),& Ec_inp(i),nc_inp(i),ac_inp(i),Es_inp(i),ns_inp(i),as_inp(i),Eg_inp(i),ng_inp(i) end do write(12,'(a)') '*Output data' write(12,'(a)') 'k,IE,Eg,dT,sr_c,st_c,sr_si,st_si,sr_so,st_so,sr_g,st_g,ua,ub' close(12) ! k : Sequence ! IE : Inner pressure (=0) or Outer pressure (=1) ! PP : Water pressure ! dT : Temperature change ! sr_c : Stress in the r-direction at inner surface concrete ! st_c : Stress in the t-direction at inner surface concrete ! sr_si : Stress in the r-direction of inner reinforcement ! st_si : Stress in the t-direction of inner reinforcement ! sr_so : Stress in the r-direction of outer reinforcement ! st_so : Stress in the t-direction of outer reinforcement ! sr_g : Stress in the r-direction at outer surface concrete or bed rock ! st_g : Stress in the t-direction at outer surface concrete or bed rock ! ua : Radial displacement of inner surface concrete ! ub : Radial displacement of outer surface concrete ! Execution of calculation do k=1,nd select case(IE_inp(k)) case(0) if(tb_inp(k)<=0)call main_sng_pin(fnameW,k) if(0max)then max=abs(ary(j,k)) s=j end if end do do j=1,n+1 dumy=ary(k,j) ary(k,j)=ary(s,j) ary(s,j)=dumy end do p=ary(k,k) do j=k,n+1 ary(k,j)=ary(k,j)/p end do do i=1,n if(i/=k)then d=ary(i,k) do j=k,n+1 ary(i,j)=ary(i,j)-d*ary(k,j) end do end if end do end do end subroutine STEGJ !------------------------------------------------------------------------------ end program f90_CPT !------------------------------------------------------------------------------