박사 학위 논문의 사례 연구에 따르면 CHEMKIN-II 에서 포트란 서브 루틴의 간격 확장이 필요합니다 (링크에 대한 사과; Sandia National Laboratory에서 더 이상 배포 할 수없는 패키지에 대한 것임). CHEMKIN-II는 연소 화학에 사용되는 화학 패키지입니다. 연소에 사용되는 표준 패키지이기 때문에 다른 패키지를 사용할 수 없습니다 (또는 오히려 선호하지 않을 것입니다).
필요한 간격 연장을 얻기 위해 DAEPACK 이라는 자체 개발 도구를 사용하고 있습니다.. 몇 년 전에 32 비트 OS (gcc 2.95에 해당하는 libstdc 버전으로)에서 필요한 CHEMKIN-II 서브 루틴의 필요한 간격 확장을 생성 할 수 있었지만 그 이후로 떨어진 오래된 바이너리 사용하고 엄청난 시련이 될 것입니다 (사용한 다른 모든 소프트웨어의 32 비트 버전을 찾아야하기 때문입니다). 이 패키지의 소스 코드도 독점적이지만 MIT에서 처음 개발되었으며 MIT에서 근무하기 때문에 (많은 노력을 기울인 후) DAEPACK의 소스 코드를 얻을 수있었습니다. 내가 가지고있는 소스 코드를 사용하여 64 비트 버전의 Linux와 호환되는 DAEPACK 버전과 gcc 4.xx에 해당하는 libstdc 버전을 컴파일 할 수 있었지만이 소스 코드는 오래된 것으로 생각됩니다. 논문을 완성하는 데 필요한 간격 확장 코드를 성공적으로 생성하지 못하는 실행 파일로 컴파일합니다. 소스 코드를 수정하는 데 도움을주기 위해 개발자에게 연락했지만 이전에 개발자와 연락 한 후에는 소스 코드를 수정하는 데 시간이 걸린다는 것을 알고 있습니다.
큰 문제 가 있습니다. 자금이 부족하여 졸업해야 할 때까지 6 개월 남았습니다. 필자는 박사 학위 논문을 성공적으로 마치기 위해 DAEPACK을 신속하게 수정하기 위해 개발자에게 의지 할 수 없습니다.
다음을 수행하는 패키지가 필요합니다.
- 간격 확장, Taylor 모델 (간격 산술 사용) 및 거의 임의의 포트란 77 코드의 파생물을 생성합니다. DAEPACK에 의해 구문 분석되지 않은 유일한 구조는
DO
루프와IF
명령문 이라고 생각합니다 . Taylor 모델이 필요하기 때문에 코드에는 자동 차별화 (AD) 기능도 있어야합니다. - Fortran 77 코드의 소스 간 변환으로 이러한 간격 확장 및 Taylor 모델을 생성합니다 (즉, 간격 확장 및 Taylor 모델을 계산하는 소스 코드를 생성하기 위해 컴파일러와 같이 소스 코드를 구문 분석합니다).
핀치에서, 위 두 가지를 수행하는 소프트웨어를 Fortran 77 코드 대신 C 코드로 사용한 다음 모든 것을 통과시킬 수 f2c
있습니다. 나는 모든 것을 통과 시킬지 f2c
조차 알지 못하기 때문에이 방법으로하지 않는 것을 선호 하지만 필사적입니다.
필사적으로 박사 과정 학생을 도울 수 있습니까?
몇 가지 가능한 제안을 예상하기 위해 시간 제약이있는 경우 나에게 적합하지 않은 접근법이 있습니다.
- DAEPACK을 작동시키기 위해 더 열심히 노력하고 있습니다. 날 믿어 봐 그리고 개발자를 자주 괴롭 힙니다.
- 객체 지향 (또는 객체 지향) 접근법을 사용하여 인터벌 확장 또는 Taylor 모델을 계산하는 도구. CHEMKIN-II (또는 다른 유사한 큰 라이브러리)를 새로운 유형으로 다시 코딩 할 시간이 없습니다. 너무 커.
- Fortran 77/90 또는 C 이외의 다른 언어 사용. CHEMKIN-II 코드는 Fortran에 있습니다. 을 사용하여 C로 변환
f2c
하거나 필요한 경우 TChem이라는 CHEMKIN-II의 Sandia 기반 클론을 사용하십시오. 나의 오래된 결과는 CHEMKIN-II를 사용합니다; 내 새로운 결과는 이전 결과를 복제해야하며 Cantera는 사례 연구 및 단위 테스트를 기반으로 CHEMKIN-II의 기능을 복제하지 않을 것입니다. 또한 저보다 앞서 대학원생은 CHEMKIN-II 소스 코드에 약간의 흑 마법을 사용하여 간격 산술이 특히 잘 작동하도록했습니다. 다른 패키지로 복제하기가 어렵습니다.