셀존 조건(Cell Zone Conditions)

다중기준좌표계(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는 coordinateSysteme1, e2 에 사용된다. 관성저항계수와 점성저항계수는 DarcyForchheimerCoeffsfd 에 사용된다.

<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 이다.

셀존이 아닌 전체 영역에 생성항을 줄 때는 selectionModeall 이 된다.

<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 파일에서 고정할 수 있다.

속도

typemeanVelocityForce 이다.

입력한 속도는 Ubar 에, 완화계수는 relaxation 에 사용된다.

<name>
{
    type            meanVelocityForce;
    active          yes;
    fields          (U);
    Ubar            (<Ux> <Uy> <Uz>);
    relaxation      <value>;
    selectionMode   cellZone;
    cellZone        <cell zone name>;
}

온도

typefixedTemperatureConstraint 이다.

입력한 온도는 temperature 에 사용된다.

fixedTemperature_porousZone
{
    type            fixedTemperatureConstraint;
    active          yes;
    mode            uniform;
    temperature     constant <value>;
    selectionMode   cellZone;
    cellZone        <cell zone name>;
}

난류, 화학종

typescalarFixedValueConstraint 이다.

스칼라의 종류와 입력한 값은 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>;
            }
        }
    }
}