OpenFOAM

4.5k 主题 26.2k 帖子
  • 如何设置面的外法线

    5 帖子
    2k 浏览

    @李东岳 谢谢老师,我会试试看

  • paraview5.0.1设置彩虹色为默认的问题。

    2 帖子
    1k 浏览

    已解决,解决方法如下:(有效但不是唯一)
    Step1:
    cd .config/
    Step2:
    cd ParaView
    Step3:
    gedit ParaView-UserSettings.json
    Step4:
    把图中的 "ColorSpace" : 0, 改成 "ColorSpace" : 1,(把数字改成1就OK了)0_1516159750930_2018-01-17 11-26-32屏幕截图.png

  • 流固耦合wingMotion

    3 帖子
    2k 浏览

    @李东岳 哦哦,是这样。顺带问大哥个问题,我用另一个翼型照wingmotion例子的前处理用simplefoam算,结果time step continuity errors 总在十几步发散,想问下这个时间步连续误差是哪个参数影响的?

    我做的一些尝试:deltT放到1e-8也是到那一步发散,应该不是时间步的问题。湍流模型也改为层流也是到那一步停止,网格大小也没问题,fvscheme用的迎风,应该也没问题。例子里的网格正交性很好,我用的三角网格,把非正交修正也改成5,10也没什么效果。

  • backward和C-N没有二阶精度?

    5 帖子
    3k 浏览

    @yhdthu 呵呵,OF的精度问题不止如此,湍流模型如果是后加的,算子分裂可能会导致精度下降到1阶和稳态无法达到的问题。所以Jasak在FE中玩耦合求解是另外的套路。

  • interPhaseChangeFoam相方程?

    5 帖子
    4k 浏览
    fvc::flux(phi, alpha1, alphaScheme) = fv::convectionScheme<Type>::New ( mesh(), phi, alphaScheme )().flux(phi, alpha1) = phi*interpolate(phi, alpha1) = phi*alpha1f

    因此,代码fvc::flux(phi, alpha1, alphaScheme)即为$\nabla\cdot\left(\alpha \mathbf{U}\right)$

    https://github.com/OpenFOAM/OpenFOAM-dev/blob/master/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C

    https://github.com/OpenFOAM/OpenFOAM-dev/blob/master/src/finiteVolume/finiteVolume/fvc/fvcFluxTemplates.C

  • coalChemistryFoam 编译警告

    1 帖子
    1k 浏览

    在 coalChemistryFoam 的 Make/options 文件里,包含了下面一行

    -I$(FOAM_SOLVERS)/combustion/reactingFoam \

    我对比了 reactingFoam 文件夹下的头文件和 coalChemistryFoam 文件夹下的文件,发现并没有需要调用的。但是去掉这一行之后编译时会给警告

    In file included from /home/user/OpenFOAM/OpenFOAM-5.x/src/OpenFOAM/lnInclude/postProcess.H:129:0, from coalChemistryFoam.C:50: ./createFields.H: In function ‘int main(int, char**)’: ./createFields.H:30:23: warning: unused variable ‘T’ [-Wunused-variable] const volScalarField& T = thermo.T(); ^ ./createFields.H:31:23: warning: unused variable ‘psi’ [-Wunused-variable] const volScalarField& psi = thermo.psi(); ^

    可是这两个变量在 EEqn.H 和 pEqn.H 中有用到。不知道这个警告是否可以忽略?

  • paraview看不到某个变量

    5 帖子
    3k 浏览

    @李东岳 好的 谢谢:happy:

  • interFoam 模拟气泡在静止水域,无重力

    3 帖子
    2k 浏览

    虚假流的产生原因是气泡的数值受力不平衡,由于将表面张力&重力差值到后并不能保证面上满足动量守恒,我记得alamos lab有过一篇paper讲这个问题怎么处理,貌似是在staggered grid上做的,可以找找看看

  • 运行出错。。。

    2 帖子
    1k 浏览

    这个问题可以到stackoverflow上搜或者问,纯代码、linux系统问题。segmentation fault是程序访问地址超出范围,然后被限制了,所以出现很多问号。一般这种问题出现在嵌入式开发交叉编译中,就是硬件A(比如电脑)为硬件B(比如安卓)编译可执行文件。当然编出来的在A上是没法运行的。

    自己编的gcc有c++库,编译求解器应该用的是自己编的。运行的时候用了系统自带的c库,系统自带的c库又去呼喊glibc-2.11,调用start.S(程序运行通用的汇编代码)就错误了。大概是这个样子。

    具体的解决方法,猜不出来:confused: 得摸着电脑慢慢试

  • 关于设置入口速度问题

    8 帖子
    5k 浏览

    @mohui 那我感觉应该可以用,我只是知道,没用过,期待你的结果

  • 学习openfoam需要什么基础?

    3 帖子
    3k 浏览

    大四小朋友 :cheeky:

    如果还没决定要用OpenFOAM,如果只是做本科毕业设计,ANSYS Fluent那面上手要快的多。

    如果可以读硕士,使用OpenFOAM自带的求解器算一算还是可以的,发文章这个东西影响因素太多了,导师是很重要的一部分。

    如果可以读博士,首选OpenFOAM。通过使用OpenFOAM做CFD模拟,会比用Fluent了解更多关于CFD的东西,并且时间足够,也可以出东西。

    OpenFOAM超音速求解器那面一直没有赞助,读博士还是有的搞的。

    行业和就业前景之类的

    这个和学历、期望待遇、是否同意轻度的转行关系很大,很难说。

    想了解一下这个坑有多深,难度怎么样,还需要什么先修知识和最注重哪些知识,

    总之,个人建议本科毕设不要入坑,很难毕业。硕士基本只能把OpenFOAM当做商软用用。博士才有的搞。并且还得用心搞。

    但是总体来说OpenFOAM值得去玩,我这7年来,一直在用OpenFOAM,我学到了非常多有关CFD的东西,虽然刚开始的时候,多次有放弃的念头,但走到现在,我庆幸入行OpenFOAM。

  • OpenFoam边界条件设置

    4 帖子
    4k 浏览

    @李东岳 谢谢岳哥~

  • 这个问题怎么回事?

    3 帖子
    2k 浏览

    我的16.04也有这个问题

  • 欧拉拉格朗日模拟鼓泡床

    2 帖子
    2k 浏览

    0_1515589858123_捕获.JPG

    采用相同的求解器,上面是并行计算,下面是单核计算,计算结果有偏差。

  • OpenFOAM用户指南5.4主要变化记录

    3 帖子
    2k 浏览

    感谢关注,过年的时候应该可以 :cheeky:

  • 内存占用90%

    2 帖子
    1k 浏览

    在自己的笔记本上跑算例的时候,如果打开Chrome,经常由于内存不足导致网页自动崩溃。回国赶紧换工作站。

    我觉得可能是win10系统占用的内存更高了,或者是新版本Chrome内存占用过高。

  • 二相流动网格算例动量预测是否需要开启?

    3 帖子
    2k 浏览

    @李东岳 我最后还是把这个打开了。我模拟的是潮流能水轮机,开之前功率系数不过30%出头,开了之后到了45%左右(TSR=6),功率系数-叶尖速比曲线基本上与实验对上了。而且开了之后对时间步长就不敏感了,时间步从0.0001s到0.002s,CoN从40多一直到700多,功率系数变化在5%以内。

    而且,OpenFOAM/tutorials/multiphase/interPhaseChangeDyMFoam/propeller这个算例也是开启了动量预测,我考虑是不是固定转速的旋转机械都需要开这个选项。

  • 9 帖子
    5k 浏览

    @流卜 的确是接口差别很大,目前准备把extend上的部分内容移到v1706,感觉崩溃了快

  • 新手运行buoyantPimpleFoam出错。。

    3 帖子
    2k 浏览

    @李东岳 0_1515462127425_2018-01-09 09-40-58屏幕截图.png
    我按照您说的,我把整个算例搬过来,只是改了一下0文件里面各个变量,在system文件加了几个字典文件,结果又出现了上图的问题。我怕是我哪个地方,出错了,又重新操作了一遍,还是这个问题。我又去运行了一下原来的算例,没有出现任何报错。我看了一下,除了data这个我没找到,其他的都能找到。

  • 不建议开启`体积力面插值`算法

    4 帖子
    3k 浏览

    对于单气泡的曳力,升力更倾向于是一种面力。但是由于这个面不是网格单元的面。处理起来存在一定困境。我们把这些力当做体积力?有一些模拟结果表明存在震荡。插值做面力(类似基金会这种处理)?但是结果是错的。

    需要深入研究力的处理方式。

  • 关于法向复合边界条件

    3 帖子
    2k 浏览

    可以使用inletOutlet或者outletInlet,满足你的要求。

  • pEqn.H中phiHbyA计算修正项的问题

    8 帖子
    6k 浏览

    非常感谢 @程迪 的讨论,我重新回顾一下看看能不能分享一些看法。

    有关ddtPhi()这个函数的形式大家已经明白了,更重要的是明白为什么要这么做。MULES限制器和ddtPhi都是Henry Weller发明的,MULES限制器的植入以及原因目前都清楚了。但是ddtPhi的原因尚不明了。

    @dyj19901127
    宇老师大作被翻出来了,哈哈

  • 关于耦合传热求解器的几个问题

    4 帖子
    3k 浏览

    我大略看了一下:

    #include "createFluidMeshes.H" #include "createSolidMeshes.H"

    划分两个网格的时候就存在了边界场,在求解fluid之后,边界场信息会更新,你不需要显性的传递边界场。

    fvMesh& mesh = solidRegions[i]; solidThermo& thermo = thermos[i]; tmp<volScalarField> trho = thermo.rho(); const volScalarField& rho = trho(); tmp<volScalarField> tcp = thermo.Cp(); const volScalarField& cp = tcp();

    这几行代码自动包含边界场,其中给固体的是网格共享的边界场信息。

    应该是这个思路, 你可以确认下。

  • 代码实现?

    15 帖子
    8k 浏览

    @程迪
    rhoE应该是$\frac{\partial \rho e}{\partial t} + \frac{\partial \rho K}{\partial t}$
    phiEp应该是$\nabla \cdot (\rho \mathbf{U} e)+\nabla \cdot (\rho \mathbf{U} K)+\nabla\cdot(p\mathbf{U})$
    sigmaDotU应该是$\nabla \cdot(\tau \cdot \mathbf{U})$
    感觉拆不了。

    另外,请问对定常的求解器也有时间步限制吗?如果没有的话,是不是定常的求解器中,比如buoyanySimpleFoam,就不用管隐式还是显式了?

  • 对于Open FOAM 模拟波浪的一些思考

    17 帖子
    11k 浏览

    @lxjcfd
    同求第三篇文献,在网上确实找不到。

  • jumpCyclic边界条件的问题

    3 帖子
    2k 浏览

    @liuyf
    截面jump是 p(x=0) == p(x=1) + dp
    截面两侧单位jump 是 p(x=0+dx/2) == p(x=1-dx/2) + dp

    边界网格越粗,这个差异应该会越大吧。

  • LES模型中delta的选择

    3 帖子
    3k 浏览

    楼主现在有没有做过delta的测试?

  • 6 帖子
    3k 浏览

    @李东岳 谢谢东岳老师,明天再试一下

  • cavitatingFoam的方程

    2 帖子
    2k 浏览

    @搬运工不好当 您好,请问您对cavitatingFoam研究的怎么样?可以指教一下吗?

  • 如何用Paraview显示face label?

    3 帖子
    2k 浏览

    你可以先用topoSet的nearestToPoint生成pointSet,再由pointSet生成faceSet,在生成的若干面里面剔除无关的面即可。

  • OpenFOAM不同类型网格的计算速度

    6 帖子
    3k 浏览

    @李东岳
    工程上有意义的是达到指定误差的计算代价,一般理论上认为误差可以从某种定义的残差推算出的不确定来衡量,时间以taubench用25000网格迭代10步作为1个时间单位来衡量。

    这样的假设下做横向比较是可能的。但是,具体情况嘛,呵呵。湍流模型的不确定度就说不清楚。

  • OpenFOAM中的空化模拟?

    6 帖子
    4k 浏览

    @yhdthu 好的,多谢您的回答

  • source pack在unbuntu安装问题

    2 帖子
    2k 浏览

    我猜测你这个是源代码没写对,或者拷贝复制的时候丢了代码,undefined reference这种错误只是在编译类后捆绑到求解器的时候函数没定义导致。可能你代码里面有些函数代码块丢失了。

    以上只是猜测,因为不清楚你安装的详细过程不能确诊。

  • MULES, CMULES and IMULES 测试

    13 帖子
    7k 浏览

    @金石为开
    等回德国我回复你。MULES这个2018年应该可以写个解析出来。2016年就在计划中,但是有别的事情要搞。

  • 算例初始条件设置求助!

    10 帖子
    6k 浏览

    @txwwbz 建议你把错误信息贴上来,你的图片我只能看见一张,另外C指的是什么?

  • solveSegragated的问题?

    2 帖子
    2k 浏览

    哦,

    diag() = saveDiag;//恢复diag

    是在括号之前的,所以每次的修改不会叠加。

    之前理解错误的一点是所有的边界有关的系数都是放在internalCoeffs和boundaryCoeffs中的,不仅仅是coupled BC。从初始化时候的size可以看出来。

    template<class Type> Foam::fvMatrix<Type>::fvMatrix ( const GeometricField<Type, fvPatchField, volMesh>& psi, const dimensionSet& ds ) : lduMatrix(psi.mesh()), psi_(psi), dimensions_(ds), source_(psi.size(), Zero), internalCoeffs_(psi.mesh().boundary().size()), //和边界的face数大小一样。 boundaryCoeffs_(psi.mesh().boundary().size()), faceFluxCorrectionPtr_(nullptr) { //...

    不过非耦合的应该是internalCoeffs放比例系数,boundaryCoeffs放源项,而耦合的BC是internalCoeffs放owner的系数,boundaryCoeffs放的另一侧单元的系数。从addBoundarySource()的源代码可以看出。

    template<class Type> void Foam::fvMatrix<Type>::addBoundarySource ( Field<Type>& source, const bool couples ) const { forAll(psi_.boundaryField(), patchi) { const fvPatchField<Type>& ptf = psi_.boundaryField()[patchi]; const Field<Type>& pbc = boundaryCoeffs_[patchi]; if (!ptf.coupled())//非耦合边界,只有owner,另一侧没有单元,pbc存的是边界源项。 { addToInternalField(lduAddr().patchAddr(patchi), pbc, source); } else if (couples)//耦合边界,如果couples==true, 另一侧有单元,pbc存的是另一侧单元的系数。 { const tmp<Field<Type>> tpnf = ptf.patchNeighbourField(); const Field<Type>& pnf = tpnf(); const labelUList& addr = lduAddr().patchAddr(patchi); forAll(addr, facei) { source[addr[facei]] += cmptMultiply(pbc[facei], pnf[facei]); } } } }
  • Lagrangian怎么求得面上的粒子速度?

    2 帖子
    2k 浏览

    好吧,既然没有人回答,我就把我的笨办法贴出来
    foamToVTK-->paraview-->打开算例文件和粒子Cloud文件-->File/Save Data-->得到每个时间步每个粒子信息.csv-->用python提取有用信息

  • 关于OpenFOAM并行计算的问题!

    11 帖子
    6k 浏览

    @李东岳 我认为主要的问题应该是出在散度的离散格式选取,关于离散格式的选择依据的原则有哪些?或者是选择离散格式的方法,另外,一般哪些散度的离散格式比较常用?望老师稍微点一下

  • 1 帖子
    1k 浏览
    use OpenFOAM in docker

    OS: windows 10

    Install docker for windows

    site: https://www.docker.com/

    download: Docker for Windows Installer.exe

    edition: most recent stable, for me, it is Docker version 17.09.0, community edition

    installation instructions: https://docs.docker.com/docker-for-windows/

    test

    after completion of the installation, run Docker for Windows. It will cost some time to start the docker engine.

    right click "Start" button, choose "Windows Powershell"

    docker --version ## Docker version 17.09.0-ce, build afdb6d4 docker-compose --version ## docker-compose version 1.16.1, build 6d1ac219 docker-machine --version ## docker-machine.exe version 0.12.2, build 9371605 docker run hello-world ## ## Hello from Docker! ## This message shows that your installation appears to be working correctly. ## ## To generate this message, Docker took the following steps: ## 1. The Docker client contacted the Docker daemon. ## 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. ## (amd64) ## 3. The Docker daemon created a new container from that image which runs the ## executable that produces the output you are currently reading. ## 4. The Docker daemon streamed that output to the Docker client, which sent it ## to your terminal. ## ## To try something more ambitious, you can run an Ubuntu container with: ## $ docker run -it ubuntu bash ## ## Share images, automate workflows, and more with a free Docker ID: ## https://cloud.docker.com/ ## ## For more examples and ideas, visit: ## https://docs.docker.com/engine/userguide/ docker ps -a ## CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ## 32a621d46d34 hello-world "/hello" 24 seconds ago Exited (0) 23 seconds ago clever_agnesi docker rm 32a621d46d34 #change it to your container ID ## 32a621d46d34 docker ps -a ## CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES download OpenFOAM image

    right click "Start" button, choose "Windows Powershell"

    docker pull openfoamplus/of_v1706_centos73 # OF+ # or docker pull openfoam/openfoam5-paraview54 # OF5 # list images docker image ls run OpenFOAM

    Right click on the "Docker" icon in the system tray, choose "settings"

    Click "Shared drives"

    choose any drive you want to share, in my case, I choose C, then click "apply"

    you may need to input credentials

    use openfoam+1706 as example.

    press "WIN+R", input cmd and enter

    rem test docker run --rm -v c:/Users:/data alpine ls /data rem ONLY `C:/Users` and its subfolders can be mounted docker run ^ -i -t ^ --name myOFplus_1706 ^ -v c:/Users/dic17007/OpenFOAM:/OF ^ openfoamplus/of_v1706_centos73 ^ bash rem press `Ctrl+p`, `Ctrl+q` to return without stop the container docker attach myOFplus_1706 rem press `Ctrl+c` or input `exit` to return and stop the container

    Note: you are root user in docker and the password is ofuser2017. Reference

    setup the environment:

    alias of1706="HOME=/OF source $DOCKER_OPENFOAM_PATH" # add to `~/.bashrc` # echo 'alias of1706="HOME=/OF source $DOCKER_OPENFOAM_PATH"'>>~/.bashrc

    run testcase

    of1706 #activate openfoam mkdir -p $FOAM_RUN run pwd #/OF/OpenFOAM/-v1706/run cp $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity -r . cd cavity foamJob -screen blockMesh foamJob -screen icoFoam touch a.foam ## use Ctrl+P, Ctrl+Q to return to `cmd` ## use `docker attach myOFplus_1706`

    return to windows, use paraview to do post-process.

    0_1513906857278_cavity.png

    modify OpenFOAM solver replication run cd .. mkdir -p applications/solvers cd applications/solvers # I put my solver here. pwd # /OF/OpenFOAM/-v1706/applications/solvers cp $FOAM_SOLVERS/incompressible/icoFoam -r . mv icoFoam myIcoFoam cd myIcoFoam mv icoFoam.C myIcoFoam.C sed -i s/icoFoam/myIcoFoam/g myIcoFoam.C sed -i s/icoFoam/myIcoFoam/g Make/files sed -i s/FOAM_APPBIN/FOAM_USER_APPBIN Make/files

    make

    wmake

    test

    run cd cavity which myIcoFoam foamJob -screen myIcoFoam modification

    I am trying to output the matrix in COO format ( Coordinate Format). It will be consists of three parts:

    AA: non-zero values JR: row index JC: column index

    According to the definition of Foam::lduMatrix::Amul() function, there are 4 part of scalar matrix:

    diagonal terms: JC, JR=1 ... nCells, AA = matrix.diag();

    upper terms: JC > JR

    JR=matrix.lduAddr().upperAddr()[0...mFaces-1]+1 JC=matrix.lduAddr().lowerAddr()[0...mFaces-1]+1 AA=matrix.upper()

    lower terms: JR > JC

    JR=matrix.lduAddr().lowerAddr()[0...mFaces-1]+1 JC=matrix.lduAddr().upperAddr()[0...mFaces-1]+1 AA=matrix.lower()

    boundary term, only considering single processor problem here. There are 3 types of patch types:

    geometric (constraint) type. basic derived

    In the following program, I assume there is not coupled interface such as processor patch or cyclic patch.

    reference: Matrix coupling of different processors

    Here is the code.

    A c++ library cnpy is used to generate npy or npz file for numpy.

    site: https://github.com/rogersce/cnpy command: git clone https://github.com/rogersce/cnpy.git cd cnpy mkdir build cd build cmake .. -DENABLE_STATIC=ON make make install

    dumpFvMatrix.H

    #pragma once // added by CatDog #include<iostream> #include<fstream> #include<string> #include"cnpy.h" void dumpFvMatrix(string path, const fvScalarMatrix& EqnPtr) { const label nCells = EqnPtr.diag().size(); const label nFaces = EqnPtr.lower().size(); const scalar* const __restrict__ diagPtr = EqnPtr.diag().begin(); const label* const __restrict__ uPtr = EqnPtr.lduAddr().upperAddr().begin(); const label* const __restrict__ lPtr = EqnPtr.lduAddr().lowerAddr().begin(); const scalar* const __restrict__ upperPtr = EqnPtr.upper().begin(); const scalar* const __restrict__ lowerPtr = EqnPtr.lower().begin(); std::vector<scalar> AA(nCells+2*nFaces); std::vector<label> JR(nCells+2*nFaces); std::vector<label> JC(nCells+2*nFaces); // diag for(label cell=0;cell<nCells;cell++) { AA[cell]=diagPtr[cell]; JR[cell]=cell; JC[cell]=cell; } for(label face=0;face<nFaces;face++) { AA[face]=upperPtr[face]; JR[face]=lPtr[face]; JC[face]=uPtr[face]; } for(label face=0;face<nFaces;face++) { AA[face]=lowerPtr[face]; JR[face]=uPtr[face]; JC[face]=lPtr[face]; } cnpy::npz_save(path,"nCells",&nCells,{1},"w"); cnpy::npz_save(path,"nFaces",&nFaces,{1},"a"); cnpy::npz_save(path,"AA",&AA[0],{nCells+2*nFaces},"a"); cnpy::npz_save(path,"JR",&JR[0],{nCells+2*nFaces},"a"); cnpy::npz_save(path,"JC",&JC[0],{nCells+2*nFaces},"a"); return; } in myIcoFoam.C // ... #include "fvCFD.H" #include "pisoControl.H" #include "dumpFvMatrix.H" // ... // Non-orthogonal pressure corrector loop while (piso.correctNonOrthogonal()) { // Pressure corrector fvScalarMatrix pEqn ( fvm::laplacian(rAU, p) == fvc::div(phiHbyA) ); pEqn.setReference(pRefCell, pRefValue); pEqn.solve(mesh.solver(p.select(piso.finalInnerIter()))); if (piso.finalNonOrthogonalIter()) { phi = phiHbyA - pEqn.flux(); } if (runTime.timeIndex()==2) { Info<< "TimeIndex = 2, output matrix pEqn"<<endl; dumpFvMatrix("/OF/OpenFOAM/-v1706/run/cavity/pEqn.npz",pEqn); } } // ... options file: EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I/usr/local/include EXE_LIBS = \ -lfiniteVolume \ -lmeshTools \ -Wl,-rpath -Wl,/usr/local/lib -lcnpy python script to read the matrix and find LU-SGS's effectiveness. import numpy as np import scipy as sp from scipy.sparse import coo_matrix,tril,triu,diags from scipy.linalg import norm data=np.load('pEqn.npz') nCells=data["nCells"][0] nFaces=data["nFaces"][0] AA=data['AA'] JR=data['JR'] JC=data['JC'] A=coo_matrix((AA,(JR,JC)),shape=(nCells,nCells)) L=tril(A,-1) U=triu(A,1) D=diags(AA[0:nCells],0) Dinv=diags(1.0/AA[0:nCells],0) delta= L.dot(Dinv).dot(U) print "norm of error of LU-SGS: norm(L*Dinv*U)=", norm(delta.toarray())/norm(A.toarray()) # a Laplacian operator # proof of diagonally dominance print abs(np.abs((L+U).toarray()).sum(1)/np.abs(D.toarray()).sum(1)-1).max() # proof of symmetry print abs(L-U.T).sum() ## reference: Jisheng Kou, Yitian Li, A uniparametric LU-SGS method for systems of nonlinear equations, In Applied Mathematics and Computation, Volume 189, Issue 1, 2007, Pages 235-240, ISSN 0096-3003, f=lambda w:norm(((1-w)*(L+U)-w*w*L.dot(Dinv).dot(U)).toarray())/norm(A.toarray()) for w in np.linspace(0,1,100): print f(w)

    最后结果:

    >>> >>> print "norm of error of LU-SGS: norm(L*Dinv*U)=", norm(delta.toarray())/norm(A.toarray()) relative norm of error of LU-SGS: norm(L*Dinv*U)= 0.141875980931 >>> ... # a Laplacian operator ... # proof of diagonally dominance ... print abs(np.abs((L+U).toarray()).sum(1)/np.abs(D.toarray()).sum(1)-1).max() 0.5 >>> # proof of symmetry ... print abs(L-U.T).sum() 0.0
  • reactingEulerfoam的组分输运方程

    2 帖子
    2k 浏览

    18年我会搞这个...

    在输运方程里加源相

    在传输方程里面加源相?不就是加个字符么?还是怎么了

    fvm::ddt(T) == S
  • ESI openfoam 安装问题

    2 帖子
    2k 浏览

    并没有尝试过这个安装包。我推荐你采用bash自己装。http://dyfluid.com/install.html 在windows10中安装OpenFOAM

  • sampleDict 提取圆柱边界速度啊

    1 帖子
    1k 浏览

    sampleDict 如何提取一个圆柱固壁上的所有速度啊

  • interPhaseFoam中物性参数设置?

    2 帖子
    2k 浏览

    sigma是表面张力

  • OF中的绝对压力和相对压力?

    4 帖子
    3k 浏览

    需要给真实的压力,可以从单位判别出来,如果是压力/密度的,就不需要,如果是压力的单位,建议给真实的压力。

  • 相对通量和通量的区别?

    2 帖子
    2k 浏览

    请问下这两者是不是同一种东西两个写法呢?

    fvc::flux(U)可以选定各种格式,如果你指定他的格式是linear,那么fvc::flux(U)=linearInterpolate(U) & mesh.Sf()

  • OpenFOAM5.0计算速度比4.1更慢?

    6 帖子
    4k 浏览

    @100yearsalone 我只试了一个算例,就这个算例来看,pimpleDyMFoam两个版本没有明显的速度差别

  • Integrate Variable进行内部面积分

    1 帖子
    1k 浏览

    paraview对计算区域内部的一个面进行积分求平均流速
    选了一个面slice
    然后用plot Overline
    最后用了integrateVariable积分,发现求得的平均流速差很多, 所以怀疑这个工具是否靠谱?有用过这个的吗?

  • 无源项更新变量

    1 帖子
    1k 浏览
    //- Update moments manually //{ //const scalar& deltaT = mesh_.time().deltaTValue(); //scalarField& MIf = M_[kth]; //const scalarField& M0 = M_[kth].oldTime(); //MIf = 0.0; //fvc::surfaceIntegrate(MIf, mFlux_[kth]); //MIf = M0 - deltaT*MIf; //M_[kth].correctBoundaryConditions(); //}
  • 紊流模型,周期性边界条件

    2 帖子
    2k 浏览

    但是这样没法驱动流动

    如果开始就有速度的话,并且壁面没有摩擦力,可以一直流下去

    可以通过在求解器中加一个源项在进口驱动流动

    可以添加一个固定的压力梯度项

    但是如果加入了紊流模型,紊动能在进口的的这个边界怎么给呢?仅仅是周期性边界好像不行吧?

    给不了。周期性边界条件给不了随即的湍流波动。

  • 关于OpenFOAM可压缩流求解压力方程的问题

    6 帖子
    4k 浏览

    @dzw05 好的,谢谢你的建议!我再试一试。