Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
 All Classes Files Functions Variables Typedefs Macros Groups Pages
meshutils Module Reference

Public Member Functions

type(element_t) function, pointer allocateelement ()
 
subroutine setmeshedgefacedofs (Mesh, EdgeDOFs, FaceDOFs)
 
type(matrix_t) function, pointer weightedprojector2 (BMesh2, BMesh1, InvPerm2, InvPerm1, UseQuadrantTree, Repeating, AntiRepeating)
 
type(matrix_t) function, pointer nodalprojector (BMesh2, BMesh1, InvPerm2, InvPerm1, UseQuadrantTree, DoubleNode, MirrorNode)
 
type(matrix_t) function, pointer nodalprojector2 (BMesh2, BMesh1, InvPerm2, InvPerm1, UseQuadrantTree, Repeating, AntiRepeating)
 
subroutine rotationalinterfacemeshes (BMesh1, BMesh2, BParams, DoubleNode, MirrorNode)
 
subroutine findmeshedges3d (Mesh)
 
subroutine assignlocalnumber (EdgeElement, Element, Mesh)
 
subroutine findrigidbodyfixingnodes (Solver, FixingDofs, MaskPerm)
 
subroutine allocatepdefinitions (Element)
 
type(mesh_t) function, pointer allocatemesh ()
 
subroutine getmaxdefs (Model, Mesh, Element, ElementDef, SolverId, BodyId, Def_Dofs)
 
type(mesh_t) function, pointer loadmesh (Model, MeshDirPar, MeshNamePar, BoundariesOnly, NumProcs, MyPE, Def_Dofs)
 
subroutine setmeshmaxdofs (Mesh)
 
subroutine readelementpropertyfile (FileName, Mesh)
 
subroutine meshstabparams (Mesh)
 
subroutine checkinterfacemeshangle (BMesh1, BMesh2, Angles, GotAngles)
 
subroutine createinterfacemeshes (Model, Mesh, This, Trgt, BMesh1, BMesh2, InvPerm1, InvPerm2, Success)
 
subroutine overlayintefacemeshes (BMesh1, BMesh2, BParams)
 
subroutine eliminateredundantcolumns (Cols, Values, DoubleNode, MirrorNode)
 
subroutine prerotationalprojector (BMesh1, BMesh2, MirrorNode)
 
subroutine postrotationalprojector (Proj, MirrorNode)
 
type(matrix_t) function, pointer weightedprojector (BMesh2, BMesh1, InvPerm2, InvPerm1, UseQuadrantTree, DoubleNode, MirrorNode)
 
subroutine rotationalinterfacemeshes2 (BMesh1, BMesh2, BParams)
 
type(matrix_t) function, pointer periodicprojector (Model, Mesh, This, Trgt, cdim, Galerkin)
 
subroutine unitsegmentdivision (w, n)
 
type(mesh_t) function, pointer meshextrude (Mesh_in, in_levels)
 
subroutine writemeshtodisk (NewMesh, Path)
 
subroutine findmeshedges (Mesh, FindEdges)
 
subroutine findmeshedges2d (Mesh)
 
subroutine findmeshfaces3d (Mesh)
 
subroutine findneighbournodes (Mesh, Direction, Neighbours, EndNeighbours)
 
subroutine updatesolvermesh (Solver, Mesh)
 
type(mesh_t) function, pointer splitmeshequal (Mesh, h)
 
subroutine releasevariablelist (VariableList)
 
subroutine releasemesh (Mesh)
 
subroutine releasemeshedgetables (Mesh)
 
subroutine releasemeshfacetables (Mesh)
 
subroutine releasemeshfactortables (Factors)
 
subroutine setcurrentmesh (Model, Mesh)
 
subroutine displacemesh (Mesh, Update, SIGN, Perm, DOFs, StabRecomp)
 
subroutine converttoactetra (Tetra)
 
integer function getelementmaxdofs (Mesh, Element)
 
subroutine makepermusingmask (Model, Solver, Mesh, MaskName, OptimizeBW, Perm, LocalNodes, MaskOnBulk, RequireLogical)
 
logical function pointinmesh (Solver, GlobalCoords, LocalCoords, HitElement, CandElement, ExtInitialize)
 
