你的位置:软件定制开发多少钱 > 软件定制开发 > 软件开发公司 OpenFOAM编程案例|13 波动方程

软件开发公司 OpenFOAM编程案例|13 波动方程

发布日期:2024-08-09 05:09    点击次数:77

欺骗OpenFOAM开拓一个求解波动方程的的求解器软件开发公司。

波动方程抒发式为:

小程序开发

式中,c为波速,h为波高。

1 创建文献

欺骗foamNewApp快速创建文献结构。

runfoamNewApp demo13cd demo13touch createFields.H

文献结构如下所示。

图片

2 源代船埠文献createFields.H中终了物理量的读取
// 需要从字典文献中读取变量c,何况界说待求标量h Info << "读取transportProperties文献" << endl; IOdictionary transportProperties(    IOobject    (        "transportProperties", //文献名        runTime.constant(),    //文献位置        mesh,        IOobject::MUST_READ_IF_MODIFIED,        IOobject::NO_WRITE     )); // 界说标量C,该变量从字典文献中读取dimensionedScalar C(    "C",         //字典中的要害字    dimVelocity, // 速率量纲,也不错写成dimensionSet(0,1,-1,0,0)    transportProperties); Info << "读取标量场h" << endl;// 界说标量场hvolScalarField h(    IOobject    (        "h",        runTime.timeName(),        mesh,        IOobject::MUST_READ,        IOobject::AUTO_WRITE    ),    mesh);
源文献demo13.C
#include "fvCFD.H"int main(int argc, char *argv[]){    // 给个方法使用诠释    argList::addNote("本方法用于估量给定网格下的波动方程");     #include "setRootCase.H"    #include "createTime.H"     // 添加fvMesh对象mesh    #include "createMesh.H"    // 包括前范围说的createFields.H头文献    #include "createFields.H"     Info << nl << "脱手时候迭代估量" << endl;    while (runTime.loop())    {        Info << nl << "Time = " << runTime.timeName() << endl;        Info << "求解物理场h" << endl;        // 放手方程        fvScalarMatrix hEqn        (            // sqr函数为估量C的平常            fvm::d2dt2(h) == fvm::laplacian(sqr(C), h)        );        hEqn.solve(); // 求解方程         runTime.write(); // 写出数据        Info << "Execution Time = " << runTime.elapsedClockTime() << "s" << endl;    }     // * * * * * * * * * * * * * * * * * * * * //    Info << nl;    runTime.printExecutionTime(Info);     Info << "End\n" << endl;    return 0;}
3 测试案例

领受二维模子,几何尺寸为2x2m,网格尺寸0.02 m,软件开发公司估量域中心位置有一个0.2x0.2m的区域,将h的值确立为1,其他区域h=0。

这里挑遑急的文献进行诠释,细节可平直检察案例文献。

system/fvSolution文献中需要添加h的求解方法
FoamFile{    version     2.0;    format      ascii;    class       dictionary;    location    "system";    object      fvSolution;}// * * * * * * * * * * * * * * //solvers{     "h|hFinal"    {        solver          smoothSolver;        smoother        symGaussSeidel;        tolerance       1e-08;        relTol          0.01;    } }
setFieldsDict字典文献进交运行化
FoamFile{    version     2.0;    format      ascii;    class       dictionary;    object      setFieldsDict;}// * * * * * * * * * * * * // defaultFieldValues(    volScalarFieldValue h 0); regions(    boxToCell    {        box (-0.1 -0.1 -1) (0.1 0.1 1);         fieldValues        (            volScalarFieldValue h 1        );    } );
transportProperties文献中指定波速
FoamFile{    version     2.0;    format      ascii;    class       dictionary;    location    "constant";    object      transportProperties;}// * * * * * * * * * * * * * * * * * * //// 界说波速CC                   [0 1 -1 0 0 0 0]  0.05;
0/h文献指定待求量h的运行值与范围值
FoamFile{    version     2.0;    format      ascii;    class       volScalarField;    object      h;}// * * * * * * * * * * * * //dimensions      [0 1 0 0 0 0 0];internalField   uniform 0;boundaryField{    topBot    {        type            empty;    }     north    {        type fixedValue;        value uniform 0;    }     south    {        type fixedValue;        value uniform 0;    }     east    {        type fixedValue;        value uniform 0;    }     west    {        type fixedValue;        value uniform 0;    }}

估量后果如下图所示。

图片

(罢了)软件开发公司

本站仅提供存储劳动,扫数推行均由用户发布,如发现存害或侵权推行,请点击举报。