icoFoam

本文档详细介绍了icoFoam在OpenFOAM中的应用,重点关注icoFoam.C中的关键函数和概念,如solve函数的返回值、volScalarField rAU的含义、UEqn.A()和UEqn.H()的定义以及它们在计算中的作用。同时,讨论了fvcFlux.C中的fvc::flux函数和createFields.H、createPhi.H的相关内容。文档参考了相关资料并解析了PISO字典在fvSolution中的应用。
摘要由CSDN通过智能技术生成

icoFoam

写给自己看的,主要是一些看到的总结

基于OpenFoam5.x版本,但是貌似of-x和of-vxxxx大体上差不多,但是跟extend差得比较多

参考:ref1以及其相关资料

icoFoam.C

#include "fvCFD.H"                      //有限体积库头文件集合
#include "pisoControl.H"				//定义PISO循环的头文件

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

int main(int argc, char *argv[])
{
   
    #include "setRootCase.H"			// 设置算例根目录
    #include "createTime.H"				//时间
    #include "createMesh.H"				//网格

    pisoControl piso(mesh);		//从网格对象构造pisoControl 的对象piso(这里不是很理解,有时间查一下)

    #include "createFields.H"  //创建场对象
    #include "initContinuityErrs.H" 	//初始化连续误差

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

    Info<< "\nStarting time loop\n" << endl;

    while (runTime.loop())		//主循环
    {
   
        Info<< "Time = " << runTime.timeName() << nl << endl;

        #include "CourantNo.H"		//库朗数

 // *********************************Momentum predictor*******************************************
/*/动量预测在pisoControl 或者pimpleControl头文件中定义,相应代码如下:
    bool momentumPredictor =
        pimple.lookupOrDefault<Switch>("momentumPredictor", true);
        默认为true,应该是开启的状态,在相关文件中应该可以定义将它关闭,如果没有有定义应该就是默认状态
*/
//定义动量方程算子矩阵,其中使用fvm隐式离散,不包括压力项,仅对方程中非定常、对流、扩散进行离散
//这里的 fvVectorMatrix 是直接定义的 和pimpleFoam或者pisoFoam中 的定义存在区别,后者先定义了
//一个 tmp<fvVectorMatrix> tUEqn 之后再定义出动量方程算子矩阵 UEqn,现在还不太知道为什么这么做

        fvVectorMatrix UEqn				//		tmp<fvVectorMatrix> tUEqn 
        (								//		(
            fvm::ddt(U)					//			 fvm::ddt(U) + fvm::div(phi, U)
          + fvm::div(phi, U)			//			+ MRF.DDt(U)
          - fvm::laplacian(nu, U)		//			+ turbulence->divDevReff(U)
        );								//		==
										//			fvOptions(U)	            );		
										//		fvVectorMatrix& UEqn = tUEqn.ref();

/*参考中写,如果进行动量预测,则求解完整的动量方程得到预测速度
			如果不进行动量预测,则预测速度直接取当前已知时间步的速度
但是下面这个,如果是关闭状态,方程都已经不在求解了,计算应该是无法进行的状态,可以测试以下
*/	********************************************************
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
icoFoam 求解器名称 |-createFields.H 场变量的声明和初始化 ————————————————————————————————————————————— Info<< "Reading transportProperties\n" << endl; //屏幕提示读入参数控制文件,等价于 C++中std::cout //声明属性字典类对象,该对象由 constant 文件夹下的“transportProperties”初始化创建。 IOdictionary transportProperties ( IOobject //其实IOobject,顾名思义就是输入输出对象,它完成的是一个桥梁的作用,即连接要构造的类及硬盘中的相应文件。这可以通过其成员函数objectStream()了解到,当完成了“搭桥”之后,便可通过这一成员函数返回硬盘文件对应的输入流,从而从输入流中读入将要构造的类的相关信息// ( "transportProperties", // 文件名称 runTime.constant(), // 文件位置,case/constant mesh, // 网格对象 IOobject::MUST_READ_IF_MODIFIED, //如果更改,必须读入 IOobject::NO_WRITE // 不对该文件进行写操作 ) ); //字典查询黏性,以便初始化带有单位的标量 dimensionedScalar nu ( transportProperties.lookup("nu") ); //屏幕提示创建压力场 Info<< "Reading field p\n" << endl; //创建压力场 volScalarField p //声明一个带单位的标量场,网格中心存储变量。 ( IOobject // IOobject主要从事输入输出控制 ( "p", // 压力场初始文件名称 runTime.timeName(), // 文件位置,由case中的system/controlDict中的startTime控制 //
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值