[완료]포트란 서브루틴에 관한 질문2입니다.

gamsa의 이미지

다음과 같은 서브루틴을 사용 했는데요

Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
dimension A(3000),B(3000),C(3000),D(3000),ef(3000),dgi(3000)
Do 970 i=1,n
A(i)=-bi*lam*ef(i)
B(i)=-(2**(3.d0/2.d0))*bi*ga*lam*dgi(i)
C(i)=-bi*lam*(ef(i)-2*ga*dgi(i))
D(i)=-(2**(3.d0/2.d0))*bi*ga*lam*dgi(i)
970 continue
return
end

이런 오류가 생겼습니다.

무엇이 문제인가요?
gfm_dd.f: In subroutine `potential':
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #1 (named `a') of `potential' is one precision at (2) but is some other
precision at (1) [info -f g77 M GLOBALS]
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #2 (named `b') of `potential' is one precision at (2) but is some other
precision at (1) [info -f g77 M GLOBALS]
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #3 (named `c') of `potential' is one precision at (2) but is some other
precision at (1) [info -f g77 M GLOBALS]
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #4 (named `d') of `potential' is one precision at (2) but is some other
precision at (1) [info -f g77 M GLOBALS]
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #6 (named `ef') of `potential' is one precision at (2) but is some othe
r precision at (1) [info -f g77 M GLOBALS]
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #7 (named `dgi') of `potential' is one precision at (2) but is some oth er precision at (1) [info -f g77 M GLOBALS]
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #8 (named `bi') of `potential' is one precision at (2) but is some othe r precision at (1) [info -f g77 M GLOBALS]
gfm_dd.f:93: warning:
call potential(Va,Vb,Vc,Vd,nx,f,g,b,lambda,gamm)
1
gfm_dd.f:155: (continued):
Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
2
Argument #10 (named `ga') of `potential' is one precision at (2) but is some oth er precision at (1) [info -f g77 M GLOBALS]
저의 우문에 교수님들의 현답 기다리겠습니다. 매번 감사합니다.

geoplab의 이미지

Subroutine potential(A,B,C,D,n,ef,dgi,bi,lam,ga)
dimension A(3000),B(3000),C(3000),D(3000),ef(3000),dgi(3000)
Do 970 i=1,n
A(i)=-bi*lam*ef(i)
B(i)=-(2**(3.d0/2.d0))*bi*ga*lam*dgi(i) <- double precision?
C(i)=-bi*lam*(ef(i)-2*ga*dgi(i))
D(i)=-(2**(3.d0/2.d0))*bi*ga*lam*dgi(i) <- double precision?
970 continue
return
end

루프문에 맞춰서 보면 아래와 같이 선언하는게 좋겠지요.

real A(3000),C(3000),ef(3000),dgi(3000)
double precision B(3000),D(3000)

여기서 ef 와 dgi 는 메인프로그램에서 어떤식으로 정의되었는지 모르므로 그냥 real로 선언했습니다.
가능하면 서브루틴 내에서 입출력 변수들을 정의해 놓는게 나중을 위해서도 좋습니다.
double precision을 굳이 2의 지수승에 왜 사용했는지 의문이 생기는군요.
덧붙여서 사족을 달자면, 저는 dimension을 가급적이면 안사용합니다.
그럼 조금이나마 도움이 되었는지 모르겠네요. ^^

gamsa의 이미지

감사합니다. 큰 도움 되었습니다. 아프로도 잘 부탁드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.