anisotropy/docs/mesh.rst

58 lines
1.5 KiB
ReStructuredText
Raw Normal View History

2021-07-08 15:27:49 +05:00
Mesh generation
===============
The main goal for the current meshes is to achieve the following points:
* fine mesh on ``strips`` surfaces (minimum 3-4 elements per width/radius)
* stabilize count of 3d volumes from small :math:`\theta` to final
* keep an adequate time of calculation for number of elements
* make very fine mesh (prisms) near the walls for the better calculation and convergence of the solution
Example:
.. code-block:: python
:linenos:
shape, groups = simple(0.28, True, [1, 0, 0])
lengths = [ geompy.BasicProperties(edge)[0] for edge in geompy.SubShapeAll(shape, geompy.ShapeType["EDGE"]) ]
meanSize = sum(lengths) / len(lengths)
# master mesh
maxSize = meanSize
minSize = meanSize * 1e-1
chordalError = maxSize / 2
growthRate = 0.7
nbSegsPerEdge = 0.3
nbSegsPerRadius = 1
mesh = smesh.Mesh(shape)
netgen123 = mesh.Tetrahedron(algo = smeshBuilder.NETGEN_1D2D3D)
param123 = netgen123.Parameters()
# ...
status = mesh.AddHypothesis(shape, param123)
vlayer123 = netgen123.ViscousLayers()
# ...
status = mesh.AddHypothesis(shape, vlayer123)
# strips
maxSize = meanSize * 1e-1
minSize = meanSize * 1e-3
chordalError = minSize * 1e+1
growthRate = 0.2
nbSegsPerEdge = 2
nbSegsPerRadius = 3
netgen12 = mesh.Triangle(algo = smeshBuilder.NETGEN_1D2D, geom = strips)
param12 = netgen12.Parameters()
#...
status = mesh.AddHypothesis(strips, param12)
# compute
isDone = mesh.Compute()
# groups
# ...