안녕하세요
오늘은 OpenFOAM 내 자동격자(snappyHexMesh) 설정 및 실행 2번째 시간이에요.
이번에는 snappyHexMeshDict 파일에 대해 알아볼게요.
snappyHexMeshDict 파일 설정
튜토리얼에 snappyHexMeshDict 파일을 살펴볼게요.
snappyHexMeshDict 파일은 6개의 큰 단락으로 이루어져 있어요.
1. castellatedMesh, snap, addLayer의 스위치가 있구요.
2. geometry는 snappyHexmeshDict 내에 쓰이는 stl파일면의 이름을 지정해 주고 특정 부분에 작은 격자를 생성하기 위한 volume의 위치를 지정해 줘요.
3. castellatedMeshControls에요. castellatedMeshControls는 2step~ 5step까지의 설정을 지정해 줘요.
4. snapControls는 6 step의 설정을 지정해 줘서 형상의 면을 잘 따라가게 해줘요
5. addLayersControls로 7 step의 설정을 지정해 줘서 벽면에 layer를 추가해 줘요.
6. meshQualityControls는 자동으로 생성된 격자의 Quality를 조정해 주는 곳이에요.
자 이제 본격적으로 알아볼까요?
snappyHexMeshDict 파일을 열면 제일 위에 사진과 같이 나와요.
castellatedMesh, snap, addLayer의 스위치를 설정하구요.
다음은 geometry가 설정되어 있어요.
motorBike.obj는 constant/triSurface 폴더 안에 있는 형상 파일이구요.
name은 snappyHexMesh 안에서 사용될 이름을 뜻해요.
형상 파일이 한면만 있다면 위와 같이 설정해 주면 돼요.
regions
{
front // 형상 파일 내 면 이름
{ name front_wall; } // snappyHexMesh 안에 사용될 이름
}
만약 형상파일 내에 여러 면과 이름이 있으면 위에 글처럼 regions라는 옵션을 설정하여 snappyHexMesh 안에 사용될 이름을 설정해 줘야 해요.
refinementBox는 사용자가 지정한 volume에 조밀한 격자를 주는 위치를 뜻해요.
type은 volume의 모양을 설정하는 곳인데요.
box, cylinder, disk, cone등의 여러 모양으로 설정할 수 있어요.
더 많은 옵션을 확인하려면 box 앞에 x를 입력하면 사용 가능한 type이 나와요.
다음으로 castellatedMeshControls 에요.
maxLocalCells는 격자를 세밀화 할 때 가장 많이 쓸 수 있는 격자수를 뜻해요.
maxGlobalCells는 최대 사용 가능한 전체 격자수를 뜻해요. 요즘은 천만개 이상도 많이 사용되니 이 옵션의 경우 최대한 큰 숫자로 지정해 주는 게 좋아요.
nCellBetweenLevels은 격자의 level이 급격하게 차이 날 때 중간에 buffer 격자를 넣어주는 것을 뜻해요.
값이 클수록 격자가 많아지니 3 이상으로는 안 해주는 것이 좋아요.
features는 surfaceFeatureExtract를 실행한 후 생성된 feature line 파일을 읽고 level을 통해 격자를 세분화 시키는 것을 뜻해요.
snappyHexMesh의 격자의 크기는 blockMesh에서 지정된 level 0의 크기에서 level 1이 늘어날수록 절반의 크기로 줄어들어요.
refinementSurfaces는 형상의 면에 격자를 생성할 때 사용돼요.
motorBike라는 이름의 면에 격자 level 5 ~ 6의 크기로 면에 격자를 생성하고 patchInfo를 통해 면의 base type 경계조건을 지정해요.
resolveFeatureAngle은 snappyHexMesh 내에서 형상의 feature line을 잡아주는 것으로 값이 작을수록 형상의 모서리를 잘 표현해 줘요.
refinementRegions는 지정된 volume에 격자 크기를 설정해 주는 곳이에요.
geometry에서 설정된 volume에 mode 와 levels를 설정하여 조밀한 격자를 줘요.
mode는 inside와 distance 가 있어요.
inside는 levels 앞의 1E15 값은 무시되며 4의 값만 읽어들여 level 4의 격자 크기로 설정된 volume에 생성돼요.
distance는 levels (( 1.0 5) (2.0 3)); 이렇게 설정하는데 1m까지는 level 5의 격자 크기로 1 ~2m 까지는 level 3의 격자 크기로 생성돼요.
locationInMesh는 격자가 생성될 위치를 뜻해요.

다음으로 snapControls 에요.
nSoothPatch는 형상 면에 일치하는 면을 찾기 위한 iteration 횟수를 뜻하구요.
tolerance 는 feature의 점 또는 모서리에서 한 부분의 최대 모서리 길이에 대한 거리 비율을 뜻해요.
nSolverIter는 격자가 형상에 잘 맞도록 해주는 Iteration 수에요. 초기 Iteration 수는 30이고 격자 결과를 확인 후 300까지 증가시키면 돼요. Iteration 수가 증가할수록 격자의 quality가 좋아져요.
nRelaxIter 격자가 형상에 잘 맞도록 해수는 iteration으로 값이 증가할수록 격자의 quality가 좋아져요.
nFeatureSnapIter는 형상의 feature edge를 잘 잡아주는 옵션으로 iteration으로 값이 증가할수록 형상의 feature edge를 잘 따라가요.
implicitFeatureSnap은 형상에 대한 feature edge를 찾아주는 옵션이구요
explicitFeatureSnap은 castellatedMeshControls의 feature edge를 찾아주는 옵션이에요.
multiRegionFeatureSnap은 여러 면 사이에 feature eged를 찾아주는 옵션이에요.
다음으로 addLayersControls 에요.
형상면에 layer를 생성해 주는 옵션이에요.
relativeSizes 는 layer 격자의 크기를 상대적인 크기로 할지. 절대적 크기로 할지 결정하는 옵션이에요.
"(lowerWall | motorBike)" 는 geometry에서 지정된 snappyHexMesh 내 이름이에요.
nSurfaceLayers 는 형상면 위에 올라가는 layer 층을 뜻해요.
나머지 옵션은 기본 옵션으로 사용해도 돼요.
다음으로 meshQualityControls 에요.
격자의 Quality를 체크해 주고 조정해 주는 옵션이에요.
해석을 진행할 때는 기본으로 사용하면 돼요.
결론
오늘은 OpenFOAM 내 snappyHexMeshDict 파일에 대해 알아보았어요.
실제 형상 문제에도 많이 쓰이는 격자여서 여러 번 읽고 숙지하는 것을 추천해요.
질문은 댓글로 달아주시고 오늘도 끝까지 읽어 주셔서 감사해요.
이미지 무단 도용을 금합니다.
copyright ⓒ 택이5 All rights reserved
'OpenFOAM basic > Basic concepts and theories' 카테고리의 다른 글
OpenFOAM 내 병렬실행 종류 (0) | 2024.07.30 |
---|---|
OpenFOAM 압축성 비정상상태해석 무반사 경계조건 설정 (waveTransmissive) (0) | 2024.07.26 |
OpenFOAM 내 자동격자 설정 및 실행 1 (snappyHexMesh) (0) | 2024.06.05 |
OpenFOAM 내 기본 격자 (blockMesh) (0) | 2024.06.01 |
OpenFOAM system 폴더 파일 설명 (0) | 2024.05.30 |