지금 작성중인 코드인데 중간에 연속구문을 사용한 곳에서 에러가 발생하는데 이유가 뭘까요?
program slope1
real B(100), yup(100), ydn(100), x(5), y(5), c, ifa, uw, r, n, k1, k2, rb(100)
+ rbc(100), A(100), l, w, ad(100), m(100), ryc(100), ws, wc, fs
integer chk1
open(100,file='output.dat')
write(*,*) 'x1 ='
read (*,*) x(1)
y(1)=0
write(*,*) 'x2 ='
read (*,*) x(2)
write(*,*) 'y2 ='
read (*,*) y(2)
write(*,*) 'x3 ='
read (*,*) x(3)
write(*,*) 'y3 ='
read (*,*) y(3)
write(*,*) 'r ='
read (*,*) r
write(*,*) 'N ='
read (*,*) n
write(*,*) 'UW ='
read (*,*) uw
write(*,*) 'c ='
read (*,*) c
write(*,*) 'IFA ='
read (*,*) ifa
k1=(x(3)-x(1))*(x(3)-x(1))+y(2)*y(2)
if(r.gt.sqrt(k1))then
chk1=2
elseif(r.eq.sqrt(k1)) then
chk1=1
else
write(100,*) 'Radius is small'
stop
endif
x(4)=(2*x(3)-sqrt(4*x(3)*x(3)-4*(x(3)*x(3)+y(3)*y(3)-r*r)))/2
x(5)=(2*x(3)+sqrt(4*x(3)*x(3)-4*(x(3)*x(3)+y(2)*y(2)+y(3)*y(3)-r*r-
+ 2*y(2)*y(3))))/2
k1=(x(5)-x(4))/2
k2=x(4)
do i=2,n
if(x(2).ge.(k2+k1)) then
if(x(2)-k2-k1.gt.k1)then
k2=k2+k1
b(i)=k2
else
b(i)=x(2)
k2=x(2)
endif
else
k2=k2+k1
b(i)=k2
endif
enddo
b(1)=x(4)
do i=1,n+1
if (i.eq.(n+1)) b(i+1)=x(5)
enddo
do i=1,n+1
if(x(2).ge.b(i)) then
yup(i)=(y(2)/(x(2)-x(1)))*b(i)-x(1)*y(2)/(x(2)-x(1))
else
yup(i)=y(2)
endif
enddo
do i=1,n (여기랑)
k1=2*y(3)+sqrt(4*y(3)*y(3)-4*(y(3)*y(3)+rbc(i)*rbc(i)+x(3)*x(3)-r*r-
+ 2*x(3)*b(i)))/2
k2=(2*y(3)-sqrt(4*y(3)*y(3)-4*(y(3)*y(3)+rbc(i)*rbc(i)+x(3)*x(3)-r*r-
+ 2*x(3)*b(i))))/2
if(y(3).ge.k2) then
ryc(i)=k2
else
ryc(i)=k1
endif
enddo
do i=1,n
rb(i)=b(i+1)-b(i)
enddo
do i=1,n
rbc(i)=b(i)+rb(i)/2
enddo
A(1)=0.5*rb(1)*(yup(2)-ydn(2))
do i=1,n
if (i.eq.n) A(i)=0.5*rb(i)*(yup(i-1)-ydn(i-1))
enddo
do i=2,n-1
a(i)=0.5*rb(i)*((yup(i)-ydn(i))+(yup(i+1)-ydn(i+1)))
enddo
l=sqrt(rb(1)*rb(1)+ydn(2)*ydn(2))
do i=1,n
if (i.eq.n) l=l+sqrt(rb(i)*rb(i)+ydn(i-1)*ydn(i-1))
enddo
do i=2,n-1
l=l+sqrt((ydn(i+1)-ydn(i))*(ydn(i+1)-ydn(i))+rb(i)*rb(i))
enddo
do i=1,n
w=w+uw*A(i)
enddo
do i=1,n (여기)
k1=(2*y(3)+sqrt(4*y(3)*y(3)-4*(y(3)*y(3)+b(i)*b(i)+x(3)*x(3)-r*r
+ -2*x(3)*b(i))))/2
k2=(2*y(3)-sqrt(4*y(3)*y(3)-4*(y(3)*y(3)+b(i)*b(i)+x(3)*x(3)-r*r
+ -2*x(3)*b(i))))/2
if(y(3).ge.k2) then
ydn(i)=k2
else
ydn(i)=k1
endif
enddo
do i=1,n
m(i)=-(rbc(i)-x(3))/(ryc(i)-y(3))
ad(i)=atan(m(i))
enddo
do i=1,n
ws=ws+uw*a(i)*sin(ad(i))
wc=wc+uw*a(i)*cos(ad(i))
enddo
fs=(c*l+wc*tan(ifa))/ws
write(100,*) 'Fs=', fs
stop
end
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.