@youmengtian 能请教一下你是怎么测试tut中的算例的吗?我计算算例的时候先用scalarTransportFoam计算出一个时间段的结果,再使用PODSolver就报错了。请问你是怎么计算的呀
yang山青
帖子
-
OpenFOAM扩展版本中有一个PODSolver,有用过的吗? -
数组类型的变量场怎么分别设置边界条件?@东岳 我可能没有懂您的意思。但是我设置数组变量的时候也是您这样设置的,然后这样怎么能够分别设置边界条件呢?比如
T1
的左边界是定值,右边界是零梯度。而T2
左边界是零梯度,右边界是定值呢?而且我要的变量场是因变量,就是需要在0文件中设置初始时刻的边界条件。 -
数组类型的变量场怎么分别设置边界条件?@东岳 因为需要定义边界的量有T[0]、T[1]、T[2]等。但是在0文件夹中只有一个T文件夹,并没有能够分别为各个数组成员赋予边界条件啊。试过分别建立初始条件但是并不能识别
-
数组类型的变量场怎么分别设置边界条件?如题,在计算时由于重复性工作所以使用数组进行计算比较方便,但是在0文件夹中定义边界条件时却只能为这些数组变量定义相同的边界条件。有没有办法在不改变其数组特性的情况下做到分别赋予其边界条件啊?
-
边界条件中的transform明明是和zeroGradient等边界条件放在一起的,应该是个基础边界条件吧?为什么在使用的时候显示unknown呢
-
OpenFOAM中有全反射或者类似的边界条件吗?如题,需要做一个全反射边界,希望有库可以参考
-
数组变量边界条件的设置@李东岳 谢谢。我将原代码放入了另外一个求解器中就没有了这种问题,可能是路径的问题
-
数组变量边界条件的设置单独计算和通过数组循环计算的结果分别如下(取相同方向):
循环计算时在四个顶点处有数据错误。在计算各方向的方程时为了方便使用了数组进行循环,所设的变量如下:
PtrList<volScalarField> PHI(nRay_); forAll(PHI, nRay_) { PHI.set ( nRay_, new volScalarField ( IOobject ( "PHI"+i, runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh ) ); }
计算方程如下:
while (simple.loop()) { Info<< "Time = " << runTime.timeName() << nl << endl; i = 0; forAll(PHI,i) { while (simple.correctNonOrthogonal()) { fvScalarMatrix TEqn ( fvm::ddt(PHI[i]) + fvc::div(phiA[i],PHI[i]) == - fvm::Sp(v*sigmaT,PHI[i]) + fvOptions(PHI[i]) ); TEqn.relax(); fvOptions.constrain(TEqn); TEqn.solve() ; fvOptions.correct(PHI[i]); } }
变量的边界条件设置如下:
dimensions [0 -1 0 0 0 0 0]; internalField uniform 0; boundaryField { movingWall1 { type empty; } movingWall2 { type zeroGradient; } fixedWall1 { type zeroGradient; } fixedWall2 { type empty; } fixedWall3 { type zeroGradient; } fixedWall4 { type zeroGradient; } }
单独调出每个变量的边界条件均与所设相同。求教这是什么问题?
-
怎么编写法向二阶梯度为0的边界条件@李东岳 您认为如果在边界周围将网格密度增大,然后使用zeroGradient边界条件能近似看成连续性边界吗?
-
怎么编写法向二阶梯度为0的边界条件@李东岳 根据方程来看,是这样的。从物理上可以认为是一个内边界。
-
怎么编写法向二阶梯度为0的边界条件@李东岳 并不是一阶为固定值啊,因为在每个网格上是定梯度,但是在整个边界上并不是所有网格都是相同的梯度。
-
怎么编写法向二阶梯度为0的边界条件在计算中需要用到连续性边界条件,即法向二阶梯度为0。在常用的边界条件中能看到gradientInternalCoeffs()和gradientBoundaryCoeffs(),应该能够通过将这个一阶梯度变为二阶梯度来实现这个边界条件,但是不知道这个函数在哪定义?或者有没有其他的实现这个边界的方法?谢谢
-
切结边界网格命名问题@李东岳 相关的
createField.H
volVectorField U ( IOobject ( "U", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh );
surfaceScalarField gSurf_ ( IOobject ( "gSurf", mesh.time().timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, dimensionedScalar ( "0", dimMass/pow3(dimLength), 0.0 ) );
应该就这些了吧
-
切结边界网格命名问题我想将我的边界根据边界条件的不同类型划分为不同的类型场,以便以后调用,但是现在的代码报错
const GeometricField<vector, fvPatchField, volMesh>::Boundary& uBCs = U.boundaryField(); forAll(uBCs, patchi) { if (uBCs[patchi].type() == "farField") //inlet { gSurf_.boundaryField().set ( patchi, fvsPatchField<scalar>::New ( "farField", mesh.boundary()[patchi], gSurf_ ) ); } else if (uBCs[patchi].type() == "bounceBack") //maxwellWall { gSurf_.boundaryField().set ( patchi, fvsPatchField<scalar>::New ( "bounceBack", mesh.boundary()[patchi], gSurf_ ) ); } }
错误原因是
createFields.H: In function ‘int main(int, char**)’: createFields.H:160:13: error: passing ‘const Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh>::Boundary’ as ‘this’ argument discards qualifiers [-fpermissive] );
求解我这问题在哪啊
-
如何设置面的外法线@李东岳 谢谢老师,我会试试看
-
如何设置面的外法线@李东岳 谢谢老师,这样处理确实很方便。请问老师在openFOAM中有全反射的边界条件吗?
-
如何设置面的外法线在编写边界条件时需要用到面的外法线方向以判定边界上的因变量是出流还是入流,流动的方向已知,请问怎么设置面的外法线方向