咨询热线0898-88889999
网站首页 关于傲世皇朝 傲世皇朝注册 傲世皇朝动态 傲世皇朝登录 傲世皇朝平台 傲世皇朝入口 傲世皇朝代理 联系我们
咨询热线
0898-88889999
地址:海南省海口市
邮箱:admin@youweb.com

傲世皇朝平台

当前位置: 首页 > 傲世皇朝平台

OpenFOAM 拓扑优化

发布时间:2024-04-29 03:25:59 点击量:

时间:2022年4月1日

本文简要介绍OpenFOAM-7自带的求解器adjointShapeOptimizationFoam以及自带的算例pitzDaily。小试牛刀介绍OpenFOAM的流体拓扑优化问题,希望能给入门者启发。

拓扑优化原是固体力学中的概念,用于材料结构设计,在设计初期在给定载荷下尽可能减少材料用量。2003年,Borrvall 和 Petersson提出在流体力学领域的拓扑优化问题,优化流体区域,以实现目标函数最大(小)化。

本文禁止未经允许的任何形式的转载

拓扑优化是将设计域划分为有限个单元,优化单元内固体含量。在流体拓扑优化中,设计变量是单元格内固体的体积分数 \\alpha\\alpha=1 时为固体, \\alpha=0 时为流体。(如果此处不好理解可以先看后面的算例结果)

考察不可压缩稳态Navier-Stokes方程,在Navier-Stokes引入Darcy力,即 \\alpha\\mathbf{v} ,用于描述过渡区域的固体阻力。

优化问题可以描述为:

\\begin{aligned}\\operatorname{minimize}&\\qquad \\mathrm{J}=\\mathrm{J}(\\mathbf{v}, p, \\alpha)  \\\\ s.t. &\\qquad \\mathbf{v}\
abla \\mathbf{v}-\
u \
abla{^2}\\mathbf{v}+\
abla p + \\alpha\\mathbf{v}=0 \\\\ & \\qquad \
abla \\cdot \\mathbf{v}=0  \\end{aligned}\	ag{1}

引入拉格朗日乘子,将有约束的优化问题转变为无约束优化问题。

\\operatorname{minimize}\\mathrm{L}:=\\mathrm{J}+\\int_{\\Omega}(\\mathbf{u}, q) R \\mathrm{~d}\\Omega \	ag{2}

其中 R 是 正向问题的控制方程,即{1}式中的动量方程和连续性方程, (\\mathbf{u}, q)是拉格朗日乘子,也是伴随速度和伴随压力。

拉格朗日函数对 (\\mathbf{v}, p) 求偏导等于零,可以得到连续伴随方程,即关于伴随变量 (\\mathbf{u}, q) 的PDE问题。(具体推导过程以及伴随方程的边界条件将在下一篇文章中介绍

-\
abla \\mathbf{u}\\cdot \\mathbf{v}-(\\mathbf{v}\\cdot \
abla) \\mathbf{u}-\
u \
abla{^2}\\mathbf{u}+ \
abla q +\\alpha \\mathbf{u}+\\frac{\\partial \\mathrm{J}_{\\Omega}}{\\partial \\mathbf{v}}=0 \\\\ \
abla \\cdot \\mathbf{u}=\\frac{\\partial \\mathbf{J}_{\\Omega}}{\\partial p}\	ag{3}

拉格朗日函数对设计变量 \\alpha 求偏导,得到目标函数的灵敏度。 \\frac{\\partial L}{\\partial \\alpha}=\\mathbf{u}\\cdot \\mathbf{v}\	ag{4}

求解正向问题,即连续性方程和动量方程得到速度 \\mathbf{u} ,求解伴随问题,即连续伴随方程,得到伴随速度 \\mathbf{v} ,即获得目标函数对于设计变量的导数,接下来利用优化算法,可以进一步优化问题。

该部分不涉及OpenFOAM如何编写求解器及具体如何求解,只介绍其中入门者可能困惑的关键问题。

1.目标函数为最小流动功耗

J=-\\int_{\\Gamma}\\mathrm{d}\\Gamma\\left(p+\\frac{1}{2}v^{2}\\right) \\mathbf{v}\\cdot \\mathbf{n}\	ag{5}
该目标函数是边界的积分,计算域内偏导为零。得到伴随方程{3}中 \\frac{\\partial \\mathrm{J}_{\\Omega}}{\\partial \\mathbf{v}}=0,  \\frac{\\partial \\mathbf{J}_{\\Omega}}{\\partial p}=0
伴随动量方程{1}对应的代码形式为

volVectorField adjointTransposeConvection((fvc::grad(Ua) & U));
zeroCells(adjointTransposeConvection, inletCells);
tmp<fvVectorMatrix> tUaEqn
(
    fvm::div(-phi, Ua)
    - adjointTransposeConvection
    + turbulence->divDevReff(Ua)
    + fvm::Sp(alpha, Ua)
    ==
    fvOptions(Ua)
);

2.最速下降法
adjointShapeOptimizationFoam求解器利用最速下降法优化结构, \\lambda 为步长,并引入松弛因子。

\\alpha_(n+1)=\\alpha_n - \\mathbf{u}\\cdot \\mathbf{v}\\lambda \	ag{6}

OpenFOAM中以以下实现:

alpha += mesh.fieldRelaxationFactor("alpha")
*(min(max(alpha + lambda*(Ua & U), zeroAlpha),alphaMax) - alpha);

3.一步法求解
通常求解CFD问题时,需要多次迭代,才能达到收敛,获得比较准确的速度场和压力场。而在该求解器中,由于求解器和算例的都较为简单,为了演示计算,同时降低计算量,采用一步法求解正向问题和伴随问题。在每一步优化迭代中,只循环计算一次SIMPLE耦合速度和压力场,不需要求解得到稳定收敛的向量和标量场。将结构优化迭代问题和正逆问题的迭代在同一个循环中计算。

用OpenFOAM自带的算例进行演示,可以看到蓝色为流体流经区域,红色为固体区域。 经过优化后入口处的阶梯变成了一个斜坡,降低了流动功耗。 (下一篇文章将对该算例进行详细说明

Othmer, C. & de Villiers, E. & Weller, H.G. (2007). Implementation of a continuous adjoint for topology optimization of ducted flows. American Institute of Aeronautics and Astronautics, AIAA-3947.
这篇是Othmer写的在OpenFOAM实现拓扑优化的文章
Description of adjointShapeOptimizationFoam and how to implement new objective functions
是一篇 tfd.chalmers.se/~hani/k 课程报告中关于adjointShapeOptimizationFoam的作品

平台注册入口