저는 유한 요소 분석 프로그램의 fortran 서브 루틴을 연구하고 있습니다. 공통 블록을 사용하고 있으므로 두 서브 루틴 사이에 변수를 공유해야합니다 (EDIT : 모듈이 더 좋습니다). 문제는 일부 변수 만 다른 서브 루틴에 전달되고 다른 변수는 전달되지 않는다는 것입니다. 첫 번째 서브 루틴 :Fortran에서 공통 블록을 사용하는 문제
내 코드는 다음과 같다
real knom, krot
COMMON /kVAR/ kmom, krot
SAVE /kVAR/
두 번째 서브 루틴 내가 같은 구문을 사용합니다. 나는 txt 파일에 각 서브 루틴에 kmom 및 krot 값을 작성하여 결과를 제어하고 있습니다 :
write(6,*) 'I am in URDFIL', or 'I am in UFIELD'
1 KINC, kmom, krot
결과는 다음과 같습니다
I am in URDFIL 1 -16700 -2.3857285E-03
I am in UFIELD 2 -16700 -1155769886
그래서 krot의 값이 손실됩니다. 모든 조언을 가장 환영합니다.
주앙
해결 :
module shared_var
implicit none
real*8 kmom, krot
save
end module shared_var
그리고 각 서브 루틴
는 :use shared_var
'common' 대신'module'을 사용하여 _one_ 선언 만하면됩니다. – ja72
네, 제안 해 주셔서 감사합니다! – jpcgandre