Skip to content
  • 0 赞同
    1 帖子
    4k 浏览
    L

    最近用pointwise中的非结构网格生成了一个风力机旋转域中的block,检查质量发现最小角度0.14,网格质量特别差,但目前只会调整domain的网格质量,block的没看到相关教程,有大神可以指导一下吗?谢谢!

  • 0 赞同
    7 帖子
    11k 浏览
    H

    @东岳 多谢提示,我再研究研究。

  • Daniele Marchisio的CFD Talk登记

    CFD彩虹条
    43
    0 赞同
    43 帖子
    76k 浏览
    Y

    595269271@qq.comqq.com

  • openfoam 安装失败

    OpenFOAM
    27
    0 赞同
    27 帖子
    36k 浏览
    W

    @李东岳 好的好的,谢谢老师!

  • 有没有推荐的数值计算方法的书籍

    CFD彩虹条
    2
    0 赞同
    2 帖子
    4k 浏览
    李东岳

    数值计算方法

    具体是什么,解PDE么,还是什么

  • 【ICEM结构网格求助】三棱柱切半椭球

    Meshy
    2
    0 赞同
    2 帖子
    4k 浏览
    R

    啊哦,第一次发帖好像还把格式弄错了非常抱歉,,
    图在这里
    1.png

    另外请教一下如何发文件,想发例子的压缩包的貌似也没成功

  • 计算出现负相率和负湍动能

    OpenFOAM
    13
    0 赞同
    13 帖子
    18k 浏览
    C

    @cyberk 抱歉,这个问题我没有遇到过,但我看了你之前用ICEM画的网格,这个六叶Ruston桨的搅拌槽的网格不太复杂的呀,这个你可以试试只画1/6个区域,然后对称过去,画完整体之后再去openfoam中用topoSet划分搅拌的区域

  • 0 赞同
    2 帖子
    4k 浏览

    速度出口边界条件有问题,改成防止回流的边界条件就可以。

  • banner备份

    CFD彩虹条
    4
    0 赞同
    4 帖子
    6k 浏览
    同学博

    :143:

  • Pointwise画网格遇到了奇怪问题

    Meshy
    2
    0 赞同
    2 帖子
    5k 浏览
    H

    有没有试过改project type?

    我只做过把domain投影到database上面,在这个选项里面可以修改投影方式(版本:Pointwise V18.2 R1)

    project.png

  • OpenFOAM中的pout与reduce

    OpenFOAM
    1
    0 赞同
    1 帖子
    2k 浏览
    李东岳
    /*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. \*---------------------------------------------------------------------------*/ #include "fvCFD.H" int main(int argc, char *argv[]) { #include "setRootCase.H" #include "createTime.H" #include "createMesh.H" // For a case being run in parallel, the domain is decomposed into several // processor meshes. Each of them is run in a separate process and holds // instances of objects like mesh, U or p just as in a single-threaded (serial) // computation. These will have different sizes, of course, as they hold // fewer elements than the whole, undecomposed, mesh. // Pout is a stream to which each processor can write, unlike Info which only // gets used by the head process (processor0) Pout << "Hello from processor " << Pstream::myProcNo() << "! I am working on " << mesh.C().size() << " cells" << endl; // To exchange information between processes, special OpenMPI routines need // to be called. // This goes over each cell in the subdomain and integrates their volume. scalar meshVolume(0.); forAll(mesh.V(),cellI) meshVolume += mesh.V()[cellI]; // Add the values from all processes together Pout << "Mesh volume on this processor: " << meshVolume << endl; reduce(meshVolume, sumOp<scalar>()); Info << "Total mesh volume on all processors: " << meshVolume // Note how the reudction operation may be done in place without defning // a temporary variable, where appropriate. << " over " << returnReduce(mesh.C().size(), sumOp<label>()) << " cells" << endl; // During the reduction stage, different operations may be carried out, summation, // described by the sumOp template, being one of them. // Other very useful operations are minOp and maxOp. // Note how the type // of the variable must be added to make an instance of the template, here // this is done by adding <scalar> in front of the brackets. // Custom reduction operations are easy to implement but need fluency in // object-oriented programming in OpenFOAM, so we'll skip this for now. // Spreading a value across all processors is done using a scatter operation. Pstream::scatter(meshVolume); Pout << "Mesh volume on this processor is now " << meshVolume << endl; // It is often useful to check the distribution of something across all // processors. This may be done using a list, with each element of it // being written to by only one processor. List<label> nInternalFaces (Pstream::nProcs()), nBoundaries (Pstream::nProcs()); nInternalFaces[Pstream::myProcNo()] = mesh.Cf().size(); nBoundaries[Pstream::myProcNo()] = mesh.boundary().size(); // The list may then be gathered on the head node as Pstream::gatherList(nInternalFaces); Pstream::gatherList(nBoundaries); // Scattering a list is also possbile Pstream::scatterList(nInternalFaces); Pstream::scatterList(nBoundaries); // It can also be useful to do things on the head node only // (in this case this is meaningless since we are using Info, which already // checks this and executes on the head node). // Note how the gathered lists hold information for all processors now. if (Pstream::master()) { forAll(nInternalFaces,i) Info << "Processor " << i << " has " << nInternalFaces[i] << " internal faces and " << nBoundaries[i] << " boundary patches" << endl; } // As the mesh is decomposed, interfaces between processors are turned // into patches, meaning each subdomain sees a processor boundary as a // boundary condition. forAll(mesh.boundary(),patchI) Pout << "Patch " << patchI << " named " << mesh.boundary()[patchI].name() << endl; // When looking for processor patches, it is useful to check their type, // similarly to how one can check if a patch is of empty type forAll(mesh.boundary(),patchI) { const polyPatch& pp = mesh.boundaryMesh()[patchI]; if (isA<processorPolyPatch>(pp)) Pout << "Patch " << patchI << " named " << mesh.boundary()[patchI].name() << " is definitely a processor boundary!" << endl; } // --- // this is an example implementation of the code from tutoral 2 which // has been adjusted to run in parallel. Each difference is highlighted // as a NOTE. // It is conventional in OpenFOAM to move large parts of code to separate // .H files to make the code of the solver itself more readable. This is not // a standard C++ practice, as header files are normally associated with // declarations rather than definitions. // A very common include, apart from the setRootCase, createTime, and createMesh, // which are generic, is createFields, which is often unique for each solver. // Here we've moved all of the parts of the code dealing with setting up the fields // and transport constants into this include file. #include "createFields.H" // pre-calculate geometric information using field expressions rather than // cell-by-cell assignment. const dimensionedVector originVector("x0", dimLength, vector(0.05,0.05,0.005)); volScalarField r (mag(mesh.C()-originVector)); // NOTE: we need to get a global value; convert from dimensionedScalar to scalar const scalar rFarCell = returnReduce(max(r).value(), maxOp<scalar>()); scalar f (1.); Info<< "\nStarting time loop\n" << endl; while (runTime.loop()) { Info<< "Time = " << runTime.timeName() << nl << endl; // assign values to the field; // sin function expects a dimensionless argument, hence need to convert // current time using .value(). // r has dimensions of length, hence the small value being added to it // needs to match that. // Finally, the result has to match dimensions of pressure, which are // m^2 / s^-2/ p = Foam::sin(2.*constant::mathematical::pi*f*runTime.time().value()) / (r/rFarCell + dimensionedScalar("small", dimLength, 1e-12)) * dimensionedScalar("tmp", dimensionSet(0, 3, -2, 0, 0), 1.); // NOTE: this is needed to update the values on the processor boundaries. // If this is not done, the gradient operator will get confused around the // processor patches. p.correctBoundaryConditions(); // calculate velocity from gradient of pressure U = fvc::grad(p)*dimensionedScalar("tmp", dimTime, 1.); runTime.write(); } Info<< "End\n" << endl; return 0; } // ************************************************************************* //
  • 圆柱绕流-深度学习-Fluent比对压力系数

    Fluent
    3
    0 赞同
    3 帖子
    5k 浏览
    李东岳

    大略看一眼,主要算法貌似在这篇文章吧?:https://www.sciencedirect.com/science/article/pii/S0021999118307125
    2019年发的,现在引用了180次...

    感觉是个神文,用tensorFlow算偏导数

  • 论坛能不能开放私信功能呢~

    CFD彩虹条
    3
    0 赞同
    3 帖子
    5k 浏览
    bestucanB

    来 irc ……
    freenode 节点上有个 OpenFOAM 的非官方频道。

    最大的缺点就是不在线时的信息,上线了也收不到。除非使用付费第三方。
    优点就是使用门槛太高以至于没有墙的必要,可以说是没梯子情况下的世界之窗。
    注册配置比较麻烦但可以跳过。

    日常会有几个人闲聊

    Screenshot from 2020-11-28 16-34-15.png

    每个人都可以新建频道,频道就像个群组。

  • Fluent 模拟 plane free jet

    Fluent
    11
    0 赞同
    11 帖子
    15k 浏览
    zousiyuZ

    @东岳 我用 1 阶精度算湍流变量。发现 Re=3000 时匹配挺好的,Re=16500 不太好,前端还是有个突起。我也不是太懂,有待进一步研究了。

    5ad046c5-90e1-4d35-9a1d-310e30ec4f9e-image.png

  • 如何更有效使用ICEM 信息窗格?

    Meshy
    1
    0 赞同
    1 帖子
    3k 浏览
    haaDooH

    最近在用ICEM生成非结构化网格,网格数量大、八叉树生成方法慢,且开始时几何总有各种问题,这个过程中ICEM信息窗格一直在报告进程。在发现问题和解决问题的过程中,我才意识到信息窗格的重要性。想更多了解信息窗格的阅读tips,但没有找到相关资料,希望在这里能和大家交流。相关问题大家踊跃跟楼~hh

    现在我有个问题是,信息窗格字体的不同颜色分别代表什么?比如蓝色字体代表什么?

  • 0 赞同
    4 帖子
    7k 浏览
    S

    @chszkc 谢谢!就是这个问题出错了:146:

  • 0 赞同
    1 帖子
    3k 浏览
    Elibathe康E

    我们都知道,速度可以做Helmholtz分解,用速度势的梯度和流函数旋度叠加的形式,求解二维粘性可压缩翼型绕流中的速度势和流函数相当于求两个泊松方程,但是需要给出边界条件,一般情况下,在速度场已知的情况下,即涡量场和胀量场已知,该如何分别给速度势和流函数的物面和远场边界条件?

  • Pointwise中能否直接编辑网格

    Meshy
    3
    0 赞同
    3 帖子
    6k 浏览
    Z

    @xiaofei6538567 谢谢,确实没有找到办法直接编辑,最后非常窄的地方都单独分出来不加边界层了

  • 超线程到底要不要开启

    CFD彩虹条
    5
    0 赞同
    5 帖子
    9k 浏览
    F

    可以在BIOS里面关掉超线程,计算速度感觉快了一点,但是没有详细测试。。。

  • OpenFOAM后处理与Fluent结果比较

    已移动 Fluent
    29
    0 赞同
    29 帖子
    61k 浏览
    李东岳

    @小火人 3年过去了,不知道你是否愿意分享你的这个研究算例?可以的话我们聊一下细节