subroutine detectextrudedstructure (Mesh, Solver, ExtVar, TopNodePointer, BotNodePointer, UpNodePointer, DownNodePointer, NumberOfLayers, NodeLayer)
 
subroutine coordinatetransformation (Mesh, GlobalTransformation)
 
subroutine backcoordinatetransformation (Mesh)
 
subroutine clusternodesbydirection (Solver, Mesh, Clustering, MaskPerm)
 
type(mesh_t) function, pointer createlinemesh (Params)
 

Member Function/Subroutine Documentation

type(element_t) function, pointer meshutils::allocateelement ( )

Allocated one single element.

References messages::fatal().

Referenced by createsurfaces().

Here is the call graph for this function:

Here is the caller graph for this function:

type(mesh_t) function, pointer meshutils::allocatemesh ( )

Allocate mesh structure and return handle to it.

References messages::fatal().

Here is the call graph for this function:

subroutine meshutils::allocatepdefinitions ( type(element_t)  Element)

References messages::fatal().

Referenced by findmeshedges2d(), findmeshedges3d(), findmeshfaces3d(), loadmesh(), setmeshedgefacedofs(), and splitonelevel().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::assignlocalnumber ( type(element_t), pointer  EdgeElement,
type(element_t), pointer  Element,
type(mesh_t), pointer  Mesh 
)

Assign local number of edge to given boundary element. Also copies all p element attributes from element edge to boundary edge.

Parameters
edgeelementEdge element to which assign local number
elementBulk element with some global numbering to use to assign local number
meshFinite element mesh containing faces and edges.

References pelementmaps::getelementboundarymap(), getelemententity(), pelementmaps::getfaceedgemap(), and messages::warn().

Referenced by setmeshedgefacedofs().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::backcoordinatetransformation ( type(mesh_t)  Mesh)

Return back to the original coordinate system.

References messages::fatal(), and lists::variableget().

Referenced by mainutils::solveractivate().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::checkinterfacemeshangle ( type(mesh_t), pointer  BMesh1,
type(mesh_t), pointer  BMesh2,
real(kind=dp), dimension(3)  Angles,
logical  GotAngles 
)

Given two interface meshes check the angle between them using the normal vectors of the first element. Also check that all other elements are aligned with the first one. Only then is it possible to determine the angle.

References messages::info(), normal(), elementdescription::normalvector(), and messages::warn().

Referenced by overlayintefacemeshes().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::clusternodesbydirection ( type(solver_t), pointer  Solver,
type(mesh_t), pointer  Mesh,
integer, dimension(:), pointer  Clustering,
integer, dimension(:), optional  MaskPerm 
)

This partitions the mesh into a given number of partitions in each direction. It may be used in clustering multigrid or similar. It is not easily applicable to parallel computation as this partitioning should be done outside ElmerSolver in advance.

References messages::fatal(), messages::info(), lists::listgetconstrealarray(), lists::listgetinteger(), lists::listgetintegerarray(), normal(), solver(), generalutils::sortr(), and elementutils::tangentdirections().

Referenced by clusteringmethods::chooseclusternodes().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::converttoactetra ( type(element_t), pointer  Tetra)

Convert tetrahedral element to Ainsworth & Coyle type tetrahedron.

Parameters
tetraTetrahedral element to convert

References messages::fatal(), pelementmaps::gettetraedgemap(), pelementmaps::gettetrafacemap(), and messages::warn().

Referenced by loadmesh().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::coordinatetransformation ( type(mesh_t), pointer  Mesh,
logical, optional  GlobalTransformation 
)

Maps coordinates from the original nodes into a new coordinate system while optionally maintaining the original coordinates. Note that this may be called.

References messages::fatal(), messages::info(), lists::listgetconstreal(), lists::listgetlogical(), lists::listgetstring(), lists::variableadd(), lists::variableget(), and messages::warn().

Referenced by elmersolver(), and mainutils::solveractivate().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::createinterfacemeshes ( type(model_t)  Model,
type(mesh_t)  Mesh,
integer  This,
integer  Trgt,
type(mesh_t), pointer  BMesh1,
type(mesh_t), pointer  BMesh2,
integer, dimension(:), pointer  InvPerm1,
integer, dimension(:), pointer  InvPerm2,
logical  Success 
)

