@李东岳 对哦,谢谢您
yjc95
帖子
-
of10下pitzDaily案例调用SIMPLE算法,代码该如何修改? -
of10下pitzDaily案例调用SIMPLE算法,代码该如何修改?@李东岳 老师,pitzDaily这个案例用的是simpleFoam,代码里面也有设置参考点
pEqn.setReference ( pressureReference.refCell(), pressureReference.refValue() );
为啥包括
fvSolution
文件在内的所有文件都没有设置压力参考点呢?是默认为0吗? -
of10下pitzDaily案例调用SIMPLE算法,代码该如何修改?@李东岳 谢谢岳子老师,我很想去,但实际情况不允许。
-
of10下pitzDaily案例调用SIMPLE算法,代码该如何修改?@李东岳 老师,我改了松弛因子,还是报错
SIMPLE { nNonOrthogonalCorrectors 0; consistent no; residualControl { p 1e-2; U 1e-3; "(k|epsilon|omega|f|v2)" 1e-3; } } relaxationFactors { equations { U 0.9; // 0.9 is more stable but 0.95 more convergent ".*" 0.9; // 0.9 is more stable but 0.95 more convergent p 0.9; // } }
Time = 6s smoothSolver: Solving for Ux, Initial residual = 1, Final residual = 0.0894736, No Iterations 7 smoothSolver: Solving for Uy, Initial residual = 1, Final residual = 0.0905951, No Iterations 7 #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" #3 Foam::GAMGSolver::scale(Foam::Field<double>&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, Foam::Field<double> const&, unsigned char) const at ??:? #4 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? #5 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? #6 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) at ??:? #7 Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #8 Foam::fvMatrix<double>::solve() in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #9 ? in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #10 ? in "/lib/x86_64-linux-gnu/libc.so.6" #11 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #12 ? in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" 浮点异常 (核心已转储)
-
of10下pitzDaily案例调用SIMPLE算法,代码该如何修改?of10下pitzDaily案例默认采用SIMPLEC算法,
consistent
为yes
SIMPLE { nNonOrthogonalCorrectors 0; consistent yes; residualControl { p 1e-2; U 1e-3; "(k|epsilon|omega|f|v2)" 1e-3; } }
我想试试用SIMPLE算法,把
consistent
改为no
,simpleFoam求解器里面的pEqn.H文件里有p.relax()
(即已经对压力场进行松弛),运行之后报错Time = 6s smoothSolver: Solving for Ux, Initial residual = 1, Final residual = 0.0894736, No Iterations 7 smoothSolver: Solving for Uy, Initial residual = 1, Final residual = 0.0905951, No Iterations 7 #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" #3 Foam::GAMGSolver::scale(Foam::Field<double>&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, Foam::Field<double> const&, unsigned char) const at ??:? #4 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? #5 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? #6 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) at ??:? #7 Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #8 Foam::fvMatrix<double>::solve() in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #9 ? in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #10 ? in "/lib/x86_64-linux-gnu/libc.so.6" #11 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #12 ? in "/home/dyfluid/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/simpleFoam" 浮点异常 (核心已转储)
-
PISO算法讨论@李东岳 老师我看错了,不好意思
-
PISO算法讨论@李东岳 岳子老师,先说明下,我不是在故意挑刺,就是看到有些笔误的地方真心难受,很想把它改过来。
不可压+瞬态 里,方程29是方程28+19得到的,等号右边的$\frac{1}{V_{p}}$应该是加了两遍,那么应该是$\frac{2}{V_{p}}$吧,同理,下面的几个方程也是。
不可压+稳态 里,方程27以及后面几个方程也是同样的。 -
势流算法问题@李东岳 老师,方程(20)的负号应该是正号吧?方程(20)下一行括号里的应该也是正号吧?
-
势流算法问题 -
势流算法问题老师,先不纠结上面的系数矩阵,我想到了另一种理解方程(11)的角度,对于1D情况,按照方程(11)对网格1进行离散,如下
故
$$-\frac{\Phi_{2}-\Phi_{1}}{\Delta x}=-\frac{\partial \Phi} {\partial x}_{A}+S\Delta x$$
又$$\frac{\partial \Phi }{\partial x}_{A}=0 $$
故$$-\frac{\Phi_{2}-\Phi_{1}}{\Delta x}=S\Delta x$$
为了和方程(10)相等,$$S=\frac{u_{inlet}}{\Delta x}$$
S的第一个分量应该是$\frac{u_{inlet}}{\Delta x}$,不是$ u_{inlet} $吧?
顺带说一嘴,方程(10)$\frac{\partial \Phi }{\partial x}_{A}$前面应该有个负号吧? -
势流算法问题 -
势流算法问题 -
势流算法问题 -
势流算法问题 -
势流算法问题 -
势流算法问题哪个第一个图?
另外,按照 http://dyfluid.com/potentialFoam.html 上面写的,目前我们要证明的是,链接里面的方程10(进口固定梯度,出口固定值),与方程11(进口零法向梯度,出口固定值,附加源项)的等价。考虑4网格系统,方程10与11离散出来的矩阵都是:
\begin{equation}
\begin{bmatrix}
1 & -1 & & \\
-1 & 2 & -1 & \\
& -1 & 2 & -1 \\
& & -1 & 3 \\
\end{bmatrix}
\begin{bmatrix}
\Phi_1 \\
\Phi_2 \\
\Phi_3 \\
\Phi_4 \\
\end{bmatrix} \equiv
\begin{bmatrix}
u_{inlet} \\
0 \\
0 \\
v \\
\end{bmatrix}
\end{equation}老师,方程(11)和进口固定梯度,出口固定值得到的矩阵我又手算了一遍。对于4网格系统:
1. 进口固定梯度,出口固定值
边界条件:
cell 1:
cell 2:
同理cell 3:
cell 4:
矩阵为:
2. 方程(11)
边界条件:
cell 1:
cell 2:
同理cell 3:
cell 4:
矩阵为:
和您算的系数矩阵第四行不一致,和等号右边的第一行和第四行也不一致,但计算过程我检查了好几遍,也没发现问题,问题出在哪儿了?
-
PISO算法讨论谢谢岳子老师。
-
PISO算法讨论@Afr1yne
1.我知道是湍流模型,我想在openfoam的代码中找到它
3.我了解过FvVectorMatrix,说它存储了Ax=b的相关信息。我也能猜到不是连等,我只是想看看最底层的定义,但我不知道在哪里找。
在你想标红的字前后加上` -
PISO算法讨论- icoFoam是不能用湍流模型的,fvm::laplacian(nu , U)是动量方程右边的粘性项。pisoFoam用湍流模型把粘性项模化turbulence->divDevSigma(U)。fvModels.source(U)是源项。
2.solve(UEqn == -fvc::grad(p))是momentumPredictor里面的,不开的话是用不上的,我感觉你是不是把它理解成求解了?
谢谢您的回复。
1.“pisoFoam用湍流模型把粘性项模化turbulence->divDevSigma(U)”具体是咋模化的呢?
2.“fvModels.source(U)是源项”是哪个源项?是体积力、电场力这种?
3.假设我打开了动量预测,这俩==该咋理解呢? - icoFoam是不能用湍流模型的,fvm::laplacian(nu , U)是动量方程右边的粘性项。pisoFoam用湍流模型把粘性项模化turbulence->divDevSigma(U)。fvModels.source(U)是源项。
-
PISO算法讨论fvm::ddt(U) + fvm::div(phi , U) + MRF.DDt(U) + turbulence->divDevSigma(U) == fvModels.source(U)
solve(UEqn == -fvc::grad(p))
这是icoFoam里的速度方程
fvm::ddt(U) + fvm::div(phi , U) - fvm::laplacian(nu , U)
solve(UEqn == -fvc::grad(p))
比较不难发现,pisoFoam里的速度方程多了
MRF.DDt(U)
,turbulence->divDevSigma(U)
和== fvModels.source(U)
,少了fvm::laplacian(nu , U)
。MRF.DDt(U)
是和旋转结构有关,在cavityRAS这个案例中用不到。1.
turbulence->divDevSigma(U)
应该是这个案例中用到的K-epsilon方程,这个方程的具体代码在哪个文件里可以看到呢?fvModels.source(U)
就是fvm::laplacian(nu , U)
吗?2.
第一段代码中已经有
==
了,第二段代码又有一个==
,从逻辑上讲,应该将fvModels.source(U)
移到等号左边,再等于-fvc::grad(p)
,这是C++语法特点吗?