두 개의 시뮬레이션 코드를 함께 연결하려고합니다. 현재 3 개의 코드가 있지만 앞으로 더 많은 코드가있을 수 있습니다. 다음 다이어그램의 정보 교환을 생각할 수 있습니다 :포트란 네임 스페이스 충돌
sim1 <====> sim_main <=====> sim2
정보 교환은 각 측면에 한정된 인터페이스를 통해 이루어집니다.
나는 최근에 sim1의 공통 블록이 세그먼트 화 오류를 일으키는 sim2의 서브 루틴과 동일한 이름을 가진 문제를 진단했습니다. 쉬운 해결책은 sim1의 공통 블록 이름을 변경하는 것입니다.하지만 sim1의 개발자가 sim1-2.0을 사용하는 경우 해당 공통 블록의 이름을 다시 변경해야합니다. 이 같이
module sim2_mod
contains
include "sim2.f90"
end
이 sim2_mod 네임 스페이스에 SIM2의 모든 루틴을 넣어해야에 use
D 수 : 인터페이스가 상대적으로 제한되어 있기 때문에 더 나은 솔루션은 간단한 모듈을 작성하는 것입니다 경우, 궁금하네요 제한된 기준. 이것은 좋은 생각입니까? 나쁜 생각? 이것이 작동하지 않는 상황이 있습니까? sim2에서 사용되는 공통 블록에는 여전히 전역 범위가 있습니까?
감사합니다. 비록 개발자 코드를 현대화하려고 설득하지는 않을 것이라고 생각합니다. 나는 셰프와 같이 모호한 언어를 배우고, 'sim1'을 셰프로 번역 한 다음에 그것을 결합하는 것이 더 쉬울 것이라고 생각합니다. :-p – mgilson