Create master and slave mesh for the interface in order to at a later stage create projector matrix to implement periodicity or mortar elements. The idea is to use a reduced set of elements and thereby speed up the mapping process. Also this gives more flexibility in transformation operations since the nodes may be ereased after use.

References messages::fatal(), and messages::info().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

type(mesh_t) function, pointer meshutils::createlinemesh ( type(valuelist_t), pointer  Params)

Create a 1D mesh, may be used in 1D outlet conditions, for example.

References allocatemesh(), elementdescription::getelementtype(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), and lists::listgetstring().

Referenced by outletcompute_init().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::detectextrudedstructure ( type(mesh_t), pointer  Mesh,
type(solver_t), pointer  Solver,
type(variable_t), optional, pointer  ExtVar,
integer, dimension(:), optional, pointer  TopNodePointer,
integer, dimension(:), optional, pointer  BotNodePointer,
integer, dimension(:), optional, pointer  UpNodePointer,
integer, dimension(:), optional, pointer  DownNodePointer,
integer, optional  NumberOfLayers,
integer, dimension(:), optional, pointer  NodeLayer 
)

This subroutine finds the structure of an extruded mesh even though it is given in an unstructured format. The routine may be used by some special solvers that employ the special character of the mesh. The extrusion is found for a given direction and for each node the corresponding up and down, and thereafter top and bottom node is computed.

References coordinatetransformationnodal(), messages::fatal(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), solver(), lists::variableadd(), lists::variableget(), and messages::warn().

Referenced by clusterextrudedmesh(), direct1dsmoother(), passiveextrudedmesh(), structuredmeshmapper(), and structuredprojecttoplane().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::displacemesh ( type(mesh_t), pointer  Mesh,
real(kind=dp), dimension(:)  Update,
integer  SIGN,
integer, dimension(:)  Perm,
integer  DOFs,
logical, optional  StabRecomp 
)

References elementdescription::elementdiameter(), and elementdescription::stabparam().

Referenced by elasticsolver(), meshsolver(), and stresssolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::eliminateredundantcolumns ( integer, dimension(:), pointer  Cols,
real(kind=dp), dimension(:), pointer  Values,
integer, dimension(:), allocatable  DoubleNode,
logical, dimension(:), allocatable  MirrorNode 
)

Eliminate redundant columns pointed by the DoubleNode vector. The columns refer to the ghost nodes that were created to allow periodicity of the mortar piece.

Parameters
colsColumns of the sparse matrix
valuesValues of the sparse matrix
doublenodeIndexes of the additional columns
mirrornodeIndexes of the mirror nodes

References messages::warn().

Referenced by nodalprojector(), and weightedprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::findmeshedges ( type(mesh_t)  Mesh,
logical, optional  FindEdges 
)

Generate element edge (faces in 3D) tables for given mesh. Currently only for triangles and tetras. If mesh already has edges do nothing.

References assignconstraints(), coordinatesystems::coordinatesystemdimension(), findedges(), findmeshedges2d(), findmeshedges3d(), and findmeshfaces3d().

Referenced by adaptive::computeerror(), solverutils::getpassiveboundary(), saveline(), setmeshedgefacedofs(), particleutils::setparticlepreliminaries(), splitmeshequal(), and splitonelevel().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::findmeshedges2d ( type(mesh_t)  Mesh)

Find 2D mesh edges.

References allocatepdefinitions(), and elementdescription::getelementtype().

Referenced by findmeshedges(), and isosurfacesolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::findmeshedges3d ( type(mesh_t)  Mesh)

Find 3D mesh edges.

References allocatepdefinitions(), messages::fatal(), fixfaceedges(), pelementmaps::getelementedgemap(), pelementmaps::getelementfaceedgemap(), elementdescription::getelementtype(), and pelementmaps::isppyramid().

Referenced by findmeshedges(), and isosurfacesolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::findmeshfaces3d ( type(mesh_t)  Mesh)

Find 3D mesh faces.

References allocatepdefinitions(), messages::fatal(), pelementmaps::getelementfacemap(), elementdescription::getelementtype(), pelementmaps::isptetra(), and sort().

