저는 DoL 내의 문제에 직면 한 Fortran의 신참입니다. Matlab에서 사용할 MEX 파일에 대한 포트란 코드를 프로그래밍 중입니다. k와 z의 정의에 문제가 있다고 가정하지만 그 이유는 알 수 없습니다. 어쩌면 너희들은 내가 잘못하고있는 것을 나에게 암시 할 수있다. 고마워요!루프 매개 변수를 숫자가 아닌 문자로 간주하십시오.
오류 메시지 및 코드 innerloops.F 할 K = 1, 4
오류 : (1) innerloops.F 에서 문 라벨에 숫자가 아닌 문자 할 K = 1, 4
오류 : (1) innerloops.F 에서 분류 할 문 Z = 1, 25
오류를 수행 숫자가 아닌 문자를 문 라벨 (1) innerloops.F 에서 할 Z = 1, 25 012,380,073,162,755,231, 오류하십시오 .F 접미사 기본적으로 컴파일러를 사용하여 (1)
C Computational routine
subroutine innerloops(J,c1,c2,c3,c4,n1,n2,n3,n4,y,m,n)
mwSize m, n
integer k, z
real*8 J(m,n), y(4,1), c1, c2, c3, c4, n1, n2, n3, n4
real*8 QuadRuleX(25,2)
real*8 QuadRuleW(25,1)
real*8 X(5,1), r, t
real*8 P, c_h, n_h
integer h = 10
C Gaussian Points
X(1) = -.906179
X(2) = -.538469
X(3) = 0
X(4) = .538469
X(5) = .906179
C Corresponding QuadRule points
QuadRuleX(1,1) = X(1)
QuadRuleX(1,2) = X(1)
C .... (snipped it here for readability)
C Corresponding weights
QuadRuleW(1) = Y(1)*Y(1)
QuadRuleW(2) = Y(2)*Y(1)
C .... (snipped it here for readability)
do k = 1, 4
do z = 1, 25
r = QuadRuleX(z,1)
t = QuadRuleX(z,2)
P = shape(k,r,t)
c_h = c1*shape(k,r,t)
n_h = n1*shape(k,r,t)
y(k,1) = (P*((((h-1)*c_h)/(h-1)*c_h+1))*n_h*(2-n_h)-n_h)
continue
continue
return
end do
end subroutine innerloops
C defining the shape functions
Function shape(q,c,d)
implicit none
real q,c,d,P
if (q == 1) then
P = 1/4*(c-1)*(d-1)
else if (q == 2) then
P = -1/4*(c+1)*(d-1)
else if (q == 3) then
P = 1/4*(c+1)*(d+1)
else if (q == 4) then
P = -1/4*(c-1)*(d+1)
endif
return
end Function shape
do k = 1, 4'에 대한 "end do"가 누락 된 것처럼 보입니다. –
예. 아마도'continue' 문 대신에'end do'를 원할 것입니다. 그리고'return' 문 다음에'end do'를 제거하십시오 - 접근 할 수 없습니다. 들여 쓰기는 코드를 읽기 쉽게 만듭니다. –
오류의 원인이 아니지만 정수 나누기 1/4을 알아두면 0이됩니다. 최고 1./4. .. – agentp