需求是 通过probes,随计算时间步实时输出 目标位置的压力值。
wh3296
帖子
-
-
现在算一个船体运动响应的动网格算例,用probes监测某几处位置(均位于船体外表面)的压力p。
计划算50s,算到22s的时候计算中止。在22s重新提交,发现由于船体运动,0时刻probes的位置在22s时刻 不在流场域了,所以probes的位置都捕捉不到了。。。
这种情况有什么解决方案吗?
求指教。
-
@李东岳 解决了,谢谢!
-
网格划分好了之后,计算报错。貌似是wall边界条件的问题?还是湍流模型的问题呢?
哪位大佬可以点拨一下,不胜感激!Reading transportProperties Selecting incompressible transport model Newtonian Selecting incompressible transport model Newtonian Selecting turbulence model type RAS Selecting RAS turbulence model kOmegaSST [8] [8] [8] --> FOAM FATAL IO ERROR: [8] Entry 'method' not found in dictionary "IOstream.wallDist" [8] [8] [8] file: IOstream.wallDist [8] [8] From function bool Foam::dictionary::readEntry(const Foam::word&, T&, Foam::keyType::option, bool) const [with T = Foam::word] [8] in file /home/b408/OpenFOAM/OpenFOAM-v1912/src/OpenFOAM/lnInclude/dictionaryTemplates.C at line 334. [8] FOAM parallel run exiting
-
@李东岳 好的,我试试这个思路,多谢李老师了!
-
@李东岳
李老师,我试了下,controlDict文件里是这样写的:functions { { // Line 57 const point A = point[222]; vector = A[222] - A[222].oldtime(); Info << vector; } ........ }
运行报错:
Create time [0] [0] [0] --> FOAM FATAL IO ERROR: [0] Found { but expected } [0] [0] file: /home/b408/OpenFOAM/b408-v1912/run_test/DTCHullMoving_t1222_0/system/controlDict at line 57. [0] [0] From function static bool Foam::entry::New(Foam::dictionary&, Foam::Istream&, Foam::entry::inputMode, int) [0] in file db/dictionary/entry/entryIO.C at line 179. [0] FOAM parallel run exiting [0] -------------------------------------------------------------------------- MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD with errorcode 1. NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. You may or may not see output from other processes, depending on exactly when Open MPI kills them. --------------------------------------------------------------------------
-
@李东岳 这是可以的。我想实现的是 某个位置的位移随每个计算时间步timeStep实时输出。就像controlDict里的function通过probe输出p和U一样。
-
求助 请教,在包含结构物运动的动网格算例中(例如floatingObject,DTCHullMoving此类),怎样提取结构物表面某一点的位移pointDisplacement?
在controlDict文件中 用Probe尝试过,只能提取U p等,无法提取pointDisplacement。个人猜测原因是:U p是数据记录在网格的场,而pointDisplacement数据记录在节点。
在网上也看了好多关于数据分析和后处理的资料,一直找不到方法。求大神指教!不胜感激! -
@五好青年 请问您知道提取位移的方法了吗?遇到了同样的问题,求指导。谢谢!
-
@cccrrryyy 好的,谢谢!
-
由于实验室断电,一个正在计算的算例计算中断。瞬态两相流算例,计算时间设置 startTime 为 0 s,endTime为 9 s,输出间隔0.1s,固定时间步长。四核并行。
计算中断时,计算进行到6.56s,输出文件中保留了 0 s 时刻到 6.5 s 时刻的数据。
请问:
我根据输出时间步6.5s的结果数据继续计算(即设置startTime为 6.5 s,endTime为 9 s),这样得到的结果可靠吗?
相比于从0 s 重新计算,两者结果差别大吗?
求大佬指教,谢谢! -
@星星星星晴 好的,多谢啦~
-
@星星星星晴 但是这个报错是运算了一定时间之后出现的,从0时刻开始计算,计算时间设定38s,一般是18s前后出现报错消息,前17s结果良好。
-
@星星星星晴 谢谢,那应该就是处理器边界条件了...
-
@cccrrryyy scotch也不行,也会报错......
-
@cccrrryyy 好的,我试一下,谢谢!
-
@xiaohsu2006 请问问题解决了吗?我也遇到了类似的问题。谢谢!
-
@队长别开枪 刚看了一下,设置都没有问题。不过,昨晚试了下,不并行,单核计算的情况下,一切正常,没有出现发散的情况。所以,是并行导致的问题吗?谢谢!
FoamFile { version 2.0; format ascii; class dictionary; note "mesh decomposition control dictionary"; object decomposeParDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // numberOfSubdomains 6; method simple; //method hierarchical; // method simple; // method metis; // method manual; // method multiLevel; // method structured; // does 2D decomposition of structured mesh simpleCoeffs { n (6 1 1); delta 0.001; }
-
-
请问出现这种情况是什么原因呢?
设置Co <1自动调整时间步长,而Co数还比较小,但是时间步长却已经很小了。如下图所示。
这个时间步之前都很正常(如下图所示):
请问是什么原因呢?谢谢! -
本人把OpenFOAM安装在系统盘,在另一个非系统盘里运行算例会报错(即使是简单的blockMesh命令),如下所示。而在系统盘运行相同算例不会有任何问题。
请问 是什么原因呢?谢谢!XXX@XXX:/media/XXX/sdb_01/cases for reference/waveFlume$ blockMesh /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 3.0.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 3.0.0-6abec57f5449 Exec : blockMesh Date : Aug 12 2019 Time : 22:35:11 Host : "408" PID : 12975 fileName::stripInvalid() called for invalid fileName /media/XXX/sdb_01/casesforreference/waveFlume For debug level (= 2) > 1 this is considered fatal 已放弃 (核心已转储)
-
本人已经将代码部分写好并重新编译了waves2Foam库,但是在算例中,运行setWaveField这一步时,还是会提示:
--> FOAM FATAL ERROR: Unknown wave theory type freakWave Valid wave theories types are : 14 ( stokesFirstStanding cnoidalFirst combinedWaves irregular bichromaticSecond bichromaticFirst streamFunction solitaryFirst stokesSecondModulation externalSource stokesFirst stokesFifth stokesSecond potentialCurrent )
请问该如何处理?谢谢!
-
如题,多谢!
-
@程迪
您好,有个问题想请教您。看到您在《OpenFOAM的残差定义》一文中提到了残差定义方式:https://chengdi123000.github.io/2018/01/04/OpenFOAM的残差定义/
关于分母normFactor,有些疑问,不知道为什么要这样定义,有什么数学上的原理吗?
谢谢! -
公式链接:OpenFOAM的残差定义:
https://chengdi123000.github.io/2018/01/05/OpenFOAM的残差定义/ -
@cccrrryyy
多谢!
请问,在这个公式中,x和x0分别表示什么呢? -
有点疑惑,请问 Initial residual , Final residual 的定义是什么?是残差的绝对值还是相对值?
另外,residual是怎样用来度量动量方程的满足情况的?谢谢! -
@wwzhao 在 关于piso循环的二次修正的一个疑问 中说:
OpenFOAM认为在低库朗数情况下,动量方程中的非线性项 ∇⋅(uu)∇⋅(uu)\nabla \cdot (\textbf u \textbf u) 对系统的影响远比速度压力耦合对系统的影响小,因此在循环时不更新速度。
请问,这样是不是意味着:
PISO算法中,每一时间步最终迭代后所满足动量方程的对流项 fvm::div(phi,U),其中phi为上一时间步的值,U为该时间步的值。 -
@wwzhao 明白了,谢谢老师!
-
@史浩 我好好看一下,谢谢!
-
@wwzhao
举个例子的话,我的理解是:
对于方程 fvm::ddt(U)+fvm::div(phi, U)== fvc::Su(...) ,fvc::Su(...)在等号的源项一侧,fvc::Su(...)项的存在使矩阵方程 [A][x]=[b] 的 [b] 项增加;
而 fvm.source() -= mesh.V()*su.field();这一行的意思是在源项中减去SuVp;
这个地方还是理解不了...请指教。 -
@wwzhao 谢谢您的解答!
不过还有个小问题,根据您之前在其他地方的回答,在矩阵方程 [A][x]=[b] 中,[b] 可以分为 internal field 产生的源项 source(),及 boundary conditions 对源项的影响 boundaryCoeffs_。
即:在[A][x]=[b]中,fvm.source() 是等号右边的项。
在方程fvm::ddt(U) +fvm::div(phi, U) == fvc::Su(...) fvc::Sp(...) fvc::SuSp(...) (==是-)
中,(1)fvc::Su也是和源项在一侧的,还是不能理解 fvm.source() -= mesh.V()*su.field();
(2)同时,既然Sp项前面有减号,为什么在fvm.diag()上可以直接加Sp项呢? fvm.diag() += mesh.V()*sp.field();
问题比较基础,还需多多请教。谢谢! -
一般形式的对流扩散方程为
将对流项和扩散项的体积分转为面积分:
源项可以写作
在《OpenFOAM中的有限体积离散》(原文链接:http://marinecfd.xyz/post/openfoam-finite-volume-discretization/)中,有如下表述:
fvm::su 将 su 的值乘以网格体积后施加到 source() 上:// OpenFOAM/src/finiteVolume/finiteVolume/fvm/fvmSup.C#L32 template<class Type> Foam::tmp<Foam::fvMatrix<Type>> Foam::fvm::Su ( const DimensionedField<Type, volMesh>& su, const GeometricField<Type, fvPatchField, volMesh>& vf ) { const fvMesh& mesh = vf.mesh(); tmp<fvMatrix<Type>> tfvm ( new fvMatrix<Type> ( vf, dimVol*su.dimensions() ) ); fvMatrix<Type>& fvm = tfvm.ref(); fvm.source() -= mesh.V()*su.field(); return tfvm; }
fvm::sp 将 sp 的值乘以网格体积后施加到对角元素 diag() 上:
// OpenFOAM/src/finiteVolume/finiteVolume/fvm/fvmSup.C#L98 template<class Type>template<class Type> Foam::tmp<Foam::fvMatrix<Type>> Foam::fvm::Sp ( const volScalarField::Internal& sp, const GeometricField<Type, fvPatchField, volMesh>& vf ) { const fvMesh& mesh = vf.mesh(); tmp<fvMatrix<Type>> tfvm ( new fvMatrix<Type> ( vf, dimVol*sp.dimensions()*vf.dimensions() ) ); fvMatrix<Type>& fvm = tfvm.ref(); fvm.diag() += mesh.V()*sp.field(); return tfvm; }
请问,在fvmSup.C文件中,
fvm.source() -= mesh.V()*su.field(); fvm.diag() += mesh.V()*sp.field();
SuVp项不是本来就在等号右边吗?为什么代码中是减号?
SpVpϕp要移项至等号左边合并成系数矩阵,为什么代码中是加号?
谢谢!
动网格 运动浮体表面的压力监测
动网格 运动浮体表面的压力监测
求助贴:湍流计算遇到一个小问题,求指教
求助贴:湍流计算遇到一个小问题,求指教
动网格算例中,怎样提取结构物表面某点的位移pointDisplacement?
动网格算例中,怎样提取结构物表面某点的位移pointDisplacement?
动网格算例中,怎样提取结构物表面某点的位移pointDisplacement?
动网格算例中,怎样提取结构物表面某点的位移pointDisplacement?
OpenFOAM中动网格(或者重叠网格)计算后,怎么提取浮体的位移呢?
计算中断后可以根据已输出结果继续计算吗?
计算中断后可以根据已输出结果继续计算吗?
Time step continuity errors: ....cumulative = 1.42075e+40
Time step continuity errors: ....cumulative = 1.42075e+40
Time step continuity errors: ....cumulative = 1.42075e+40
Time step continuity errors: ....cumulative = 1.42075e+40
Time step continuity errors: ....cumulative = 1.42075e+40
并行计算出现错误,一直没搞定,求教大神!
Time step continuity errors: ....cumulative = 1.42075e+40
Time step continuity errors: ....cumulative = 1.42075e+40
Time step continuity errors: ....cumulative = 1.42075e+40
关于OpenFOAM在非安装盘运行的一点小问题
虚拟机计算扩容问题
怎样在waves2Foam中增加新的自定义波浪类型?
怎样在waves2Foam中增加新的自定义波浪类型?
LU-SGS求解器
关于OpenFOAM的残差定义问题请教
关于OpenFOAM的残差定义问题请教
关于OpenFOAM的残差定义问题请教
关于OpenFOAM的残差定义问题请教
关于piso循环的二次修正的一个疑问
关于源项处理方法fvm::su和fvm::sp的疑问
关于源项处理方法fvm::su和fvm::sp的疑问
关于源项处理方法fvm::su和fvm::sp的疑问
关于源项处理方法fvm::su和fvm::sp的疑问
关于源项处理方法fvm::su和fvm::sp的疑问