Referenced by findmeshedges().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::findneighbournodes ( type(mesh_t), pointer  Mesh,
real(kind=dp), dimension(:)  Direction,
integer, dimension(:)  Neighbours,
integer, dimension(:), optional  EndNeighbours 
)

Finds neigbours of the nodes in given direction. The algorithm finds the neighbour that within 45 degrees of the given direction has the smallest distance.

References coordinatesystems::coordinatesystemdimension(), and messages::warn().

Referenced by freesurfacereduced().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::findrigidbodyfixingnodes ( type(solver_t)  Solver,
integer, dimension(0:), optional  FixingDofs,
integer, dimension(:), optional  MaskPerm 
)

This find two fixing nodes for each coordinate direction The indexes are returned in order: x1 x2 y1 y2 z1 z2.

References determineforbiddennodes(), fixingnodesscore(), messages::info(), lists::listgetconstreal(), lists::listgetconstrealarray(), lists::listgetinteger(), lists::listgetlogical(), normal(), solver(), and elementutils::tangentdirections().

Referenced by fetisolve::fetifloatingdomain().

Here is the call graph for this function:

Here is the caller graph for this function:

integer function meshutils::getelementmaxdofs ( type(mesh_t), pointer  Mesh,
type(element_t), pointer  Element 
)

Based on element degrees of freedom, return the sum of element degrees of freedom.

Parameters
meshFinite element mesh
elementElement to get maximum dofs for
subroutine meshutils::getmaxdefs ( type(model_t)  Model,
type(mesh_t)  Mesh,
type(element_t)  Element,
character(*)  ElementDef,
integer  SolverId,
integer  BodyId,
integer, dimension(:)  Def_Dofs 
)

References generalutils::i2s(), lists::listgetlogical(), and solver().

Referenced by loadmesh().

Here is the call graph for this function:

Here is the caller graph for this function:

type(mesh_t) function, pointer meshutils::loadmesh ( type(model_t)  Model,
character(len=*)  MeshDirPar,
character(len=*)  MeshNamePar,
logical  BoundariesOnly,
integer, optional  NumProcs,
integer, optional  MyPE,
integer, dimension(:), optional  Def_Dofs 
)

Function to load mesh from disk.

References allocatemesh(), allocatepdefinitions(), converttoactetra(), messages::error(), messages::fatal(), pelementmaps::getbubbledofs(), elementdescription::getelementtype(), getmaxdefs(), pelementmaps::getrefpelementnodes(), generalutils::i2s(), messages::info(), lists::listgetconstrealarray(), lists::listgetinteger(), lists::listgetintegerarray(), lists::listgetlogical(), lists::listgetstring(), periodicprojector(), readelementpropertyfile(), setmeshedgefacedofs(), setmeshmaxdofs(), sparitercomm::sparedgenumbering(), sparitercomm::sparfacenumbering(), and messages::warn().

Referenced by multigrid::gmgsolve(), modeldescription::loadmodel(), and remesh().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::makepermusingmask ( type(model_t)  Model,
type(solver_t)  Solver,
type(mesh_t)  Mesh,
character(len=*)  MaskName,
logical  OptimizeBW,
integer, dimension(:), pointer  Perm,
integer  LocalNodes,
logical, optional  MaskOnBulk,
logical, optional  RequireLogical 
)

Creates a permutation table for bodies or boundaries using a free chosen string as mask. The resulting permutation is optimized in order, if requested. The subroutine is intended to help in saving boundary data in an ordered manner, but it can find other uses as well. Currently the implementation is limited to normal Lagrangian elements.

References listmatrix::list_freematrix(), listmatrix::list_getmatrixindex(), lists::listcheckpresent(), lists::listgetinteger(), lists::listgetlogical(), and bandwidthoptimize::optimizebandwidth().

Referenced by bulkassembly(), creategridparticles(), elmerpostoutputsolver(), solverutils::laplacematrixassembly(), nodaldisplacementpenalty(), particlewallcontact(), saveline(), structuredflowline(), and vtuoutputsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

type(mesh_t) function, pointer meshutils::meshextrude ( type(mesh_t), pointer  Mesh_in,
integer  in_levels 
)

