新闻资讯
你的位置: 首页-达士佳机场有限公司 > 新闻资讯 >1.0);}所有这个词文献修改达成后
发布日期:2024-06-21 15:31 点击次数:82
本文演示在OpenFOAM中自界说库的基本历程。
有工夫为了数据封装的需要,不错将特殊的代码先编译成库,然后在其他的代码中对库加以调用。本案例演示此历程。
1 文献准备这里将库文献、功能文献以及测试文献分开。所有这个词的文献皆摈弃在run文献夹下。
使用底下的敕令创建文献结构。
runmkdir demo7 && cd demo7mkdir customLibrary && cd customLibrarymkdir Maketouch customLibrary.H customLibrary.Ctouch Make/files Make/optionscd ..foamNewApp demo7
创建达成后的文献结构如下所示。
图片
2 库的界说与编译修改customLibrary/Make/files文献customLibrary.CLIB = $(FOAM_USER_LIBBIN)/libcustomLibrary
留意这里不再是之前案例的EXE了,而是换成了LIB。
修改customLibrary/Make/options文献EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ -lfiniteVolume -lmeshTools修改头文献customLibrary/customLibrary.H
#include "fvCFD.H"// 在头文献中声明函数scalar computeR(const fvMesh &mesh,volScalarField & r, dimensionedVector x0);void computeU(const fvMesh & mesh, volVectorField &U, word pname="p");
头文献中仅仅声明了两个函数。
修改源文献customLibrary/customLibrary.C#include "customLibrary.H"// 这两个函数之前的案例中使用过,就不重迭先容了scalar computeR(const fvMesh &mesh,volScalarField &r, dimensionedVector x0){ r = mag(mesh.C()-x0); return returnReduce(max(r).value(),maxOp<scalar>());} void computeU(const fvMesh &mesh, volVectorField &U,word pName){ const volScalarField &pField = mesh.lookupObject<volScalarField>(pName); U = fvc::grad(pField)*dimensionedScalar("tmp",dimTime,1.0);}
所有这个词文献修改达成后,干预customLibrary旅途下,践诺敕令wmake进行编译。
图片
不错看到在$FOAM_USER_LIBBIN旅途下生成了一个名为libcustomLibrary.so的动态库文献。
3 功能措施界说干预demo7目次下。掌握敕令touch createFields.H创建文献,此时demo7文献夹中的文献结构如下:
图片
修改files文献demo7.CEXE = demo7修改options文献, 江苏高玛防护器材有限公司留意编译为库的话指定的是EXE_LIBS, 上海诸申国际贸易有限公司还要留意包含头文献
浙江兴达文具有限公司 0, 0, 0.55) 0px 2px 10px;">EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude -I../customLibrary EXE_LIBS = \ -lfiniteVolume \ -lmeshTools \ -L$(FOAM_USER_LIBBIN) -lcustomLibrary
留意库文献的加载,先加载旅途后加载库称号,把库称号前边的lib去掉。
编写createFields.H头文献// createFields.H中包含了多样参数及物理场的读入Info << "读取tranportProperties文献\n" << endl; IOdictionary transportProperties( IOobject ( "transportProperties", runTime.constant(), mesh, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE )); dimensionedScalar nu( "nu", dimViscosity, transportProperties); Info << "读取p文献"<< endl;volScalarField p( IOobject ( "p", runTime.timeName(), mesh, IOobject::MUST_READ,毛织物 IOobject::AUTO_WRITE ), mesh); Info << "读取U文献" << endl;volVectorField U( IOobject ( "U", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh);编写源代码demo7.C
#include "fvCFD.H"// 留意文献旅途#include "../customLibrary/customLibrary.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]){#include "setRootCase.H"#include "createTime.H" // 添加两个头文献,一个创建fvMesh对象,另一个读取数据#include "createMesh.H"#include "createFields.H" // 界说一个向量x0,其量纲为dimLength const dimensionedVector originVector("x0", dimLength, vector(0.05, 0.05, 0.005)); scalar f(1.0); // 界说一个标量场r,给了一个启动值r0 volScalarField r( IOobject( "r", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE), mesh, dimensionedScalar("r0", dimLength, 0.0)); // 掌握自界说库中的computeR函数 const scalar rFaceCell = computeR(mesh, r, originVector); Info << "Starting time loop\n" << endl; while (runTime.loop()) { Info << "Time = " << runTime.timeName() << nl << endl; // 掌握网格距离进行压力计较,没什么特殊的预见,仅仅大意计较 // 场变量计较的工夫需要留意量纲 p = Foam::sin(2. * constant::mathematical::pi * f * runTime.time().value()) / (r / rFaceCell + dimensionedScalar("small", dimLength, 1e-12)) * dimensionedScalar("tmp", dimensionSet(0, 3, -2, 0, 0), 1.0); p.correctBoundaryConditions(); // 掌握自界说库中的computeU函数计较速率 computeU(mesh, U); runTime.write(); } // * * * * * * * * * * * * * * * * * * * // Info << nl; runTime.printExecutionTime(Info); Info << "End\n" << endl; return 0;}
代码编写达成后,不错使用wmake进行编译。
图片
4 测试案例掌握cavity案例四肢测试案例。将cavity案例拷贝到run/demo7文献夹下。
cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
留意demo7文献夹下的子文献夹组织体式,如下图所示。
图片
面前目次为run/demo7,掌握底下的敕令干预cavity目次,生成网格并调用上头编译告捷的措施。
cd cavityblockMesh../demo7/demo7
修改system/controlDict文献中endTime关节字的值为2,诱骗deltaT为0.1。
践诺服从如下图所示。
图片
压力场如下图所示。
图片
(本文肆意)
本站仅提供存储作事,所有这个词本色均由用户发布,如发现存害或侵权本色,请点击举报。
上一篇:连续保合手两位数增长
下一篇:没有了
下一篇:没有了
相关资讯