Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
implicit none real :: span, bre, hei, aspan, bspan, cspan, x1, x2, y1, y2, xl real :: a, b, x, f, last, s, ss, ds(10000,2), bx(10000), k, m,bb,bbb,fb integer :: i,ios,data character(1000) :: filename character(1000) :: dirname character(4) :: csv character(1000) :: filecsv print *,'支間中央での一点載荷における試験にて' print *,'JSCE G552に従い曲げ靱性係数を求めます。(対応:csv形式のみ)' print *,'・一列目に荷重(kN),二列目に変位(mm)' print *,'・荷重は正の値、変位は下側引張に対して負の値であること' print *,"求めたいファイル名を入力(拡張子不要)" read '(A)',filename print *,"曲げ試験におけるスパン(mm)を入力" read *,span print *,"供試体の幅(mm)を入力" read *,bre print *,"供試体の高さ(mm)を入力" read *,hei csv='.csv' filecsv=trim(adjustl(filename))//csv aspan=(span*1000)/150 bspan=nint(aspan) cspan=bspan/1000 open(11,file = filecsv) do i=1,90000 k=0 m=0 read(11,*,iostat=ios),k,m if(ios < 0)exit ds(i,1)=(k*(3000)*span)/(2*bre*hei*hei) ds(i,2)=abs(m) data=i end do close(11) print *,"読み込んだデータ数:",data x1=0 do i=1,90000 if( (x1 <= ds(i,2)).and.(ds(i,2) <= cspan+0.00001) )then !0.00001は安全マージン x1=ds(i,2) x2=ds(i+1,2) y1=ds(i,1) y2=ds(i+1,1) xl=cspan-ds(i,2) else if( ds(i,2) > cspan )exit end if end do a=((y2-y1)/(x2-x1)) b=(y1-a*x1) x=cspan last=f(x,a,b) do i=1,90000 if( ds(i+1,2) <= cspan )then bx(i)=ds(i+1,2)-ds(i,2) else if( ds(i+1,2) > cspan )exit end if end do s=0 do i=2,50000 if( ds(i+1,2) <= cspan )then s=s+(( ds(i,1)+ds(i+1,1) )*(bx(i)/2)) else if( ds(i+1,2) > cspan )exit end if end do ss=s+( ds(2,1)*ds(2,2)/2 )+( (last+y1)*xl/2 ) bb=(last+y1)*xl/2 bbb=ds(2,1)*ds(2,2)/2 fb=ss/cspan print *,"面積(N/mm)は",ss print *,"曲げ靱性係数fbは",fb end function f(x,a,b) real :: a,b,x f=a*x+b return end