Given a 2D mesh extrude it to be 3D. The 3rd coordinate will always be at the interval [0,1]. Therefore the adaptation for different shapes must be done with StructuredMeshMapper, or some similar utility. The top and bottom surface will be assigned Boundary Condition tags with indexes one larger than the maximum used on by the 2D mesh.

References allocatemesh(), elementdescription::getelementtype(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), setmeshedgefacedofs(), setmeshmaxdofs(), and unitsegmentdivision().

Referenced by elmersolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::meshstabparams ( type(mesh_t), pointer  Mesh)

References elementdescription::elementdiameter(), lists::listgetlogical(), lists::listgetstring(), solver(), and elementdescription::stabparam().

Referenced by mainutils::addequationsolution(), modeldescription::loadmodel(), and adaptive::refinemesh().

Here is the call graph for this function:

Here is the caller graph for this function:

type(matrix_t) function, pointer meshutils::nodalprojector ( type(mesh_t), pointer  BMesh2,
type(mesh_t), pointer  BMesh1,
integer, dimension(:), pointer  InvPerm2,
integer, dimension(:), pointer  InvPerm1,
logical  UseQuadrantTree,
integer, dimension(:), allocatable  DoubleNode,
logical, dimension(:), allocatable  MirrorNode 
)

Create a projector for mapping between interfaces using the Galerkin method A temporal mesh structure with a node for each Gaussian integration point is created. The this projector matrix is transferred to a projector on the nodal coordinates.

References eliminateredundantcolumns(), and lists::meshprojector().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

type(matrix_t) function, pointer meshutils::nodalprojector2 ( type(mesh_t), pointer  BMesh2,
type(mesh_t), pointer  BMesh1,
integer, dimension(:), pointer  InvPerm2,
integer, dimension(:), pointer  InvPerm1,
logical  UseQuadrantTree,
logical  Repeating,
logical  AntiRepeating 
)

Create a projector for mapping between interfaces using the Galerkin method A temporal mesh structure with a node for each Gaussian integration point is created. The this projector matrix is transferred to a projector on the nodal coordinates.

References lists::meshprojector(), postrotationalprojector(), and prerotationalprojector().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::overlayintefacemeshes ( type(mesh_t), pointer  BMesh1,
type(mesh_t), pointer  BMesh2,
type(valuelist_t), pointer  BParams 
)

Given two meshes that should occupy the same domain in space use rotation, scaling and translation to achive this goal.

References checkinterfacemeshangle(), messages::info(), lists::listgetconstrealarray(), and lists::listgetlogical().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

type(matrix_t) function, pointer meshutils::periodicprojector ( type(model_t)  Model,
type(mesh_t)  Mesh,
integer  This,
integer  Trgt,
integer, optional  cdim,
logical, optional  Galerkin 
)

Create a projector between Master and Target boundaries. The projector may be a nodal projector x=Px or a weigted Galerking projector such that Qx=Px. In the first case the projector will be P and in the second case [Q-P].

References allocatemesh(), lists::checktimer(), coordinatesystems::coordinatesystemdimension(), createinterfacemeshes(), generalutils::freequadranttree(), messages::info(), lists::listgetlogical(), nodalprojector(), nodalprojector2(), overlayintefacemeshes(), releasemesh(), lists::resettimer(), rotationalinterfacemeshes(), rotationalinterfacemeshes2(), weightedprojector(), and weightedprojector2().

Referenced by bsolver(), loadmesh(), magnetodynamics2d(), magnetodynamics2dharmonic(), solverutils::mortarrobinsolver(), and splitmeshequal().

Here is the call graph for this function:

Here is the caller graph for this function:

logical function meshutils::pointinmesh ( type(solver_t)  Solver,
real(kind=dp), dimension(3)  GlobalCoords,
real(kind=dp), dimension(3)  LocalCoords,
type(element_t), pointer  HitElement,
type(element_t), optional, pointer  CandElement,
logical, optional  ExtInitialize 
)

Find a point in the mesh structure There are two strategies: 1) Recursive where the same routine is repeated with sloppier criteria 2) One-sweep strategy where the best hit is registered and used if of acceptable accuracy. There are two different epsilons that control the search. One for the rough test in absolute coordinates and another one for the more accurate test in local coordinates.

