发布日期:2024-07-03 17:03 点击次数:202
本文态状在OpenFOAM中编程完满自界说限度类型。
OpenFOAM中不错期骗codeStream、codeFixedValue完满自界说限度上物理场散播。这些模式操作起来浅近,然则功能也较为单一。若念念要完满愈加复杂的限度条目类型,不错通过编程创建新的限度类型。
OpenFOAM中总计的限度条目界说均位于文献夹$FOAM_SRC/finiteVolume/fields/fvPatchFields中,用户不错期骗文献夹中的限度类型为模板,成就我方的限度条目类型。
以一个沿y主义速率成抛物线散播的限度为例,态状在OpenFOAM中新建一个限度条目的基本进程。在充分发展的管说念流动中,轴向速率沿径向散播为:
这里
翻开Linux末端或Windows WSL,通过底下的号召准备文献。
runfoamNewBC -f -v parabolicVelocitycd parabolicVelocity
这里期骗表情foamNewBC快速构造一个限度条目界说框架。对于foamNewBC的用法,不错使用号召foamNewBC -help进行稽查,如下图所示。
图片
上头的号召中,-f默示创建一个fixedValue型限度;-v默示创建一个矢量限度。
此时在现时旅途下创建了一个名为parabolicVelocity的文献夹,其内文献结构如下图所示。
图片
文献夹parabolicVelocity中包含了一个Make文献夹与parabolicVelocityFvPatchVectorField.C及parabolicVelocityFvPatchVectorField.H文献。这里不需要调动Make文献夹中的任何实质。
2 修改头文献在头文献parabolicVelocityFvPatchVectorField.H中指定成员变量及构造函数。
删除过剩的成员变量,添加新的成员变量// 指定最大速率值scalar maxvalue_;// 指定流动主义vector n_;// 指定y坐标主义vector y_;
如下图所示。
图片
预防掉虚函数autoMap与rmap的界说图片
首页-发州杂果有限公司3 修改源文献在源文献parabolicVelocityFvPatchVectorField.C中界说功能完满厨房设施。
预防或删掉t()函数在第一个构造函数中添加参数启动化表情代码厨房设施 0.55) 0px 2px 10px;">// 默许启动化Foam::parabolicVelocityFvPatchVectorField:: parabolicVelocityFvPatchVectorField( const fvPatch &p, const DimensionedField<vector, volMesh> &iF) : fixedValueFvPatchVectorField(p, iF), maxvalue_(0), n_(1, 0, 0), y_(0, 1, 0){}修改第二个构造函数
Foam::parabolicVelocityFvPatchVectorField::parabolicVelocityFvPatchVectorField( const fvPatch& p, const DimensionedField<vector, volMesh>& iF, const dictionary& dict): fixedValueFvPatchVectorField(p, iF), maxvalue_(readScalar(dict.lookup("maxvalue"))), n_(dict.lookup("n")), y_(dict.lookup("y")){ Info << "Using the parabolicVelocity boundary condition" << endl; if (mag(n_) < SMALL