Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

W

wsy11

@wsy11
关于
帖子
26
主题
5
群组
0
粉丝
0
关注
1

帖子

最新

  • snappyhexmesh生成复杂地形网格时,出现两个底面
    W wsy11

    @pikaa 这个应该不需要严格对应,目前我的设置是尽量使stl的长宽稍大于blockmesh的大小


  • snappyhexmesh生成复杂地形网格时,出现两个底面
    W wsy11

    @pikaa 感谢您的回答,这个参数设置了,之间检查过,应该是正确的


  • 相同snappyHexMeshDict和地形stl条件下,blockMeshDict增大导致网格划分失败
    W wsy11

    @刚开始学流体力学
    我看了您之前的帖子,咱们是一个方向的,我也是在处理wrf+CFD的问题


  • 相同snappyHexMeshDict和地形stl条件下,blockMeshDict增大导致网格划分失败
    W wsy11

    @刚开始学流体力学
    我也是把网格量减少了,可以成功运行一段时间,但是运行一段时间后还是发散,请问您是多大的地形,以及运行多长的模拟?


  • snappyhexmesh生成复杂地形网格时,出现两个底面
    W wsy11

    如题,在我使用snappyhexmesh生成复杂地形网格时,当网格点很多时,会出现两个底面,也就是blockmesh中的面无法被地形面替换,尝试修改了最大网格数这个参数,但是没有效果。
    如果有研究过地形网格问题的老师,能不能帮忙看下应该修改什么参数?
    如图,存在两个底面:
    cdf94b51-57e1-4ceb-a0a8-136ac9d72263-image.png
    理想情况下,应该如下图所示:
    aa31c135-93ca-4e44-9dec-5b119f16eb85-image.png

    以下是我的snappyhexmesh:
    snappyHexMeshDict
    以及blockMesh:blockMeshDict


  • 相同snappyHexMeshDict和地形stl条件下,blockMeshDict增大导致网格划分失败
    W wsy11

    找到问题所在了:是划分网格时出现的问题,但是仍然解决不了
    如图:blockMeshDict设置相同范围(3000m3000m600m时),但是网格大小不同时(网格大小图一:100m,图二:60m),网格变小会导致划分失败(如图,地面仍然为平面,而不是stl文件)
    图一:
    image.png

    图二:底面变成真实地形

    image.png


  • 相同snappyHexMeshDict和地形stl条件下,blockMeshDict增大导致网格划分失败
    W wsy11

    如题,我使用相同snappyhexmesh文件来对blocckmesh网格和地形stl文件进行划分,当范围选择为2000m*2000m*630m时(case1),可以进行正常的网格划分和运算; 当范围增大到3000m*3000m*630m时(case2),无法进行正常运算,case2会发散。
    (具体算例文件:wcase.zip ,stl文件文件过大无法上传)
    (只修改了xmin,xmax,ymin,ymax,并且网格大小也一致,而且两个case划分好网格以后checkMesh都没问题)。

    运行结果如下:
    case1正常运行
    case2发散:

    Time = 178s
    
    smoothSolver:  Solving for Ux, Initial residual = 0.446597, Final residual = 0.0256856, No Iterations 3
    smoothSolver:  Solving for Uy, Initial residual = 0.422256, Final residual = 0.0231428, No Iterations 3
    smoothSolver:  Solving for Uz, Initial residual = 0.497265, Final residual = 0.0275248, No Iterations 3
    GAMG:  Solving for p, Initial residual = 0.0065485, Final residual = 0.000418695, No Iterations 4
    time step continuity errors : sum local = 1.68504e+18, global = 1.42803e+16, cumulative = 9.69486e+16
    ExecutionTime = 15.72 s  ClockTime = 18 s
    
    Time = 179s
    
    [38] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
    [38] #1  Foam::sigFpe::sigHandler(int) at ??:?
    [38] #2  ? in "/lib64/libc.so.6"
    [38] #3  Foam::pow3(Foam::Field<double>&, Foam::UList<double> const&) at ??:?
    [38] #4  void Foam::pow3<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
    [38] #5  Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::pow3<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
    [38] #6  Foam::LESModels::WALE<Foam::incompressibleMomentumTransportModel>::k(Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh> const&) const at ??:?
    [38] #7  Foam::LESModels::WALE<Foam::incompressibleMomentumTransportModel>::correctNut() at ??:?
    [38] #8  ? at ??:?
    [38] #9  __libc_start_main in "/lib64/libc.so.6"
    [38] #10  ? at ??:?
    [m3cn2707:519656:0:519656] Caught signal 8 (Floating point exception: tkill(2) or tgkill(2))
    ==== backtrace ====
        0  /usr/lib64/libucs.so.0(+0x17970) [0x2b9da57c4970]
        1  /usr/lib64/libucs.so.0(+0x17c23) [0x2b9da57c4c23]
        2  /lib64/libc.so.6(gsignal+0x37) [0x2b9c34fa7387]
        3  /public1/home/sch10341/soft/openfoam10/OpenFOAM-10/platforms/linux64IcxDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam4pow3ERNS_5FieldIdEERKNS_5UListIdEE+0xae) [0x2b9c340b32ee]
        4  /public1/home/sch10341/soft/openfoam10/OpenFOAM-10/platforms/linux64IcxDPInt32Opt/lib/libincompressibleMomentumTransportModels.so(_ZN4Foam4pow3INS_12fvPatchFieldENS_7volMeshEEEvRNS_14GeometricFieldIdT_T0_EERKS6_+0x31) [0x2b9c30c1c421]
        5  /public1/home/sch10341/soft/openfoam10/OpenFOAM-10/platforms/linux64IcxDPInt32Opt/lib/libincompressibleMomentumTransportModels.so(_ZN4Foam4pow3INS_12fvPatchFieldENS_7volMeshEEENS_3tmpINS_14GeometricFieldIdT_T0_EEEERKS7_+0x188) [0x2b9c30c1bad8]
        6  /public1/home/sch10341/soft/openfoam10/OpenFOAM-10/platforms/linux64IcxDPInt32Opt/lib/libincompressibleMomentumTransportModels.so(_ZNK4Foam9LESModels4WALEINS_36incompressibleMomentumTransportModelEE1kERKNS_14GeometricFieldINS_6TensorIdEENS_12fvPatchFieldENS_7volMeshEEE+0x758) [0x2b9c30cb6da8]
        7  /public1/home/sch10341/soft/openfoam10/OpenFOAM-10/platforms/linux64IcxDPInt32Opt/lib/libincompressibleMomentumTransportModels.so(_ZN4Foam9LESModels4WALEINS_36incompressibleMomentumTransportModelEE10correctNutEv+0x12d) [0x2b9c30cb637d]
        8  simpleFoam() [0x43326c]
        9  /lib64/libc.so.6(__libc_start_main+0xf5) [0x2b9c34f93555]
       10  simpleFoam() [0x41c588]
    ===================
    

    1、checkMesh结果如图所示:
    case1:
    a49ee909-7a9c-4cc4-a8d7-204f2d4cd15f-image.png

    case2:
    21ac89b4-ae56-46d8-a3e0-a19af1f04095-image.png

    2、blcokMeshDict文件如下所示:
    case1:

    backgroundMesh
    {
        xMin   4000; 
        xMax   6100;
        yMin   4400; 
        yMax   6500;
        zMin     -60;
        zMax   600;
        xCells  70;
        yCells  70;
        zCells  22;
    }
    
    convertToMeters 1;
    
    vertices
    (
        ($!backgroundMesh/xMin $!backgroundMesh/yMin $!backgroundMesh/zMin)
        ($!backgroundMesh/xMax $!backgroundMesh/yMin $!backgroundMesh/zMin)
        ($!backgroundMesh/xMax $!backgroundMesh/yMax $!backgroundMesh/zMin)
        ($!backgroundMesh/xMin $!backgroundMesh/yMax $!backgroundMesh/zMin)
    
        ($!backgroundMesh/xMin $!backgroundMesh/yMin $!backgroundMesh/zMax)
        ($!backgroundMesh/xMax $!backgroundMesh/yMin $!backgroundMesh/zMax)
        ($!backgroundMesh/xMax $!backgroundMesh/yMax $!backgroundMesh/zMax)
        ($!backgroundMesh/xMin $!backgroundMesh/yMax $!backgroundMesh/zMax)
    );
    
    blocks
    (
        hex (0 1 2 3 4 5 6 7)
        (
            $!backgroundMesh/xCells
            $!backgroundMesh/yCells
            $!backgroundMesh/zCells
        )
        simpleGrading (1 1 1)
    );
    
    boundary
    (
        west
        {
            type patch;
            faces
            (
                (0 3 7 4)
            );
        }
    
        east
        {
            type patch;
            faces
            (
                (1 5 6 2)
            );
        }
    
    
        south
        {
            type patch;
            faces
            (
                (0 4 5 1)
            );
        }
        north
        {
            type patch;
            faces
            (
                (3 2 6 7)
            );
        }
    
        ground
        {
            type wall;
            faces
            (
                (0 1 2 3)
            );
        }
    
        top
        {
            type patch;
            faces
            (
                (4 7 6 5)
            );
        }
    
    );
    
    

    case2:(只修改了xmin,xmax,ymin,ymax)

    backgroundMesh
    {
    backgroundMesh
        {
            xMin   3500; 
            xMax   6500;
            yMin   4000; 
            yMax   7000;
            zMin     -60;
            zMax   600;
            xCells  100;
            yCells  100;
            zCells  22;
        }
        
        convertToMeters 1;
        
        vertices
        (
            ($!backgroundMesh/xMin $!backgroundMesh/yMin $!backgroundMesh/zMin)
            ($!backgroundMesh/xMax $!backgroundMesh/yMin $!backgroundMesh/zMin)
            ($!backgroundMesh/xMax $!backgroundMesh/yMax $!backgroundMesh/zMin)
            ($!backgroundMesh/xMin $!backgroundMesh/yMax $!backgroundMesh/zMin)
        
            ($!backgroundMesh/xMin $!backgroundMesh/yMin $!backgroundMesh/zMax)
            ($!backgroundMesh/xMax $!backgroundMesh/yMin $!backgroundMesh/zMax)
            ($!backgroundMesh/xMax $!backgroundMesh/yMax $!backgroundMesh/zMax)
            ($!backgroundMesh/xMin $!backgroundMesh/yMax $!backgroundMesh/zMax)
        );
        
        blocks
        (
            hex (0 1 2 3 4 5 6 7)
            (
                $!backgroundMesh/xCells
                $!backgroundMesh/yCells
                $!backgroundMesh/zCells
            )
            simpleGrading (1 1 1)
        );
        
        boundary
        (
            west
            {
                type patch;
                faces
                (
                    (0 3 7 4)
                );
            }
        
            east
            {
                type patch;
                faces
                (
                    (1 5 6 2)
                );
            }
        
        
            south
            {
                type patch;
                faces
                (
                    (0 4 5 1)
                );
            }
            north
            {
                type patch;
                faces
                (
                    (3 2 6 7)
                );
            }
        
            ground
            {
                type wall;
                faces
                (
                    (0 1 2 3)
                );
            }
        
            top
            {
                type patch;
                faces
                (
                    (4 7 6 5)
                );
            }
        
        );
    }
    
    

    3、snappyHexMeshDict文件如下:

    
    // Which of the steps to run
    castellatedMesh true;
    snap            true;
    addLayers       false;
    
    
    // Geometry. Definition of all surfaces. All surfaces are of class
    // searchableSurface.
    // Surfaces are used
    // - to specify refinement for any mesh cell intersecting it
    // - to specify refinement for any mesh cell inside/outside/near
    // - to 'snap' the mesh boundary to the surface
    geometry
    {
        terrain
        {
            type triSurfaceMesh;
            file "km8LS.stl";
        }
    };
    
    
    
    // Settings for the castellatedMesh generation.
    castellatedMeshControls
    {
    
        // Refinement parameters
        // ~~~~~~~~~~~~~~~~~~~~~
    
        // If local number of cells is >= maxLocalCells on any processor
        // switches from from refinement followed by balancing
        // (current method) to (weighted) balancing before refinement.
        maxLocalCells 100000;
    
        // Overall cell limit (approximately). Refinement will stop immediately
        // upon reaching this number so a refinement level might not complete.
        // Note that this is the number of cells before removing the part which
        // is not 'visible' from the keepPoint. The final number of cells might
        // actually be a lot less.
        maxGlobalCells 2000000;
    
        // The surface refinement loop might spend lots of iterations
        // refining just a few cells. This setting will cause refinement
        // to stop if <= minimumRefine are selected for refinement. Note:
        // it will at least do one iteration (unless the number of cells
        // to refine is 0)
        minRefinementCells 0;
    
        // Allow a certain level of imbalance during refining
        // (since balancing is quite expensive)
        // Expressed as fraction of perfect balance (= overall number of cells /
        // nProcs). 0=balance always.
        maxLoadUnbalance 0.10;
    
    
        // Number of buffer layers between different levels.
        // 1 means normal 2:1 refinement restriction, larger means slower
        // refinement.
        nCellsBetweenLevels 1;
    
    
    
        // Explicit feature edge refinement
        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
        // Specifies a level for any cell intersected by its edges.
        // This is a featureEdgeMesh, read from constant/geometry for now.
        features
        (
            //{
            //    file "someLine.eMesh";
            //    level 2;
            //}
        );
    
    
    
        // Surface based refinement
        // ~~~~~~~~~~~~~~~~~~~~~~~~
    
        // Specifies two levels for every surface. The first is the minimum level,
        // every cell intersecting a surface gets refined up to the minimum level.
        // The second level is the maximum level. Cells that 'see' multiple
        // intersections where the intersections make an
        // angle > resolveFeatureAngle get refined up to the maximum level.
    
        refinementSurfaces
        {
            terrain
            {
                // Surface-wise min and max refinement level
                level (2 2);
    
                // Optional region-wise level specification
    /*
                regions
                {
                    windTurbine
                    {
                        level (3 3);
                    }
                }
    */
                //- Optional angle to detect small-large cell situation
                //  perpendicular to the surface. Is the angle of face w.r.t.
                //  the local surface normal. Use on flat(ish) surfaces only.
                //  Otherwise leave out or set to negative number.
                // perpendicularAngle 10;
    
    
                //- Optional faceZone and (for closed surface) cellZone with
                //  how to select the cells that are in the cellZone
                //  (inside / outside / specified insidePoint)
                // faceZone sphere;
                // cellZone sphere;
                // mode        inside;  // outside/insidePoint
            }
        }
    
        resolveFeatureAngle 30;
    
    
        // Region-wise refinement
        // ~~~~~~~~~~~~~~~~~~~~~~
    
        // Specifies refinement level for cells in relation to a surface. One of
        // three modes
        // - distance. 'levels' specifies per distance to the surface the
        //   wanted refinement level. The distances need to be specified in
        //   descending order.
        // - inside. 'levels' is only one entry and only the level is used. All
        //   cells inside the surface get refined up to the level. The surface
        //   needs to be closed for this to be possible.
        // - outside. Same but cells outside.
    
        refinementRegions
        {
    
    
    
            // sphere.stl
            //{
            //    mode distance;
            //    levels ((1.0 5) (2.0 3));
            //}
        }
    
    
        // Mesh selection
        // ~~~~~~~~~~~~~~
    
        // After refinement patches get added for all refinementSurfaces and
        // all cells intersecting the surfaces get put into these patches. The
        // section reachable from the insidePoint is kept.
        // NOTE: This point should never be on a face, always inside a cell, even
        // after refinement.
        insidePoint (5000 5500 300);
    
    
        // Whether any faceZones (as specified in the refinementSurfaces)
        // are only on the boundary of corresponding cellZones or also allow
        // free-standing zone faces. Not used if there are no faceZones.
        allowFreeStandingZoneFaces true;
    }
    
    
    
    // Settings for the snapping.
    snapControls
    {
        //- Number of patch smoothing iterations before finding correspondence
        //  to surface
        nSmoothPatch 3;
    
        //- Relative distance for points to be attracted by surface feature point
        //  or edge. True distance is this factor times local
        //  maximum edge length.
        tolerance 4.0;
    
        //- Number of mesh displacement relaxation iterations.
        nSolveIter 30;
    
        //- Maximum number of snapping relaxation iterations. Should stop
        //  before upon reaching a correct mesh.
        nRelaxIter 5;
    }
    
    
    
    // Settings for the layer addition.
    addLayersControls
    {
        // Are the thickness parameters below relative to the undistorted
        // size of the refined cell outside layer (true) or absolute sizes (false).
        relativeSizes true;
    
        // Per final patch (so not geometry!) the layer information
        layers
        {
        }
    
        // Expansion factor for layer mesh
        expansionRatio 1.0;
    
    
        // Wanted thickness of final added cell layer. If multiple layers
        // is the thickness of the layer furthest away from the wall.
        // Relative to undistorted size of cell outside layer.
        // See relativeSizes parameter.
        finalLayerThickness 0.3;
    
        // Minimum thickness of cell layer. If for any reason layer
        // cannot be above minThickness do not add layer.
        // See relativeSizes parameter.
        minThickness 0.25;
    
        // If points get not extruded do nGrow layers of connected faces that are
        // also not grown. This helps convergence of the layer addition process
        // close to features.
        // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
        nGrow 0;
    
    
        // Advanced settings
    
        // When not to extrude surface. 0 is flat surface, 90 is when two faces
        // are perpendicular
        featureAngle 60;
    
        // Maximum number of snapping relaxation iterations. Should stop
        // before upon reaching a correct mesh.
        nRelaxIter 5;
    
        // Number of smoothing iterations of surface normals
        nSmoothSurfaceNormals 1;
    
        // Number of smoothing iterations of interior mesh movement direction
        nSmoothNormals 3;
    
        // Smooth layer thickness over surface patches
        nSmoothThickness 10;
    
        // Stop layer growth on highly warped cells
        maxFaceThicknessRatio 0.5;
    
        // Reduce layer growth where ratio thickness to medial
        // distance is large
        maxThicknessToMedialRatio 0.3;
    
        // Angle used to pick up medial axis points
        // Note: changed(corrected) w.r.t 16x! 90 degrees corresponds to 130 in 16x.
        minMedianAxisAngle 90;
    
        // Create buffer region for new layer terminations
        nBufferCellsNoExtrude 0;
    
    
        // Overall max number of layer addition iterations. The mesher will exit
        // if it reaches this number of iterations; possibly with an illegal
        // mesh.
        nLayerIter 50;
    
        // Max number of iterations after which relaxed meshQuality controls
        // get used. Up to nRelaxIter it uses the settings in meshQualityControls,
        // after nRelaxIter it uses the values in meshQualityControls::relaxed.
        nRelaxedIter 20;
    }
    
    
    
    // Generic mesh quality settings. At any undoable phase these determine
    // where to undo.
    meshQualityControls
    {
        //- Maximum non-orthogonality allowed. Set to 180 to disable.
        maxNonOrtho 65;
    
        //- Max skewness allowed. Set to <0 to disable.
        maxBoundarySkewness 20;
        maxInternalSkewness 4;
    
        //- Max concaveness allowed. Is angle (in degrees) below which concavity
        //  is allowed. 0 is straight face, <0 would be convex face.
        //  Set to 180 to disable.
        maxConcave 80;
    
        //- Minimum cell pyramid volume relative to min bounding box length^3
        //  Set to a fraction of the smallest cell volume expected.
        //  Set to very negative number (e.g. -1e30) to disable.
        minVol -1e30;
    
        //- Minimum quality of the tet formed by the face-centre
        //  and variable base point minimum decomposition triangles and
        //  the cell centre.  Set to very negative number (e.g. -1e30) to
        //  disable.
        //     <0 = inside out tet,
        //      0 = flat tet
        //      1 = regular tet
        minTetQuality 1e-30;
    
        //- Minimum face twist. Set to <-1 to disable. dot product of face normal
        //  and face centre triangles normal
        minTwist 0.05;
    
        //- Minimum normalised cell determinant
        //  1 = hex, <= 0 = folded or flattened illegal cell
        minDeterminant 0.001;
    
        //- minFaceWeight (0 -> 0.5)
        minFaceWeight 0.05;
    
        //- minVolRatio (0 -> 1)
        minVolRatio 0.01;
    
        //- Number of error distribution iterations
        nSmoothScale 4;
    
        //- Amount to scale back displacement at error points
        errorReduction 0.75;
    
        relaxed
        {
            //- Maximum non-orthogonality allowed. Set to 180 to disable.
            maxNonOrtho 75;
        }
    }
    
    mergeTolerance 1e-6;
    
    

  • 时变的非均匀速度边界条件timeVaryingMappedFixedValue运行发散
    W wsy11

    @coolhhh
    大佬您好,我可能忘了介绍我的研究时段了,我研究的是较长时间的模拟,理想模拟时间应该是2-3天;模拟区域也比较大,大概为长宽高为6km6km600m。
    1、因为研究的时间较长,所以每个边界的风速肯定是变化的(风速输入用的是每个边界所设置的非均匀分布风塔的观测数据,每个面都有数个观测点,观测数据风速利用timeVaryingMappedFixedValue每隔十分钟输入)因为之前学习了windaroundbuildings这个算例(也是建筑扰流),所以设置求解器为simpleFoam,这个算例风速确实是时不变的,这一点没有考虑到,等换成瞬时求解器试试;
    2、目前还没有试过五个入流面,因为我也认为可能不太符合通量守恒,所以先设置了3个速度入口和2个出口,我先做一下大佬在4中提供的建议;
    3、LES模拟也考虑过,正在学习,等做完2中试验后尝试一下大佬提供的条件,就不用计算k和epsilon文件的设置了。


  • 时变的非均匀速度边界条件timeVaryingMappedFixedValue运行发散
    W wsy11

    @李东岳
    李老师您好,我刚实操OpenFOAM,不太确定是否为您说的单向流求解器:
    1、我的研究区域top、west、east、south、north面的速度都是已知的,因此理论上应该把除地面外的五个面都设置好初始速度,我要做的工作就是把大尺度的风速给细化,得到研究区域区域内小尺度的风速(即复杂地形的建筑物扰流);
    2、我也认为是湍流的边界条件问题,今天学习后发现可能是因为将入口设置为时变的非均匀速度条件后,并没有改变k文件和epsilon文件对应点位的值(如上边对应文件所示,k和epsilon只是简单的设置成了fixedValue);
    3、李老师,想请问您一个问题:如果设置好入流面一个点的(u,v,w)后,这个点的脉动速度分别为(0.05u,0.05v,0.05w)吗?对于下面图中的k和速度场U的关系不是很理解
    f1d4414d-53db-4d7b-b7e8-1208375637ca-image.png


  • 时变的非均匀速度边界条件timeVaryingMappedFixedValue运行发散
    W wsy11

    @coolhhh
    大佬您好,感谢您的指导,以下我对于没说清楚的点的一些解释:
    1、是的,我是计算的复杂地形上的建筑绕流,,但是不确定是否为URANS,我刚刚接触CFD,还没有具体学过湍流求解方法,现在选择RAS只是想先跑出结果;
    2、top面设置为速度入口,是因为我的研究区域,top、west、east、south、north面的速度都是已知的,因此把top面速度条件也给加进去了(理论上应该把除地面外的五个面都设置好初始速度),我要做的工作就是把大尺度的风速给细化,得到研究区域区域内小尺度的风速;
    3、zeroGradient这个条件也试过,但是还是发散,经过今天的学习,我认为是k文件epsilon文件的初始值也需要更改,准备以后测试一下。
    最后再次感谢大佬的耐心指导!(刚接触CFD,可能对于一些问题的解释并不是很清楚)


  • 时变的非均匀速度边界条件timeVaryingMappedFixedValue运行发散
    W wsy11

    请教各位老师一个边界条件文件,如题,我对于速度条件使用了在网上搜到的timeVaryingMappedFixedValue条件,可以导入时变、非均匀的风速数据,但是运行后会报发散错误,我认为是因为没有修改其他物理量边界条件的问题,但是没有找到相关的解决方法。
    希望各位老师帮忙看下怎么修改对应的边界条件:
    blockMesh如下:

    backgroundMesh
    {
        xMin   1250; 
        xMax   8698;
        yMin   1343; 
        yMax   9476;
        zMin     -60;
        zMax   600;
        xCells  248;
        yCells  271;
        zCells  33;
    }
    
    convertToMeters 1;
    
    vertices
    (
        ($!backgroundMesh/xMin $!backgroundMesh/yMin $!backgroundMesh/zMin)
        ($!backgroundMesh/xMax $!backgroundMesh/yMin $!backgroundMesh/zMin)
        ($!backgroundMesh/xMax $!backgroundMesh/yMax $!backgroundMesh/zMin)
        ($!backgroundMesh/xMin $!backgroundMesh/yMax $!backgroundMesh/zMin)
    
        ($!backgroundMesh/xMin $!backgroundMesh/yMin $!backgroundMesh/zMax)
        ($!backgroundMesh/xMax $!backgroundMesh/yMin $!backgroundMesh/zMax)
        ($!backgroundMesh/xMax $!backgroundMesh/yMax $!backgroundMesh/zMax)
        ($!backgroundMesh/xMin $!backgroundMesh/yMax $!backgroundMesh/zMax)
    );
    
    blocks
    (
        hex (0 1 2 3 4 5 6 7)
        (
            $!backgroundMesh/xCells
            $!backgroundMesh/yCells
            $!backgroundMesh/zCells
        )
        simpleGrading (1 1 1)
    );
    
    boundary
    (
        west
        {
            type patch;
            faces
            (
                (0 3 7 4)
            );
        }
    
        east
        {
            type patch;
            faces
            (
                (1 5 6 2)
            );
        }
    
    
        south
        {
            type patch;
            faces
            (
                (0 4 5 1)
            );
        }
        north
        {
            type patch;
            faces
            (
                (3 2 6 7)
            );
        }
    
        ground
        {
            type wall;
            faces
            (
                (0 1 2 3)
            );
        }
    
        top
        {
            type patch;
            faces
            (
                (4 7 6 5)
            );
        }
    
    );
    
    

    各物理量边界条件如下:
    U

    dimensions      [0 1 -1 0 0 0 0];
    
    internalField   uniform (0 0 0);
    
    boundaryField
    {
        west
        {
            type            timeVaryingMappedFixedValue;
            offset          (0 0 0);
            setAverage      off;
    
        }
        east
        {
            type            pressureInletOutletVelocity;
            value           uniform (0 0 0);
        }
        north
        {
            type            timeVaryingMappedFixedValue;
            offset          (0 0 0);
            setAverage      off;
    
        }
        south
        {
            type            pressureInletOutletVelocity;
            value           uniform (0 0 0);
        }
        ground
        {
            type            noSlip;
        }
        buildings
        {
            type            noSlip;
        }
         wall
        {
            type            noSlip;
        }
        top
        {
            type            timeVaryingMappedFixedValue;
            offset          (0 0 0);
            setAverage      off;
        }
    }
    
    

    P

    dimensions      [0 2 -2 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        west
        {
            type            zeroGradient;
        }
        east
        {
            type            totalPressure;
            rho             rho;
            psi             none;
            gamma           1;
            p0              uniform 0;
            value           uniform 0;
        }
        north
        {
            type            zeroGradient;
        }
        south
        {
            type            totalPressure;
            rho             rho;
            psi             none;
            gamma           1;
            p0              uniform 0;
            value           uniform 0;
        }
        ground
        {
            type            zeroGradient;
        }
        wall
        {
            type            zeroGradient;
        }
        buildings
        {
            type            zeroGradient;
        }
        top
        {
            type            zeroGradient;
        }
    }
    
    
    

    nut

    dimensions      [0 2 -1 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        west
        {
            type            calculated;
            value           uniform 0;
        }
        east
        {
            type            calculated;
            value           uniform 0;
        }
        north
        {
            type            calculated;
            value           uniform 0;
        }
        south
        {
            type            calculated;
            value           uniform 0;
        }
        ground
        {
            type            nutkWallFunction;
            value           uniform 0;
        }
        buildings
        {
            type            nutkWallFunction;
            value           uniform 0;
        }
        wall
        {
            type            nutkWallFunction;
            value           uniform 0;
        }
    
        top
        {
            type            calculated;
            value           uniform 0;
        }
    }
    
    
    

    k

    dimensions      [0 2 -2 0 0 0 0];
    
    internalField   uniform 1.5;
    
    boundaryField
    {
        west
        {
            type            fixedValue;
            value           uniform 1.5;
        }
        east
        {
            type            inletOutlet;
            inletValue      uniform 1.5;
            value           uniform 1.5;
        }
        north
        {
            type            fixedValue;
            value           uniform 1.5;
        }
        south
        {
            type            inletOutlet;
            inletValue      uniform 1.5;
            value           uniform 1.5;
        }
        ground
        {
            type            kqRWallFunction;
            value           uniform 1.5;
        }
        buildings
        {
            type            kqRWallFunction;
            value           uniform 1.5;
        }
        wall
        {
            type            kqRWallFunction;
            value           uniform 1.5;
        }
    
        top
        {
            type            inletOutlet;
            inletValue      uniform 1.5;
            value           uniform 1.5;
        }
    }
    
    

    spsilon

    dimensions      [0 2 -3 0 0 0 0];
    
    internalField   uniform 0.03;
    
    boundaryField
    {
        west
        {
            type            fixedValue;
            value           uniform 0.03;
        }
        east
        {
            type            inletOutlet;
            inletValue      uniform 0.03;
            value           uniform 0.03;
        }
        north
        {
            type            fixedValue;
            value           uniform 0.03;
        }
        south
        {
            type            inletOutlet;
            inletValue      uniform 0.03;
            value           uniform 0.03;
        }
        ground
        {
            type            epsilonWallFunction;
            value           uniform 0.03;
        }
        buildings
        {
            type            epsilonWallFunction;
            value           uniform 0.03;
        }
        wall
        {
            type            epsilonWallFunction;
            value           uniform 0.03;
        }
    
        top
        {
            type            inletOutlet;
            inletValue      uniform 0.03;
            value           uniform 0.03;
        }
    }
    
    

  • 【分享+搬运】自定义非均匀inlet U
    W wsy11

    @星星星星晴 谢谢您,问题解决了,尝试了很多方法,没想到问题出在分号上,以后还是得更认真一点


  • 【分享+搬运】自定义非均匀inlet U
    W wsy11

    @星星星星晴 这个视频我已经看过了,也参考了视频中的步骤。
    我把目录改成英文以后还是同样的报错,
    我在其他的地方没有什么改动,都是用的tutorials\incompressible\simpleFoam\windaroundbuildings算例自带的条件。
    ,


  • 【分享+搬运】自定义非均匀inlet U
    W wsy11

    @星星星星晴 大佬您好,我学习了您的教程,但是没有复现出来,您能帮我看看哪出问题了吗?
    我是用的of10,直接修改的windaroundbuidings算例(只改了速度U)
    U文件如下

    /*--------------------------------*- C++ -*----------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     | Website:  https://openfoam.org
        \\  /    A nd           | Version:  10
         \\/     M anipulation  |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        format      ascii;
        class       volVectorField;
        object      U;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    Uinlet          (10 0 0);
    
    dimensions      [0 1 -1 0 0 0 0];
    
    internalField   uniform (0 0 0);
    
    boundaryField
    {
        inlet
        {
            type            fixedValue;
            value           nonuniform List<vector>
    494
    (
    ( -1.2961   0.0000   0.0000) 
    ( -0.7059   0.0000   0.0000) 
    ( -0.2917   0.0000   0.0000) 
    ( -0.0393   0.0000   0.0000) 
    (  0.0672   0.0000   0.0000) 
    (  0.1305   0.0000   0.0000) 
    (  0.1642   0.0000   0.0000) 
    (  0.1796   0.0000   0.0000) 
    (  0.1850   0.0000   0.0000) 
    .......
    ........
    (  0.3551   0.0000   0.0000) 
    (  0.3592   0.0000   0.0000) 
    ( -0.2114   0.0000   0.0000) 
    (  0.1055   0.0000   0.0000) 
    (  0.1069   0.0000   0.0000) 
    (  0.1057   0.0000   0.0000) 
    ( -0.2113   0.0000   0.0000) 
    ( -0.2135   0.0000   0.0000) 
    )
        }
    
        outlet
        {
            type            pressureInletOutletVelocity;
            value           uniform (0 0 0);
        }
    
        wall
        {
            type            noSlip;
        }
    
        #includeEtc "caseDicts/setConstraintTypes"
    }
    

    报错如下:
    46846d49-c1da-4806-9267-6ed4408b418f-image.png


  • 求教边界层生成问题
    W wsy11

    @上级 大佬,想问下cfMesh上手难吗?我在做相似的研究,想转成cfMesh试一下


  • 关于openfoam边界条件的选择
    W wsy11

    请教各位大佬一个边界条件的选择问题
    我的研究区域是一个三维区域,长宽高分别为(6000m*6000m*600m),如下图(俯视图)所示:
    08ae4b29-0f40-4ce5-b8b2-db687c3fc3fb-image.png

    图中的红色点是在研究区域内的观测站点,每一个观测点位可以得到从地面到600m高度处的风速、气压、温度等数据,
    请问应该选择什么边界条件来把这些观测点位的数据输入到openfoam中?


  • pointwise划分了地形网格计算域为3000*3000*1000 ,用openFoam中simpleFoam求解计算错误?
    W wsy11

    @dyb 在 pointwise划分了地形网格计算域为3000*3000*1000 ,用openFoam中simpleFoam求解计算错误? 中说:

    pointwise绘制计算域,把边界层加大一些

    大佬您好,我想再请教一个问题
    turbinesiting算例中的地形的stl文件是怎么生成的?我用自己的stl文件(用GlobalMapper裁剪ASTER GDEM地形高程数据)时,会存在两个底面,terrian面和ground面都会存在。


  • pointwise划分了地形网格计算域为3000*3000*1000 ,用openFoam中simpleFoam求解计算错误?
    W wsy11

    @dyb 好的好的,谢谢大佬。
    我目前的网格划分还比较简单,是用GlobalMapper裁剪ASTER GDEM地形高程数据,然后用snappyHexMesh工具自动划分网格的,还没学过pointwise,等我尝试一下您的方法再来请教。


  • pointwise划分了地形网格计算域为3000*3000*1000 ,用openFoam中simpleFoam求解计算错误?
    W wsy11

    @dyb 在 pointwise划分了地形网格计算域为3000*3000*1000 ,用openFoam中simpleFoam求解计算错误? 中说:
    大佬您好,
    我最近也在学习复杂地形上风场的模拟,使用的也是turbinesiting这个算例,请问这个算例有没有比较好的教程?
    目前还是小白,总是会报错

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]