작성일 : 2009년 12월 5일
번역일 : 2016년 2월 6일
크롬 브라우저로 보시는 것을 권장해 드립니다.
------------------------------------------------------------
----- OpenFOAM 소스코드를 다루는 문법 기본 -----
------------------------------------------------------------
들어가기 |
인수리스트클래스 argList를 사용해본다.
사용 버전 |
OpenFOAM 1.6
프로그램 |
이전과 같이 소스디렉토리식을 작성해보자. 디렉토리를 만들고 그 안에 아래와 같이 준비한다.(02-argList.tar.gz)
- Make/files
- Make/options
- argList.C
Make/files는 다음과 같다.
Make/files
argList.C
EXE = argList
위 경우, 소스디렉토리 내에 "argList"라는 프로그램이 작성됨을 나타낸다. Make/options도 이전과 같다.
Make/options
EXE_INC = -I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = -lfiniteVolume
arcList.C는 프로그램의 인수를 다루는 argList를 사용하는 프로그램이다.
argList.C
#include "fvCFD.H"
int main(int argc, char *argv[])
{
argList args(argc, argv);
if(!args.checkRootCase()){
FatalError.exit();
}
Info << "root path: " << args.rootPath() << endl;
Info << "case name: " << args.caseName() << endl;
Info << "path: " << args.path() << endl;
return 0;
}
argList의 오브젝트는 프로그램의 인수정보 argc, argv를 넘겨받아 작성한다. 이것은 프로그램의 경로나 케이스명 등의 정보를 가지고 있다. argList의 정의를 보면 더 자세히 알 수 있다. OpenFOAM 1.6에서는 src/OpenFOAM/global/argList/argList.H에 정의되어 있다.
checkRootCase()가 불러오는 것은 src/OpenFOAM/include/setRootCase.H에 적혀있으나, argList.H의 정의를 보면
//- Check root path and case path
bool checkRootCase() const;
따라서 위의 처리는 루트경로와 케이스경로를 체크하여 문제가 있으면 에러의 형태로 프로그램을 종료시키게 된다.
arcList.H 내의 public 이하의 것이 유저가 접근가능한 것들을 나타내고 있다. 이것을 보면 어떤 정보를 얻을수 있는지 어떤 정보를 설정할수 있는지를 알수 있다. 예를들면,
public:
...
//- Return root path
const fileName& rootPath() const
...
이것을 사용하면 루트경로를 얻을 수 있음을 나타내고 있다.
참고로 이런 내용을 확인하거나 코드를 작성할때 argList.H와 같은 OpenFOAM소스코드를 vi 와 같은 에디터로 보는것이 아니라 Eclipse상에서 확인하고 있다. 이러한 개발용툴을 사용하면 소스코드의 검색이 훨씬 수월하다.
컴파일 |
소스디렉토리내에서(Make내부가 아니다!), wmake를 실행시킨다. 컴파일에 성공하면 argList라는 실행파일이 생성된다. 실행해 보자.
$ wmake
$ ./argList
mini를 실행시키면 "minimum OpenFOAM program"이라고 표시될 것이다.
argList를 실행시키면 루트경로와 케이스이름 등을 표시하게 된다.
'OpenFOAM > 소스코드 파해치기' 카테고리의 다른 글
[OpenFOAM 소스코드 파해치기] blockMesh (0) | 2016.02.09 |
---|---|
[OpenFOAM 소스코드 파해치기] 격자 (0) | 2016.02.09 |
[OpenFOAM 소스코드 파해치기] 시간 (3) | 2016.02.06 |
[OpenFOAM 소스코드 파해치기] 단순 프로그램 (0) | 2016.02.06 |
[OpenFOAM 소스코드 파해치기] 시리즈 목차 (0) | 2016.02.06 |