OpenFOAM基础应用以及代码解读 扫二维码继续学习

免费

blockMesh生成网格

网格的定义:
points:节点的坐标

faces:顶点数和顶点的标号

internal faces

boundary faces

neighbour

owners

boundary

 

blockMeshDict

网格生成的控制

 顶点的定义(顺序)

 

块的定义

 加密网格:

 

[展开全文]
taoj · 2023-03-14 · blockMesh生成网格 0

fvSchemes

ddtSchemes  -时间离散格式

Euler格式(一阶格式)

Crank-Nicolson格式 (二阶格式)

backward格式 (二阶格式,无法保证解的有界性)

steadyState 格式  (稳定流动)

divSchemes -对流项的离散

linear

upwind  (耗散性)

linearUpwind

QUICK

limitedLinear

vanLeer

MUSCL

TVD/NVD (限制器)

标量场

 

 

 矢量场

vanleerV -保证稳定性,精度较差

snGradScheme  - 垂向进行计算 (考虑非正交的修正)

laplacianSchemes - 进行差分离散(非正性的修正)

 

fvSolution -线性方程进行求解

 

提供多个求解器、设置残差(绝对残差和相对残差)

PCG/PBICG

smoothSolver

GAMG

各种物理场的求解器的设定:

U等

对相应的算法进行设定

PISO算法

 

constant

网格文件(polyMesh)

transportProperties -指定物性参数

turbulenceProperties - 湍流模型定义

 

 

[展开全文]
taoj · 2023-03-14 · 算例设置-2 0

3算例结构和参数设置

3.1算例结构

constan

system

controlDict  - 模拟的进程,开始、结束、输出时间等

application 对应的求解器实际没有生效

保存log文件:
icoFoam > log

 

fvSchemes  - 数值离散

fvSolution  - 线性方程的求解器

time

[展开全文]
taoj · 2023-03-14 · 算例设置-1 0

2.openfoam的求解器和库函数的介绍

查看快捷方式的定义

vim etc/config/aliases.sh

 

环境变量的具体地址:
echo  $FOAM_SRC

test文件对于openfoam自带的库函数进行测试

创建run文件:

放置定制求解器和算例

mkdir -p $FOAM_RUN

2.1求解器

tree -L 2

basic 基本求解器

combustion

compressible

incompressible

multiphase

heat transer

Stress Analysis

2.2 src(库函数)  所有的求解器

tree -L 2

ODE

dynamicFvMesh

postProcessing

transportModels

sixDoFRigidBodyMotion

TurbulenceModels

FiniteVolume

2.3 tut(算例)

2.4util(工具)

2.5 Wmake

wmake(用于自定义求解器,进行自定义求解器的编译)

wclean  (进行删除)

将算例拷到run文件夹下:

cp - $FOAM_TUTORIALS/incompressible/icoFoam/cavity . -r

 

blockesh

icoFoam

paraFoam

[展开全文]

1.CFD简单介绍

1.1 计算流体力学的步骤:

选择控制方程(N-S方程)

对方程和空间进行离散

分析数值计算的精度和稳定性

求解代数方程

对结果进行后处理

1.2 openfoam

在linux系统下进行操作,开源的,没有图形操作界面。

官方的openfoam版本(org版本)

openfoam+版本(com版本)

Foam-extend版本

1.3数值方法

有限体积法

网格系统:
同位网格:速度场和压力场定义在同一个网格系统中(加入Rhie-Chow差分格式解决振荡解问题)

错位网格:速度场和压力场定义在不同的网格系统中(解决振荡解问题)

参考书籍:

 

1.4常用的linux基本命令

ls -a    //查看文件夹中的隐藏文件,.bashrc(环境)

gedit  ~/.bashrc     //进行环境文档中进行编辑,可以添加不同版本openfoam的快捷方式

source/opt/openfoam9/etc/bashrc(alias)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

如果大面积的采样,可以采用utility,

[展开全文]

显式算法,需要库朗数小于0.3,才能保证稳定性

半隐式算法:不要求库朗数,但为了保证精度,还是最好小些

压缩速度:总是垂直于作用的界面,

 

C_alpha建议取1

[展开全文]

保存文档::wq   强制退出: :q!

库朗数超过1,会发散

用命令Co,可以查看时间序列下的库朗数

