0021893: EDF 2133 SMESH : Improvement of 3D extrusion algorithm

This commit is contained in:
eap 2013-01-30 11:28:41 +00:00
parent cac74c04ae
commit 76fc32823a
5 changed files with 33 additions and 20 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -30,35 +30,43 @@ all the eight prisms in the stacks.
To use <em>3D extrusion</em> algorithm you need to assign algorithms
and hypotheses of lower dimension as follows.
(A sample picture below shows algorithms and hypotheses used to
mesh a cylinder with prismatic volumes).
\image html prism_needs_hyps.png
\b Global algorithms and hypotheses to be chosen at
\ref create_mesh_anchor "Creation of a mesh object" are:
<ul>
<li> 1D algorithm and hypothesis that will be applied for meshing
(logically) vertical edges of the prism (these edges connect the top and
base faces of prism).</li>
(logically) vertical edges of the prism (these edges connect the top and
base faces of prism). In the sample picture above these are
"Regular_1D" algorithm and "Nb. Segments_1" hypothesis.</li>
</ul>
\b Local algorithms and hypotheses to be chosen at
\ref constructing_submeshes_page "Constructing sub-meshes" are:
<ul>
<li> 1D and 2D algorithms and hypotheses that will be applied for
meshing the top and base prism faces. These faces can be meshed
with any type of 2D elements: quadrangles, triangles, polygons or
their mix. It's enough to define a sub-mesh on either top or base face
only.</li>
<li> Optionally you can define an 1D sub-mesh on some vertical edges
of stacked prisms, which will override the global 1D hypothesis mentioned
above. In the above picture, the vertical division is not equidistant
on all the length because of a "Number Of Segments" hypothesis with
Scale Factor=3 assigned to one of edges between the shifted stacks.
<li> 1D and 2D algorithms and hypotheses that will be applied for
meshing the top and base prism faces. These faces can be meshed
with any type of 2D elements: quadrangles, triangles, polygons or
their mix. It's enough to define a sub-mesh on either top or base
face. In the sample picture above, "BLSURF" algorithm meshes
"Face_1" base surface with triangles. (1D algorithm is not
assigned as "BLSURF" does not require divided edges to create 2D mesh.)
</li>
<li> Optionally you can define an 1D sub-mesh on some vertical edges
of stacked prisms, which will override the global 1D hypothesis mentioned
above. In the picture above the picture of Object Browser, the
vertical division is not equidistant on all the length because of
a "Number Of Segments" hypothesis with Scale Factor=3 assigned to
the highlighted edge.
</li></ul>
\image html image157.gif "Prism with 3D extrusion meshing"
\image html image157.gif
As you can see, the <em>3D extrusion</em> algorithm permits to build
in the same 3D mesh such elements as hexahedrons, prisms and
polyhedrons.
Prism with 3D extrusion meshing. "Vertical" division is different on
neighbor edges due to local 1D hypotheses assigned.
\sa a sample TUI Script of
\ref tui_prism_3d_algo "Use 3D extrusion meshing algorithm".

View File

@ -54,25 +54,30 @@ bigQuad = geompy.GetFaceNearPoint( prisms, geompy.MakeVertex( 15,15,0 ), "bigQ
mesh = smesh.Mesh( prisms )
# vertical division
# assign Global hypotheses
# 1D algorithm and hypothesis for vertical division
mesh.Segment().NumberOfSegments(15)
# Extrusion 3D algo
mesh.Prism()
# mesh smallQuad with quadrilaterals
# assign Local hypotheses
# 1D and 2D algos and hyps to mesh smallQuad with quadrilaterals
mesh.Segment(smallQuad).LocalLength( 3 )
mesh.Quadrangle(smallQuad)
# mesh bigQuad with triangles
# 1D and 2D algos and hyps to mesh bigQuad with triangles
mesh.Segment(bigQuad).LocalLength( 3 )
mesh.Triangle(bigQuad)
# compute the mesh
mesh.Compute()
\endcode
The result mesh is shown below
The result geometry and mesh is shown below
\image html prism_tui_sample.png
*/