program f90_RCmSD ! ***************************************************** ! Stress of RC against only Moment ! ***************************************************** implicit none real(8),parameter::nn=15.0D0 integer::iflag real(8)::hh,bb,As_t,dd_t,As_c,dd_c,MO real(8)::sig_cc,sig_sc,sig_st character(len=50)::dummy ! Data input call getarg(1,dummy);read(dummy,*) iflag call getarg(2,dummy);read(dummy,*) hh call getarg(3,dummy);read(dummy,*) bb call getarg(4,dummy);read(dummy,*) dd_t call getarg(5,dummy);read(dummy,*) dd_c call getarg(6,dummy);read(dummy,*) As_t call getarg(7,dummy);read(dummy,*) As_c call getarg(8,dummy);read(dummy,*) MO sig_cc=0.0D0 sig_sc=0.0D0 sig_st=0.0D0 if(iflag==1)call S_SINGLE(MO,nn,hh,bb,As_t,dd_t,sig_cc,sig_st) if(iflag==2)call S_DOUBLE(MO,nn,hh,bb,As_t,dd_t,As_c,dd_c,sig_cc,sig_sc,sig_st) write(6,'(a)') 'iflag,hh,bb,dd_t,dd_c_As_t,As_c,MO' write(6,'(i3,6(",",e15.7))') iflag,hh,bb,dd_t,dd_c,As_t,As_c write(6,'(a)') 'MO,sig_cc,sig_sc,sig_st' write(6,'(e15.7,3(",",e15.7))') MO,sig_cc,sig_sc,sig_st stop contains subroutine S_SINGLE(MO,nn,hh,bb,As_t,dd_t,sig_cc,sig_st) real(8),intent(in)::MO,nn,hh,bb,As_t,dd_t real(8),intent(out)::sig_cc,sig_st real(8)::xx,dd dd=hh-dd_t xx=nn*As_t/bb*(-1.0D0+sqrt(1.0D0+2.0D0*bb*dd/nn/As_t)) sig_cc=2.0D0*MO/bb/xx/(dd-xx/3.0D0) sig_st=nn*sig_cc*(dd-xx)/xx end subroutine S_SINGLE subroutine S_DOUBLE(MO,nn,hh,bb,As_t,dd_t,As_c,dd_c,sig_cc,sig_sc,sig_st) real(8),intent(in)::MO,nn,hh,bb,As_t,dd_t,As_c,dd_c real(8),intent(out)::sig_cc,sig_sc,sig_st real(8)::xx,dc,dd,work dd=hh-dd_t dc=dd_c xx=-nn*(As_t+As_c)/bb+sqrt((nn*(As_t+As_c)/bb)**2+2.0D0*nn/bb*(dd*As_t+dc*As_c)) work=bb*xx/2.0D0*(dd-xx/3.0D0)+nn*As_c*(xx-dc)/xx*(dd-dc) sig_cc=MO/work sig_sc=nn*sig_cc*(xx-dc)/xx sig_st=nn*sig_cc*(dd-xx)/xx end subroutine S_DOUBLE end program f90_RCmSD