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