,我想在PQ中求解一套控制方程,同在P中求解林一套控制方程,这种要怎么实现了,有大佬了解吗
kcol
帖子
-
多域求解器 -
OpenFOAM中实现结果的转移有一整个计算域Q
我通过计算出整个Q的速度分布后,我想在P中以刚刚计算出的速度值作为初始值重新计算,在P中计算时整个计算域未P,并重新赋予P的边界条件,我想用两个算例文件夹来实现,可是困难是如何将第一步计算出的结果转移到第二个文件内,并作为初始值,请问OpenFOAM可以实现这种吗 -
matllab数据导入paraview如何在matlab中将二维流场写入vtk文件,找了一圈都只有三维的,有大佬知道吗
-
scalarField和volScalarField@Tens volScalarField::Internal等同于scalarField吗
-
scalarField和volScalarField@BlookCFD
边界上没有体积应该怎么理解了,为什么这个公式无法用来计算边界值,我想把Vc当作一个标量场,这样Qc可以看作一个T的函数,这样应该怎么实现了 -
scalarField和volScalarField最近在处理一个式子时出现问题了,主要如下:
其中Vc是网格体积,首先我想的是用 volScalarField Vc = mesh.V();但是会报错,百度发现要写成:const scalarField& Vc = mesh.V();把Vc换成scalarField在计算后续的Qc时会报错,是因为类型不匹配,我给Qc定义的volScalarField,按照我的理解,这两个矩阵只要规模一样就不会报错,这两种类型有什么区别了,应该怎么把scalarField转化为volScalarField了,有大佬告知吗 -
OpenFOAM中的时间步是向后差分,但是我没有用到ddt,是自己写的函数推进时间步
-
OpenFOAM中的时间步
按照上述算法来执行,也就是第一二步写成如下形成:volScalarField alpha10("alpha10", 2*alpha1-alpha1.oldTime()); volScalarField alpha11("alpha11", 2*alpha1-0.5*alpha1.oldTime());
是不对的,如果写成
volScalarField alpha10("alpha10", 2*alpha1.oldTime()-alpha1.oldTime().oldTime()); volScalarField alpha11("alpha11", 2*alpha1.oldTime()-0.5*alpha1.oldTime().oldTime());
算法就变成了就可以求解,只是求解精度比matlab上写的精度差一点,应该是第一二步有点问题。图片中的算法在matlab中实施起来是没问题的
-
OpenFOAM中的时间步这样说我的代码写的就没问题,但是实际计算的时候这样写就是不对,同时我要是写成
2*alpha1.oldTime()-alpha1.oldTime().oldTime()
这样计算结果就是没问题的, -
OpenFOAM中的时间步写在组建方程的前面,开始时间步循环计算alpha的开头,
-
OpenFOAM中的时间步
我想实现上述算法,我如果用volScalarField alpha10("alpha10", 2*alpha1-alpha1.oldTime()); volScalarField alpha11("alpha11", 2*alpha1-0.5*alpha1.oldTime());
来表示算出来的结果就有问题,正常算一个周期的迭代步数只能算三分之二周期
-
OpenFOAM中的时间步谢谢东岳大神。但是我现在有个算法,按照这个植入好像算的结果不对,能算一个周期的时间步只算了不到一个周期。
具体算法如下:
代码如下```
code_text{ const dimensionedScalar DeltaT = runTime.deltaT(); dimensionedScalar r = 1.5; volScalarField alpha10("alpha10", 2*alpha1-alpha1.oldTime()); volScalarField alpha11("alpha11", 2*alpha1-0.5*alpha1.oldTime()); volVectorField U10("U10",2*U-U.oldTime()); phi10 = fvc::interpolate(U10)& mesh.Sf(); H = twoPhaseProperties.calcuH(alpha10); H.correctBoundaryConditions(); dimensionedScalar beta_ = sqrt(1.5/(thicknesss_*thicknesss_*Mu_*DeltaT)); fvScalarMatrix midEqn ( fvm::laplacian(mid) -fvm::Sp((c-sqrt(c*c-1))*beta_,mid) ); solve ( midEqn == (-fvc::div(phi10,alpha10)+alpha11/DeltaT)/(thicknesss_*thicknesss_*Mu_) +fvc::laplacian(H/(thicknesss_*thicknesss_)-2*c*beta_*alpha10) ); mid.correctBoundaryConditions(); fvScalarMatrix alpha1Eqn ( fvm::laplacian(alpha1) -fvm::Sp((c+sqrt(c*c-1))*beta_,alpha1) ); solve ( alpha1Eqn ==mid ); alpha1.correctBoundaryConditions(); alpha1 = max(min(alpha1,1.0),-1.0); alpha1.correctBoundaryConditions(); }
这是计算一个周期的结果
如果我将代码更改为code_text ```{ const dimensionedScalar DeltaT = runTime.deltaT(); dimensionedScalar r = 1.5; volScalarField alpha10("alpha10", 2*alpha1.oldTime()-alpha1.oldTime().oldTime()); volScalarField alpha11("alpha11", 2*alpha1.oldTime()-0.5*alpha1.oldTime().oldTime()); volVectorField U10("U10",2*U.oldTime()-U.oldTime().oldTime()); phi10 = fvc::interpolate(U10)& mesh.Sf(); H = twoPhaseProperties.calcuH(alpha10); H.correctBoundaryConditions(); dimensionedScalar beta_ = sqrt(1.5/(thicknesss_*thicknesss_*Mu_*DeltaT)); fvScalarMatrix midEqn ( fvm::laplacian(mid) -fvm::Sp((c-sqrt(c*c-1))*beta_,mid) ); solve ( midEqn == (-fvc::div(phi10,alpha10)+alpha11/DeltaT)/(thicknesss_*thicknesss_*Mu_) +fvc::laplacian(H/(thicknesss_*thicknesss_)-2*c*beta_*alpha10) ); mid.correctBoundaryConditions(); fvScalarMatrix alpha1Eqn ( fvm::laplacian(alpha1) -fvm::Sp((c+sqrt(c*c-1))*beta_,alpha1) ); solve ( alpha1Eqn ==mid ); alpha1.correctBoundaryConditions(); alpha1 = max(min(alpha1,1.0),-1.0); alpha1.correctBoundaryConditions(); }
这是这段代码的计算结果
这才是一个周期,我实在是弄不清楚问题在哪希望大佬可以解答一下 -
200万网格并行算力测试(OpenFOAM版本)cpu型号:至强金牌6248R *2 3.0hz 系统:ubuntu18.04 OpenFOAM7 48 88.44 32 98.13 16 134.52 8 171.81 4 310.69 2 594.59 1 1124.32
-
OpenFOAM中的时间步在OpenFOAM的时间步循环中,开始循环U是表示当前已知时间步U(n),现在求的是U(n+1),U.oldTime()表示U(n-1)
还是说U表示表示上一时间步U(n-1),现在求的是U(n),U.oldTime()表示U(n-2) -
用较小的时间步长,结果反而出问题了好像有个理论大致意思是时间步过小也会造成较大误差
-
OpenFOAM中组建矩阵方程下面这个公式我应该如何写了
写成2*symm(fvc::grad(U))可以吗,或者是0.5 * (gradU + transpose(gradU)),还是说这两种都不对啊,请大佬指教 -
隐式离散构造方程@李东岳 谢谢大佬
-
隐式离散构造方程
如果我要将这个方程左边全部隐式离散构造为方程,第二项应该怎么写了其中c和β都是已知的,有大佬知道吗