浅析OpenFOAM v2106 overset 源代码

本文解析了C++代码中关于`cellCellStencil`的构造过程,重点介绍了`inverseDistance`子类的构造方法,以及在`dynamicOversetFvMesh`中的更新和地址计算操作。讨论了如何通过`fvMesh`和`dictionary`设置oversetInterpolation方法,并关注了非插值字段的管理和插值策略的调整。

在src\overset\cellCellStencil\cellCellStencil.C中

Foam::autoPtr<Foam::cellCellStencil> Foam::cellCellStencil::New
(
    const fvMesh& mesh,
    const dictionary& dict,
    const bool update
)
{
    DebugInFunction << "Constructing cellCellStencil" << endl;

    const word stencilType(dict.get<word>("method"));

    auto cstrIter = meshConstructorTablePtr_->cfind(stencilType);

    if (!cstrIter.found())
    {
        FatalIOErrorInLookup
        (
            dict,
            "cellCellStencil",
            stencilType,
            *meshConstructorTablePtr_
        ) << exit(FatalIOError);
    }

    return autoPtr<cellCellStencil>(cstrIter()(mesh, dict, update));
}

这段代码读取了fvSchemes里oversetInterpolation里的method信息并且在最后构造了cellCellStencil对象。

在oversetSrc\cellCellStencil\inverseDistance.C中

Foam::cellCellStencils::inverseDistance::inverseDistance
(
    const fvMesh& mesh,
    const dictionary& dict,
    const bool doUpdate
)
:
    cellCellStencil(mesh),
    dict_(dict),
    smallVec_(Zero),
    cellTypes_(labelList(mesh.nCells(), CALCULATED)),
    interpolationCells_(0),
    cellInterpolationMap_(),
    cellStencil_(0),
    cellInterpolationWeights_(0),
    cellInterpo
### 安装和使用 OpenFOAM v2106 的方法 要在 CentOS 上安装并使用 OpenFOAM 版本 2106,可以按照以下说明操作: #### 准备工作 确保系统已更新至最新状态,并安装必要的依赖项。运行以下命令来完成这些准备工作: ```bash sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum install cmake gcc-c++ wget tar gzip bzip2 flex zlib-devel python3-pip git -y ``` 此部分涉及开发工具链以及构建所需的库文件[^1]。 #### 下载 OpenFOAM 源码包 访问官方下载页面获取源代码压缩包链接或者通过 Git 克隆仓库到本地环境。执行如下指令克隆指定版本的存储库: ```bash git clone https://github.com/OpenFOAM/OpenFOAM-2106.git $HOME/OpenFOAM cd $HOME/OpenFOAM ``` 上述步骤会将目标分支拉取下来以便进一步编译配置。 #### 配置与编译过程 进入解压后的目录之后设置环境变量脚本初始化路径参数;接着调用 Allwmake 脚本来启动整个项目的交叉平台兼容性检测及最终组装流程。 ```bash source etc/bashrc ./Allwmake > log.make 2>&1 & tail -f log.make ``` 等待一段时间直至终端显示成功标志即表示已完成全部环节。 #### 测试验证功能正常与否 为了确认安装无误可尝试求解器样例案例测试其可用状况。切换至 tutorials 文件夹挑选任意教程实例作为起点进行模拟运算演示效果。 ```bash cd $FOAM_RUN cp -r $FOAM_TUTORIALS/interFoam/laminar/damBreak . cd damBreak blockMesh setFields interFoam paraFoam ``` 以上命令序列展示了如何加载网格数据、定义初始条件并通过图形界面查看结果可视化输出。 #### 注意事项 如果遇到权限不足或者其他错误提示,请参照官方文档排查解决办法或调整策略适应不同发行版特性差异情况处理相应问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jmsyh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值