References interpolation::buildquadranttree(), interpolation::findleafelements(), generalutils::freequadranttree(), lists::listcheckpresent(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), interpolation::pointinelement(), solver(), and messages::warn().

Here is the call graph for this function:

subroutine meshutils::postrotationalprojector ( type(matrix_t)  Proj,
logical, dimension(:), allocatable  MirrorNode 
)

Postprocess projector so that it changes the sign of the anti-periodic entries as assignes by the MirrorNode flag.

Parameters
projProjection matrix
mirrornodeIs the node a mirror node or not

Referenced by nodalprojector2(), and weightedprojector2().

Here is the caller graph for this function:

subroutine meshutils::prerotationalprojector ( type(mesh_t), pointer  BMesh1,
type(mesh_t), pointer  BMesh2,
logical, dimension(:), allocatable  MirrorNode 
)

Given two interface meshes for nonconforming rotating boundaries make a coordinate transformation to each node of the slave boundary (BMesh1) so that they hit the master boundary (BMesh2). In case of anti-periodic projector mark the nodes that need an odd number of periods.

References messages::info().

Referenced by nodalprojector2(), and weightedprojector2().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::readelementpropertyfile ( character(len=*)  FileName,
type(mesh_t)  Mesh 
)

References messages::fatal(), and generalutils::readandtrim().

Referenced by loadmesh().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::releasemesh ( type(mesh_t), pointer  Mesh)

References elementutils::freematrix(), generalutils::freequadranttree(), gebhardtfactors(), releasemeshedgetables(), releasemeshfacetables(), releasemeshfactortables(), and releasevariablelist().

Referenced by freemesh(), isosurfacesolver(), modeldescription::loadmodel(), periodicprojector(), adaptive::refinemesh(), and splitmesh().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::releasemeshedgetables ( type(mesh_t), pointer  Mesh)

Referenced by isosurfacesolver(), adaptive::refinemesh(), releasemesh(), and splitmeshequal().

Here is the caller graph for this function:

subroutine meshutils::releasemeshfacetables ( type(mesh_t), pointer  Mesh)

Referenced by adaptive::refinemesh(), releasemesh(), and splitmeshequal().

Here is the caller graph for this function:

subroutine meshutils::releasemeshfactortables ( type(factors_t), dimension(:), pointer  Factors)

Referenced by releasemesh().

Here is the caller graph for this function:

subroutine meshutils::releasevariablelist ( type(variable_t), pointer  VariableList)

Referenced by releasemesh().

Here is the caller graph for this function:

subroutine meshutils::rotationalinterfacemeshes ( type(mesh_t), pointer  BMesh1,
type(mesh_t), pointer  BMesh2,
type(valuelist_t), pointer  BParams,
integer, dimension(:), allocatable  DoubleNode,
logical, dimension(:), allocatable  MirrorNode 
)

Given two interface meshes for nonconforming rotating boundaries make a coordinate transformation to (phi,z) level where the interpolation accuracy is not limited by the curvilinear coordinates. Also ensure that the target mesh is manipulated so that it includes the angle interval of the master nodes.

References messages::fatal(), messages::info(), and messages::warn().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::rotationalinterfacemeshes2 ( type(mesh_t), pointer  BMesh1,
type(mesh_t), pointer  BMesh2,
type(valuelist_t), pointer  BParams 
)

Given two interface meshes for nonconforming rotating boundaries make a coordinate transformation to (phi,z) level where the interpolation accuracy is not limited by the curvilinear coordinates. Also ensure that the master nodes manipulated so they for sure hit the target nodes.

References messages::fatal(), and messages::info().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::setcurrentmesh ( type(model_t)  Model,
type(mesh_t), pointer  Mesh 
)
subroutine meshutils::setmeshedgefacedofs ( type(mesh_t), pointer  Mesh,
integer, dimension(:), optional  EdgeDOFs,
integer, dimension(:), optional  FaceDOFs 
)

References allocatepdefinitions(), assignlocalnumber(), findmeshedges(), pelementmaps::getfacedofs(), and pelementmaps::getnumberofgausspointsface().

