안녕하세요.
오늘은 OpenFOAM 내부구조에 대해 이어서 설명하려고 해요.
OpenFOAM 코드를 수정하거나 개발할 때 유용한 정보이니 코드를 보며 이해되실 때까지 보는 것을 추천드려요.
저번 시간에는 클래스 구조 분석에서 RTS 시스템과 objectRegistry 구조에 대해 설명했는데요.
이번 시간에는 Field 클래스의 구조에 대해 공부해 보려 해요.
1. Field 클래스
Field 클래스는 OpenFOAM의 스칼라, 벡터, 텐서 필드를 처리하는 핵심 구성 요소로, 계층적 구조를 통해 효율적인 필드 연산과 데이터 관리를 제공해요.
(1) Field 클래스 계층 구조
1) UList/List : 기본적인 리스트 구조
- UList와 List : OpenFOAM의 기본 1차원 배열 템플릿으로 메모리 효율성을 위해 연속적인 C 스타일 배열 사용
2) Field 클래스 : List를 상속하여 수학적 연산 기능을 추가한 템플릿 클래스
OpenFOAM에서는 가독성을 위해 typedef 선언을 통해 스칼라, 벡터, 텐서 등을 사용해요.
- Field 클래스는 필드 간 수학적 연산이 가능해요.
3) dimensionedField 클래스 : Field를 상속하여 단위정보, mesh 참조, 입출력기능을 추가
- dimensionedField 생성
dimensionedField 예제를 보면 압력을 IOobject로 p 생성하고 scalar와 volMesh 정의
마지막 줄 dimensionedScalar에서 필드 이름, 단위, 초기값 설정
- 단위 검사
4) GeometricField 클래스 : internal 필드와 boundary 필드를 포함한 클래스
- GeometricField 템플릿 매개변수
1) type : 필드의 데이터 타입 (scalar, vector, tensor)
2) patchField : 경계조건 타입 (fvPatchField)
3) GeoMesh : mesh 타입 (volMesh, surfaceMesh, pointMesh)
- GeometricField의 정의
코드의 가독성을 위해 typedef 선언으로 간단히 정의
- 필드 구성요소 접근
결론
오늘은 OpenFOAM 내부구조 중 Field 클래스의 구조에 대해 알아봤어요.
Field 클래스는 OpenFOAM의 스칼라, 벡터, 텐서 필드를 처리하는 핵심 구성 요소로, 계층적 구조를 통해 효율적인 필드 연산과 데이터 관리를 제공해요.
이 부분 잊지 않고 숙지해 주셨으면 좋겠어요.
오늘도 읽어 주셔서 감사해요. 질문은 댓글로 부탁드려요.
'OpenFOAM programing' 카테고리의 다른 글
OpenFOAM 새로운 functionObjects 추가 - normalizedHelicity (0) | 2025.07.04 |
---|---|
OpenFOAM 새로운 경계조건 추가 - parabolic Velocity (3) | 2025.07.01 |
OpenFOAM 솔버 수정 및 컴파일 과정 소개 (4) | 2025.06.25 |
OpenFOAM 빌드 시스템의 이해 (2) | 2025.06.19 |
OpenFOAM 내부구조의 이해 1 (3) | 2025.06.17 |