모니터(Monitor)

모니터링은 system/controlDict 파일의 functions 딕셔너리를 사용한다.

힘(Force)

functions
{
    ...
    <name of forces>
    {
        type            forces;
        libs    ("/baram/solvers/openfoam/lib/libforces.so");
        patches
        (
            <patch name 1>
            ...
        );
        CofR            (<x> <x> <x>);
        updateHeader    false;
        log             false;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   <value>;
    }
    <name of force coefficients>
    {
        type            forceCoeffs;
        libs    ("/baram/solvers/openfoam/lib/libforces.so");
        patches
        (
            <patch name 1>
            ...
        );
        coefficients    (Cd Cl CmPitch);
        rho             rho;
        Aref            <value>;
        lRef            <value>;
        magUInf         <value>;
        rhoInf          <value>;
        dragDir         (<x-dir> <y-dir> <z-dir>);
        liftDir         (<x-dir> <y-dir> <z-dir>);
        CofR            (<x> <y> <z>);
        updateHeader    false;
        log             false;
        pRef            <value>;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   <value>;
    }
}

저장 간격(Write Interval)은 writeInterval 에 설정된다. 유동 방향(Flow Direction)의 항력 방향(Drag Direction)은 dragDir 에, 양력 방향(Lift Direction)은 liftDir 에, 회전중심(Center of Rotation)은 CofR 에 설정된다. 경계면(Boundaries)에 선택된 것들은 patches 에 설정된다.

점(Point)

functions
{
    ...
    <name>
    {
        type            probes;
        libs    ("/baram/solvers/openfoam/lib/libsampling.so");
        fields          (<field>);
        probeLocations  ( (<x> <y> <z>) );
        updateHeader    false;
        log             false;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   <value>;
    }
}

저장 간격(Write Interval)은 writeInterval 에, 유동 변수(Field)는 fields 에, 좌표(Coordidate)는 probeLocations 에 설정된다.

면(Surface)

functions
{
    ...
    <name>
    {
        type            surfaceFieldValue;
        libs    ("/baram/solvers/openfoam/lib/libfieldFunctionObjects.so");
        regionType      patch;
        name            <patch name>;
        surfaceFormat   none;
        fields          (<field>);
        operation       <value>;
        writeFields     false;
        updateHeader    false;
        log             false;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   <value>;
    }
}

저장 간격(Write Interval)은 writeInterval 에, 유동 변수(Field Variable)은 fields 에, 함수(Report Type)은 operation 에, 면(Surface)는 name 에 설정된다.

체적(Volume)

functions
{
    ...
    <name>
    {
        type            volFieldValue;
        libs    ("/baram/solvers/openfoam/lib/libfieldFunctionObjects.so");
        regionType      cellZone;
        name            <cel zone name>;
        fields          (<field>);
        operation       <value>;
        writeFields     false;
        updateHeader    false;
        log             false;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   <value>;
    }
}

저장 간격(Write Interval)은 writeInterval 에, 유동 변수(Field Variable)은 fields 에, 함수(Report Type)은 operation 에, 체적(Volume)은 name 에 설정된다.

잔차(Residual)

잔차 데이터를 생성하고 저장하기 위해서 system/controlDict 파일의 functions 딕셔너리를 사용한다.

fields 는 솔버에 따라 다르게 설정된다.

functions
{
    ...
    <name>
    {
        type                solverInfo;
        libs    ("/baram/solvers/openfoam/lib/libutilityFunctionObjects.so");
        executeControl      timeStep;
        executeInterval     1;
        writeResidualFields no;
        fields
        (
            U
            p_rgh
            k
            epsilon
            ...
        );
    }
}