laplacianFoam

laplacianFoam

控制方程 ∂ T ∂ t − ∇ 2 ( D T T ) = 0 \frac{\partial T}{ \partial t} - \nabla^2(D_T T) = 0 tT2(DTT)=0

laplacianFoam.C
#include "fvCFD.H"
#include "fvOptions.H"//--------------------------------------------------------------------
#include "simpleControl.H"///simple头文件

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

int main(int argc, char *argv[])
{
    #include "setRootCase.H"

    #include "createTime.H"
    #include "createMesh.H"

    simpleControl simple(mesh);//对于采用simple算法的算例,创建simple对象

    #include "createFields.H"
    #include "createFvOptions.H"//----------------------------------------------fvOption的两个文件

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    Info<< "\nCalculating temperature distribution\n" << endl;

    while (simple.loop())
    {
        Info<< "Time = " << runTime.timeName() << nl << endl;

        while (simple.correctNonOrthogonal())
        {
            fvScalarMatrix TEqn
            (
                fvm::ddt(T) - fvm::laplacian(DT, T)
             ==
                fvOptions(T)        //这里==相当于于一个减号优先级低于减号或者加号,这我忘了在哪看到过
            );						//fvOption的操作感觉像是预留一个源项的接口,控制方程中并没有这一项
            						//包括后面的pisoFoam、simpleFoam等也都用到了,但方程中的粘性项
            						//的离散是包含在了湍流模型的处理中

            fvOptions.constrain(TEqn);//这里在东岳流体中scalarTranportFoam中讲到一点,对方程
            						//系数源项进行进行限定
            TEqn.solve();			//求解方程,slove函数对应的求解量应该在fvSolution中进行相关定义
            fvOptions.correct(T);	//对求解量T进行限定
        }

        #include "write.H"		//输出的头文件,区别于runTime.write(),这里除了createField中定义的
        						//自动输出的量之外,还额外定义了一些其他的量

        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
            << nl << endl;
    }

    Info<< "End\n" << endl;

    return 0;
}

参考链接:fvOption

createFields.H
    Info<< "Reading field T\n" << endl;

    volScalarField T
    (
        IOobject
        (
            "T",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        mesh
    );


    Info<< "Reading transportProperties\n" << endl;

    IOdictionary transportProperties
    (
        IOobject
        (
            "transportProperties",
            runTime.constant(),
            mesh,
            IOobject::MUST_READ_IF_MODIFIED,
            IOobject::NO_WRITE
        )
    );


    Info<< "Reading diffusivity DT\n" << endl;

    dimensionedScalar DT
    (
        transportProperties.lookup("DT")//物性参数的读取方式,应该是要放在transportProperties
        								//的读取之后的
    );

write.H
    if (runTime.writeTime())	//输出时间的判定
    {
        volVectorField gradT(fvc::grad(T)); //定义温度梯度场,这里在当前时间步内,温度T已完成求解,
        									//为已知量,直接进行显式计算

        volScalarField gradTx
        (
            IOobject
            (
                "gradTx",
                runTime.timeName(),
                mesh,
                IOobject::NO_READ,
                IOobject::AUTO_WRITE
            ),
            gradT.component(vector::X)	//X方向温度梯度的赋值
        );

        volScalarField gradTy
        (
            IOobject
            (
                "gradTy",
                runTime.timeName(),
                mesh,
                IOobject::NO_READ,
                IOobject::AUTO_WRITE
            ),
            gradT.component(vector::Y)
        );

        volScalarField gradTz
        (
            IOobject
            (
                "gradTz",
                runTime.timeName(),
                mesh,
                IOobject::NO_READ,
                IOobject::AUTO_WRITE
            ),
            gradT.component(vector::Z)
        );


        runTime.write();		//createField中的输出
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值