[展开全文]

probe:对值场的值抓取和采样。

type:probes

functionObjectLibs('libsample')

outputControl timestep

timetrael  1

enabled true

fields(

u

)probeLocations

(1 1 1)这是位置

fixedLocations  false

 

fiedMinMax 给出场中的最大值和最小值和坐标

1、绝对值作为标准

2、根据某个方向上的极值情况输出极大值和极小值。

 

minMaxU

{

type fieldMinMax

functionObjectLibs('libfieldFunctionObjects.so')

fields

(U);

mode magnitude ;magnitude\component绝对值和方向

outputControl timeStep

outputInterval  1;

log on  write min\max data to standard output,

 

location  yes  写出坐标

write yes

[展开全文]

forcesCofficients:输出升力系数,

[展开全文]

1、function objects为函数对象,程序运行的时候直接链接,有时候和工具是重合的,probe、大密度连续采样这时候用工具里面的,这时候会输出大量的文件,function object运行的时候设定好,大大节省硬盘空间,在controlDict底下。

 

画图,监视程序,forces

压力场的积分值,pressure,skin-friction

forces{

type forces;

functionObjectLibs('libforces.so');

patches(hull);边界面

rhoinf  998.8;在不可压缩流里面需要

rhoName  不是必须的

UName  不是必须的

 

log   on;是否显示出来受力

outputControl  timestep:

outputInterval  1;每一个步长输出

 

 

 

 

cofR  (1 1 1)算力矩指定一个点,围绕这个点得到的力矩

fieldAverage,场的值

边界上的值(wall shear stress)

图像的生成,模拟的监视。

 

 

stupid

[展开全文]

refineMesh:加密网格,可以在多个方向进行加密,可以直接使用,直接使用就会对所有网格进行加密,如果不生成新文件夹,refineMesh -overwrite,这样直接覆盖原先生成的网格,每个方向都会扩大两倍。

refineMeshDict,对特定的区域进行加密

用topeset选定网格序列,加载到 set 

指定方向要加密的方向,总体坐标系coordinatesystem总体坐标系,指定两个加密方向

tan1(1 0 0)X方向

tan2(0 1 0) y方向

只需要指定加密方向:tan1  tan2  normal

 

usehextopology :是否只用六面体网格加密

 

geometriccut  :允许是否切割网格。

 

可以直接执行,网格每个方向加密一倍

 

 

[展开全文]

1、createBaffles:内部的面转变为边界面。内部面(neighbor 和owner)外部面只有owner,无厚度的面,画内部的无厚度面。createBafflesDict:internaofacesonly true:facezone包含了一些边界面,内部的边界面不会修改,只会改内部面,只改内部面。方法1:type:faceZone(topeset创建)

zoneName: baffleFaces

指定patches,patchPairs,两面壁面,两个边界条件都一样,参数都一样。create two patches of same type,same

方法2 :

pathces,两边的边界条件不一样,制定两个master和slave两个面,两个面分别给不同的边界条件。

周期性的边界条件,master和slave都是cycliAMI,周期性的面只能用patches。

案例:damBreakPorousBaffle,加了个有渗透无厚度的壁面,createBafflesDict,,,searchableSurface:指定一个圆点,制定跨域,p_rgh:压力突变  porousBafflesPressure类型边界条件,(达西公式)createBafflesoverwrite    setFields

[展开全文]

1、transformpoint,对已经生成的网格进行移动。translate+vector移动;rotate+(vector vector)旋转;3、scale+vector成比例的放大和缩小。

成比例放大和缩小:transforPoints -case cavity -scale‘(1.2 0.4 1)’X方向1.2倍,Y方向0.4倍。

rm -rf 删除文件夹。

2、checkMesh,检查网格。

 

[展开全文]

mkdir -p $FOAM_RUN

General intro on the solvers

-basic

   -potentialFoam:solve the velocity potential

  -laplacianFoam:solve the Laplacian equation for diffusiom process

  -scalarTransportFoam:solve the transport equation for prassive scalar 

-combustion

-compressible 

  -rhoSimpleFoam :compressible+simpleFoam

  -rhoPimpleFoam:compressoble+pimpleFoam

  -rhoPorousSimpleFoam:compressoble+PorousSimpleFoam

 

 

 

 

[展开全文]
点击这里给我发消息