2017-01-16 1 views
-3

일부 ODE를 해결하고 ODEPACK과 같은 포트란 코드 을 찾고 있었지만 포트란 90 버전을 찾을 수 없었습니다. fortran 90에 OPEPACK과 같은 ode 해석기 코드가 있습니까?fortran 90에 OPEPACK과 같은 ode 해석기 코드가 있습니까?

+2

실적이 좋지 않은 검색 유형은 무엇입니까? 우리는 도구를 제안하기 위해 여기에 있지 않습니다. – Ross

답변

2

ODEPACK의 Fortran 77 버전은 Fortran 90에서 호출 할 수 있습니다. Fortran은 가장 낮은 버전과 호환되는 프로그래밍 언어 중 하나입니다. 그들은 오래된 코드를 모두 무효로하고 싶지 않았습니다. 주 코드로 Fortran 90을 사용한다고해도 ODEPACK과 같은 구형 라이브러리를 사용할 수 있습니다.

+0

Fortran은 이전 버전과의 호환성 때문에 유명 해졌고, JuYongLee가 Fortran 90 프로그램에서 Fortepack 77 코드 (컴파일러에 따라 레거시 코드가 허용됨을 나타내는 플래그를 추가해야 할 수도 있음)를 사용하는 것을 막을 수있는 방법은 없습니다. 그래도 잘 이해하면 JuYongLee는 "사용하기 쉬운"ODE 해결사를 찾고 있습니다. – Pap

+0

정말 고맙습니다. – JuYongLee

2

내가하는 일은 레거시 코드의 사용을 단순화하는 포트란 90/95 서브 루틴을 구현하여 메인 프로그램이 레거시 코드에 전혀 액세스 할 수 없도록하는 것입니다. Fortran 90에서 ODEPACK을 다시 구현할 필요는 없습니다. 휠을 재발 명할 필요는 없습니다. 특히 "휠"이 ODEPACK 인 경우, 이는 내가 지금까지 본 최고의 ODE 솔버입니다.

얼마 전에 시도해보십시오. DLSODAR_F95을 구현했습니다. 사실 ODEPACK의 가장 강력하고 (정교한) ODE 솔버, 즉 DLSODAR의 사용을 단순화하는 Fortran 95 모듈입니다. 이 모듈은 원래 DLSODAR 서브 루틴 대신 사용할 수있는 공용 서브 루틴 ODE_DLSODAR을 제공합니다. ODE_DLSODAR은 사용하기가 훨씬 쉬우 며 동일한 기능을 제공합니다.

원래의 Fortran 77 코드는 많은 인수가 전달되어야하며, 대부분 해결할 ODE에 따라 변경 될 필요가 없으며 필요한 변경은 간단합니다. ODE_DLSODAR은 이러한 모든 인수를 설정하고 DLSODAR을 내부적으로 호출하여 문제를 해결합니다. 필요에 따라 ODE_DLSODAR에 선택적 인수를 전달하여 DLSODAR을 완전히 제어 할 수 있지만 일반적으로 매우 적은 인수로 ODE_DLSODAR을 호출하면 모듈이 나머지를 처리합니다.

링크의 패키지에는 DLSODAR_F95 사용 방법에 대한 몇 가지 예제가 포함되어 있습니다. DLSODAR 대신에 다른 ODEPACK의 솔버가 필요하다면 DLSODAR_F95와 비슷한 모듈을 구현해야한다고 생각합니다.

+0

정말 고맙습니다. – JuYongLee