Referenced by loadmesh(), and meshextrude().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::setmeshmaxdofs ( type(mesh_t), pointer  Mesh)

References pelementmaps::getnumberofgausspoints().

Referenced by loadmesh(), and meshextrude().

Here is the call graph for this function:

Here is the caller graph for this function:

type(mesh_t) function, pointer meshutils::splitmeshequal ( type(mesh_t), pointer  Mesh,
real(kind=dp), dimension(:), optional  h 
)

Split a mesh equally to smaller pieces by performing a uniform split. Also known as mesh multiplication. A 2D element splits into 4 elements of same form, and 3D element into 8 elements. Currently works only for linear elements.

References allocatemesh(), lists::checktimer(), messages::error(), messages::fatal(), findmeshedges(), messages::info(), elementdescription::interpolateinelement2d(), elementdescription::interpolateinelement3d(), lists::listgetinteger(), periodicprojector(), releasemeshedgetables(), releasemeshfacetables(), lists::resettimer(), sort(), and updateparallelmesh().

Referenced by mainutils::addequationsolution(), and modeldescription::loadmodel().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::unitsegmentdivision ( real(kind=dp), dimension(:), allocatable  w,
integer  n 
)

Create node distribution for a unit segment x [0,1] with n elements i.e. n+1 nodes. There are different options for the type of distribution. 1) Even distribution 2) Geometric distribution 3) Arbitrary distribution determined by a functional dependence Note that the 3rd algorithm involves iterative solution of the nodal positions and is therefore not bullet-proof.

References messages::fatal(), messages::info(), lists::listcheckpresent(), lists::listgetconstreal(), lists::listgetfun(), and messages::warn().

Referenced by meshextrude().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::updatesolvermesh ( type( solver_t ), target  Solver,
type( mesh_t ), pointer  Mesh 
)

References elementutils::creatematrix(), lists::listgetlogical(), lists::listgetstring(), bandwidthoptimize::optimizebandwidth(), setcurrentmesh(), solver(), and lists::variableget().

Referenced by mainutils::addequationsolution(), and multigrid::gmgsolve().

Here is the call graph for this function:

Here is the caller graph for this function:

type(matrix_t) function, pointer meshutils::weightedprojector ( type(mesh_t), pointer  BMesh2,
type(mesh_t), pointer  BMesh1,
integer, dimension(:), pointer  InvPerm2,
integer, dimension(:), pointer  InvPerm1,
logical  UseQuadrantTree,
integer, dimension(:), allocatable  DoubleNode,
logical, dimension(:), allocatable  MirrorNode 
)

Create a projector for mapping between interfaces using the Galerkin method A temporal mesh structure with a node for each Gaussian integration point is created. The this projector matrix is transferred to a projector on the nodal coordinates.

References generalutils::allocatematrix(), elementdescription::elementinfo(), eliminateredundantcolumns(), integration::gausspoints(), listmatrix::list_addtomatrixelement(), listmatrix::list_tocrsmatrix(), and lists::meshprojector().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

type(matrix_t) function, pointer meshutils::weightedprojector2 ( type(mesh_t), pointer  BMesh2,
type(mesh_t), pointer  BMesh1,
integer, dimension(:), pointer  InvPerm2,
integer, dimension(:), pointer  InvPerm1,
logical  UseQuadrantTree,
logical  Repeating,
logical  AntiRepeating 
)

Create a projector for mapping between interfaces using the Galerkin method A temporal mesh structure with a node for each Gaussian integration point is created. The this projector matrix is transferred to a projector on the nodal coordinates.

References generalutils::allocatematrix(), elementdescription::elementinfo(), integration::gausspoints(), messages::info(), listmatrix::list_addtomatrixelement(), listmatrix::list_tocrsmatrix(), lists::meshprojector(), postrotationalprojector(), and prerotationalprojector().

Referenced by periodicprojector().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine meshutils::writemeshtodisk ( type(mesh_t), pointer  NewMesh,
character(len=*)  Path 
)

Writes the mesh to disk. Note that this does not include the information of shared nodes needed in parallel computation. This may be used for debugging purposes and for adaptive solution, for example.

Referenced by adaptive::refinemesh(), and remesh().

Here is the caller graph for this function:


The documentation for this module was generated from the following file: