셀존 조건(Cell Zone Conditions)
- 다중기준좌표계, MRF
- 미끄럼 격자(Sliding Mesh)
- 다공성 매질(Porous Zone)
- 액추에이터 디스크(Actuator Disk)
- 생성항(Source Terms)
- 고정값(Fixed Values)
다중기준좌표계(Multiple Reference Frame, MRF)
다중기준좌표계는 constant/MRFProperties에서 다음과 같이 설정한다.
<name>
{
cellZone <cell zone name>;
active yes;
nonRotatingPatches
(
<patch name 1>
<patch name 2>
...
);
origin (<x> <y> <z>);
axis (<x-axis> <y-axis> <z-axis>);
omega <radian per sec>;
}
omega 는 입력한 분당 회전수(RPM) 값을 초당 라디안(radian)으로 변환해서 사용한다.
미끄럼 격자(Sliding Mesh)
미끄럼 격자는 constant/dynamicMeshDict 파일에서 다음과 같이 설정한다.
dynamicFvMesh dynamicMotionSolverListFvMesh;
motionSolverLibs ("libfvMotionSolvers.so");
motionSolver fvMotionSolvers;
solvers
{
<name>
{
solver solidBody;
solidBodyMotionFunction rotatingMotion;
cellZone rotating;
rotatingMotionCoeffs
{
origin (<x> <y> <z>);
axis (<x-axis> <y-axis> <z-axis>);
omega <radian per sec>;
}
}
}
omega 는 입력한 분당 회전수(RPM) 값을 초당 라디안(radian)으로 변환해서 사용한다.
다공성 매질(Porous Zone)
다공성 매질은 system/fvOptions 파일에서 설정한다.
Power Law 모델
입력 받은 C0, C1은 powerLawCoeffs 에 사용된다.
<name>
{
type explicitPorositySource;
explicitPorositySourceCoeffs
{
type powerLaw;
powerLawCoeffs
{
C0 <value>;
C1 <value>;
coordinateSystem
{
type cartesian;
origin (<x> <y> <z>);
rotation
{
type axesRotation;
e1 (1 0 0);
e2 (0 1 0);
}
}
}
selectionMode cellZone;
cellZone <cell zone name>;
}
}
Darcy Forchheimer 모델
입력 받은 방향벡터 1과 2는 coordinateSystem 의 e1, e2 에 사용된다. 관성저항계수와 점성저항계수는 DarcyForchheimerCoeffs 의 f 와 d 에 사용된다.
<name>
{
type explicitPorositySource;
explicitPorositySourceCoeffs
{
type DarcyForchheimer;
DarcyForchheimerCoeffs
{
d d [ 0 -2 0 0 0 0 0 ] (<x-d> <y-d> <z-d>);
f f [ 0 -1 0 0 0 0 0 ] (<x-f> <y-f> <z-f>);
coordinateSystem
{
type cartesian;
origin (<x> <y> <z>);
rotation
{
type axes;
e1 (<x-dir1> <y-dir1> <z-dir1>);
e2 (<x-dir2> <y-dir2> <z-dir2>);
}
}
}
selectionMode cellZone;
cellZone <cell zone name>;
}
}
액추에이터 디스크(Actuator Disk)
액추에이터 디스크 모델은 system/fvOptions 파일에서 설정한다.
입력 받은 디스크 축 방향은 diskDir 에, 파워 계수는 Cp 에, 추력 계수는 Ct 에 디스크 면적은 diskArea 에, 상류쪽 점의 좌표는 _monitorCoeffs에, 힘 계산 방법은 variant 에 사용된다.
actuationDiskSource_porousZone
{
type actuationDiskSource;
fields (U);
diskDir (<x-dir> <y-dir> <z-dir>);
Cp <value>;
Ct <value>;
diskArea <value>;
monitorMethod points;
monitorCoeffs
{
points ((<x> <y> <z>));
}
variant <Froude or variableScaling>;
selectionMode cellZone;
cellZone <cell zone name>;
}
생성항(Source Terms)
질량, 에너지, 난류, 화학종 관련 필드에 생성항을 줄 수 있다.
생성항은 system/fvOptions 파일에서 설정한다.
무엇에 대한 생성항인지는 _sources_에서 설정한다. 질량은 rho, 에너지는 h, 난류 관련 필드는 k, epsilon, omega 등이다.
값은 sources 에서 ( )와 같이 주는데 입력한 값은 explicit value에 쓰고 implicit value에는 0.0을 쓴다.
값의 크기 설정 방법(Specification Method)는 전체 체적에 대한 값(Value for Entire Cell Zone)과 단위 체적당 값(Value per Unit Volume) 두 가지가 있으며 volumeMode 에서 설정한다. 전체 체적에 대한 값은 absolute, 단위 체적당 값은 specific 이다.
셀존이 아닌 전체 영역에 생성항을 줄 때는 selectionMode 가 all 이 된다.
<name>
{
type scalarSemiImplicitSource;
volumeMode <absolute or specific>;
sources
{
rho (<value> 0.0); // h, k, epsilon, omega, nuTilda, <species>
}
selectionMode cellZone; //all;
cellZone <cell zone name>;
}
값의 변화 설정 방법이 조각별 선형 함수일 때
<name>
{
type scalarSemiImplicitSource;
volumeMode <absolute or specific>;
sources
{
h
{
explicit table ( (<t0> <t1> ...) (<flowrate0> <flowrate1>) ... );
implicit none;
}
}
selectionMode cellZone;
cellZone <cell zone name>;
}
값의 변화 설정 방법이 다항식일 때
<name>
{
type scalarSemiImplicitSource;
volumeMode <absolute or specific>;
sources
{
h
{
explicit polynomial ( (<a0> 0) (<a1> 1) ... );
implicit none;
}
}
selectionMode cellZone;
cellZone <cell zone name>;
}
사용자 정의 스칼라의 생성항
사용자 정의 스칼라의 생성항은 system/fvOptions 파일이 아닌 system/controlDict 파일의 functions 딕셔너리에서 설정한다.
functions 의 사용자 정의 스칼라 부분에 fvOptions 라는 딕셔너리로 다음과 같이 설정한다.
functions
{
...
<name>
{
type scalarTransport;
...
fvOptions
{
<name>
{
type scalarSemiImplicitSource;
volumeMode absolute;
sources
{
<uds name> (<value> 0.0);
}
selectionMode cellZone;
cellZone <cell zone name>;
}
}
}
}
고정값(Fixed Values)
속도, 온도, 난류 관련 필드 등의 값을 system/fvOptions 파일에서 고정할 수 있다.
속도
type 은 meanVelocityForce 이다.
입력한 속도는 Ubar 에, 완화계수는 relaxation 에 사용된다.
<name>
{
type meanVelocityForce;
active yes;
fields (U);
Ubar (<Ux> <Uy> <Uz>);
relaxation <value>;
selectionMode cellZone;
cellZone <cell zone name>;
}
온도
type 은 fixedTemperatureConstraint 이다.
입력한 온도는 temperature 에 사용된다.
fixedTemperature_porousZone
{
type fixedTemperatureConstraint;
active yes;
mode uniform;
temperature constant <value>;
selectionMode cellZone;
cellZone <cell zone name>;
}
난류, 화학종
type 은 scalarFixedValueConstraint 이다.
스칼라의 종류와 입력한 값은 fixedValues 딕셔너리에 사용된다.
fixedTemperature_porousZone
{
type scalarFixedValueConstraint;
active yes;
fieldValues
{
k <value>; // epsilon, omega, nuTilda
}
selectionMode cellZone;
cellZone <cell zone name>;
}
사용자 정의 스칼라
사용자 정의 스칼라의 고정값은 system/fvOptions 파일이 아닌 system/controlDict 파일의 functions 딕셔너리에서 설정한다.
functions 의 사용자 정의 스칼라 부분에 fvOptions 라는 딕셔너리로 다음과 같이 설정한다.
functions
{
...
<name>
{
type scalarTransport;
...
fvOptions
{
<name>
{
type scalarFixedValueConstraint;
active yes;
fieldValues
{
<uds name> <value>;
}
selectionMode cellZone;
cellZone <cell zone name>;
}
}
}
}