From adefda04042e7e85d93b9ad0e66230e6ea4483ef Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 3 Nov 2011 09:46:23 +0000 Subject: [PATCH] 0021336: EDF 1717 SMESH: New algorithm "body fitting" cartesian unstructured --- .../gui/SMESH/images/cartesian3D_hyp.png | Bin 0 -> 34405 bytes .../gui/SMESH/images/cartesian3D_sphere.png | Bin 0 -> 12475 bytes .../gui/SMESH/input/basic_meshing_algos.doc | 10 ++- doc/salome/gui/SMESH/input/cartesian_algo.doc | 75 ++++++++++++++++++ .../gui/SMESH/input/tui_cartesian_algo.doc | 49 ++++++++++++ src/SMESH_I/SMESH_2smeshpy.cxx | 44 +++++++++- 6 files changed, 173 insertions(+), 5 deletions(-) create mode 100644 doc/salome/gui/SMESH/images/cartesian3D_hyp.png create mode 100644 doc/salome/gui/SMESH/images/cartesian3D_sphere.png create mode 100644 doc/salome/gui/SMESH/input/cartesian_algo.doc create mode 100644 doc/salome/gui/SMESH/input/tui_cartesian_algo.doc diff --git a/doc/salome/gui/SMESH/images/cartesian3D_hyp.png b/doc/salome/gui/SMESH/images/cartesian3D_hyp.png new file mode 100644 index 0000000000000000000000000000000000000000..b8373ed6ddbafd52276f5e5ba8c2b7cd0c7da88a GIT binary patch literal 34405 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/cartesian3D_sphere.png b/doc/salome/gui/SMESH/images/cartesian3D_sphere.png new file mode 100644 index 0000000000000000000000000000000000000000..45bffdabeb856605446234ae1626c6c56ca658e2 GIT binary patch literal 12475 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 a2OkkWYF=q2VEo^|r5$XXt!u4<(*6%|`EF+b literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/input/basic_meshing_algos.doc b/doc/salome/gui/SMESH/input/basic_meshing_algos.doc index 274ab7438..1047397b4 100644 --- a/doc/salome/gui/SMESH/input/basic_meshing_algos.doc +++ b/doc/salome/gui/SMESH/input/basic_meshing_algos.doc @@ -23,10 +23,8 @@ shape of a mesh.
  • Triangle meshing algorithms (Mefisto, Netgen 1D-2D and BLSUFR ) - Faces are split into triangular elements.
  • -
  • Quadrangle meshing algorithm (Mapping) - Faces are split into +
  • Quadrangle meshing algorithm (Mapping) - quadrilateral Faces are split into quadrangular elements.
  • -
  • Radial quadrangle 1D2D algorithm - Faces (circles or part of circles) -are split into triangular and quadrangle elements.
\image html image123.gif "Example of a triangular 2D mesh" @@ -36,10 +34,14 @@ are split into triangular and quadrangle elements.
  • For meshing of 3D entities (volume objects):
    • -
    • Hexahedron meshing algorithm (i,j,k) - Volumes are split into +
    • Hexahedron meshing algorithm (i,j,k) - 6-sided Volumes are split into hexahedral (cubic) elements.
    • Tetrahedron (Netgen and GHS3D) meshing algorithms - Volumes are split into tetrahedral (pyramidal) elements.
    • +
    • \subpage cartesian_algo_page
    • +internal part of Volumes are split into hexahedral elements forming a +Cartesian grid; polyhedra and other types of elements are gerenated +where the geometrical boundary intersects Cartesian cells.
    \image html image125.gif "Example of a tetrahedral 3D mesh" diff --git a/doc/salome/gui/SMESH/input/cartesian_algo.doc b/doc/salome/gui/SMESH/input/cartesian_algo.doc new file mode 100644 index 000000000..d093a57c1 --- /dev/null +++ b/doc/salome/gui/SMESH/input/cartesian_algo.doc @@ -0,0 +1,75 @@ +/*! + +\page cartesian_algo_page Body Fitting 3D meshing algorithm + +Body Fitting algorithm generates hexahedrones of a Cartesian grid in +the internal part of geometry and polyhedra and other types of +elements at intersection of Cartesian cells with the geometrical +boundary. + +\image html cartesian3D_sphere.png "A shpere meshed by Body Fitting algorithm" + +Algorithm of meshing is following. +
      +
    1. Lines of a Cartesian structured grid defined by +\ref cartesian_hyp_anchor "Body Fitting Parameters" hypothesis are +intersected with the geometry boundary, thus nodes laying on the +boundary are found. This step also allows finding out for each node of +the Cartesian grid if it is inside or outside the geometry.
    2. +
    3. For each cell of the grid, check how many of it's nodes are outside +of the geometry boundary. Depending on a result of this check +
        +
      • skip a cell, if all it's nodes are outside
      • +
      • skip a cell, if it is too small according to Size + Threshold paremeter
      • +
      • add a hexahedron in the mesh, if all nodes are inside
      • +
      • add a polyhedron or a cell of other type in the mesh, if some +nodes are inside and some outside
      • +
      +
    4. +
    +To apply this algorithm, when you define your mesh, select Body + Fitting in the list of 3D algorithms and click "Add + Hypothesis" button and "Body Fitting Parameters"" menu + item. Dialog of Body Fitting Parameters + hypothesis will appear. + +
    +\anchor cartesian_hyp_anchor +

    Body Fitting Parameters hypothesis

    + +\image html cartesian3D_hyp.png "Body Fitting Parameters hypothesis dialog" + +This dialog lets you define +
      +
    • \b Name of the algorithm
    • +
    • Minimal size of a cell truncated be the geometry boundary. If + size of a truncated grid cell is \b Threshold times less than a + initial cell size, then a mesh element is not created.
    • +
    • Cartesian structured grid. Each grid axis is defined + individually. Definition mode chooses a way of grid + definition:
        +
      • You can specify \b Coordinates of grid nodes. \b Insert button + inserts a node at distance \b Step (negative or positive) from a + selected node. \b Delete botton removes a selected node. Double + click on a coordinate in the list enables its edition. A grid + defined by \b Coordinates should enclose the geometry, else the + algorithm will fail.
      • +
      • You can define \b Spacing of a grid as an algebraic formular + f(t) where \a t is a position along a grid axiz + normalized at [0.0,1.0]. The whole range of geometry can be + divided into sub-ranges with their own spacing formulars to apply; + \a t varies between 0.0 and 1.0 within each sub-range. \b Insert button + divides a selected range into two ones. \b Delete button adds a + selected sub-range to a previous one. Double click on a range in + the list enables edition of its right boundary. Double click on a + function in the list enables its edition. +
      +
    • +
    + +
    +See Also a sample TUI Script of a +\ref tui_cartesian_algo "Usage of Body Fitting algorithm". + +*/ diff --git a/doc/salome/gui/SMESH/input/tui_cartesian_algo.doc b/doc/salome/gui/SMESH/input/tui_cartesian_algo.doc new file mode 100644 index 000000000..f1218439b --- /dev/null +++ b/doc/salome/gui/SMESH/input/tui_cartesian_algo.doc @@ -0,0 +1,49 @@ +/*! + +\page tui_cartesian_algo Usage of Body Fitting algorithm + +\code +from smesh import * +SetCurrentStudy(salome.myStudy) + +# create a sphere +sphere = geompy.MakeSphereR( 50 ) +geompy.addToStudy( sphere, "sphere" ) + +# create a mesh and assign a "Body Fitting" algo +mesh = Mesh( sphere ) +cartAlgo = mesh.BodyFitted() + +# define a cartesian grid using Coordinates +coords = range(-100,100,10) +cartHyp = cartAlgo.SetGrid( coords,coords,coords, 1000000) + +# compute the mesh +mesh.Compute() +print "nb hexahedra",mesh.NbHexas() +print "nb tetrahedra",mesh.NbTetras() +print "nb polyhedra",mesh.NbPolyhedrons() +print + +# define the grid by sitting constant spacing +cartHyp = cartAlgo.SetGrid( "10","10","10", 1000000) + +mesh.Compute() +print "nb hexahedra",mesh.NbHexas() +print "nb tetrahedra",mesh.NbTetras() +print "nb polyhedra",mesh.NbPolyhedrons() + + +# define the grid by sitting different spacing in 2 sub-ranges of geometry +spaceFuns = ["5","10+10*t"] +cartAlgo.SetGrid( [spaceFuns, [0.5]], [spaceFuns, [0.5]], [spaceFuns, [0.25]], 2 ) + +mesh.Compute() +print "nb hexahedra",mesh.NbHexas() +print "nb tetrahedra",mesh.NbTetras() +print "nb polyhedra",mesh.NbPolyhedrons() +print + +\endcode + +*/ diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index 96e6e422d..fd59f5c86 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -1665,6 +1665,16 @@ Handle(_pyHypothesis) _pyHypothesis::NewHypothesis( const Handle(_pyCommand)& th hyp = new _pyLayerDistributionHypo( theCreationCmd, "Get3DHypothesis" ); hyp->SetConvMethodAndType( "LayerDistribution", "RadialPrism_3D"); } + // Cartesian 3D --------- + else if ( hypType == "Cartesian_3D" ) { + algo->SetConvMethodAndType( "BodyFitted", hypType.ToCString()); + } + else if ( hypType == "CartesianParameters3D" ) { + hyp = new _pyComplexParamHypo( theCreationCmd ); + hyp->SetConvMethodAndType( "SetGrid", "Cartesian_3D"); + for ( int iArg = 0; iArg < 4; ++iArg ) + hyp->myArgs.Append("[]"); + } return algo->IsValid() ? algo : hyp; } @@ -1835,12 +1845,44 @@ void _pyHypothesis::Assign( const Handle(_pyHypothesis)& theOther, //================================================================================ /*! * \brief Remember hypothesis parameter values - * \param theCommand - The called hypothesis method + * \param theCommand - The called hypothesis method */ //================================================================================ void _pyComplexParamHypo::Process( const Handle(_pyCommand)& theCommand) { + if ( GetAlgoType() == "Cartesian_3D" ) + { + // CartesianParameters3D hyp + + if ( theCommand->GetMethod() == "SetSizeThreshold" ) + { + myArgs( 4 ) = theCommand->GetArg( 1 ); + myArgCommands.push_back( theCommand ); + return; + } + if ( theCommand->GetMethod() == "SetGrid" || + theCommand->GetMethod() == "SetGridSpacing" ) + { + TCollection_AsciiString axis = theCommand->GetArg( theCommand->GetNbArgs() ); + int iArg = 1 + ( axis.Value(1) - '0' ); + if ( theCommand->GetMethod() == "SetGrid" ) + { + myArgs( iArg ) = theCommand->GetArg( 1 ); + } + else + { + myArgs( iArg ) = "[ "; + myArgs( iArg ) += theCommand->GetArg( 1 ); + myArgs( iArg ) += ", "; + myArgs( iArg ) += theCommand->GetArg( 2 ); + myArgs( iArg ) += "]"; + } + myArgCommands.push_back( theCommand ); + return; + } + } + if( theCommand->GetMethod() == "SetLength" ) { // NOW it becomes OBSOLETE -- 2.39.2