SCOREC core
Parallel unstructured mesh tools
Classes | Typedefs | Functions
ma Namespace Reference

All MeshAdapt symbols. More...

Classes

class  Input
 User configuration for a MeshAdapt run. More...
 
class  AnisotropicFunction
 User-defined Anisotropic size function. More...
 
class  IsotropicFunction
 User-defined Isotropic size function. More...
 
class  SolutionTransfer
 user-defined solution transfer base More...
 
class  SolutionTransfers
 a meta-object that carries out a series of transfers More...
 
class  AutoSolutionTransfer
 MeshAdapt's automatic solution transfer system. More...
 

Typedefs

typedef apf::Vector3 Vector
 convenient vector name
 
typedef apf::Matrix3x3 Matrix
 convenient matrix name
 
typedef apf::Mesh2 Mesh
 convenient mesh name
 
typedef apf::MeshEntity Entity
 convenient mesh entity name
 
typedef apf::MeshIterator Iterator
 convenient mesh iterator name
 
typedef apf::MeshTag Tag
 convenient mesh tag name
 
typedef apf::DynamicArray< Entity * > EntityArray
 convenient mesh entity array name
 
typedef std::set< Entity * > EntitySet
 convenient mesh entity set name
 
typedef EntityArray Upward
 convenient mesh entity upward adjacencies name
 
typedef apf::Downward Downward
 convenient mesh entity downward adjacencies name
 
typedef apf::ModelEntity Model
 convenient geometric model entity name
 
typedef apf::Copies Remotes
 convenient remote copies name
 
typedef apf::Parts Parts
 part id set name
 

Functions

void adapt (Mesh *m, IsotropicFunction *f, SolutionTransfer *s=0)
 adapt based on an isotropic function More...
 
void adapt (Mesh *m, AnisotropicFunction *f, SolutionTransfer *s=0)
 adapt based on an anisotropic function
 
void adapt (Input *in)
 adapt with custom mutable configuration Input More...
 
void adapt (const Input *in)
 adapt with un-mutable configuration Input More...
 
void adaptVerbose (Input *in, bool verbosef=false)
 adapt verbose for debugging with mutable configuration Input More...
 
void adaptVerbose (const Input *in, bool verbosef=false)
 adapt verbose for debugging with unmutable configuration Input More...
 
void runUniformRefinement (Mesh *m, int n=1, SolutionTransfer *s=0)
 run uniform refinement, plus snapping and shape correction
 
void adaptMatching (Mesh *m, int n=1, SolutionTransfer *s=0)
 run uniform refinement with matched entity support More...
 
void localizeLayerStacks (Mesh *m)
 localize boundary layer stacks More...
 
const Inputconfigure (Mesh *m, AnisotropicFunction *f, SolutionTransfer *s=0, bool logInterpolation=true)
 generate a configuration based on an anisotropic function. More...
 
const Inputconfigure (Mesh *m, IsotropicFunction *f, SolutionTransfer *s=0)
 generate a configuration based on an isotropic function More...
 
const Inputconfigure (Mesh *m, apf::Field *sizes, apf::Field *frames, SolutionTransfer *s=0, bool logInterpolation=true)
 generate a configuration based on anisotropic fields More...
 
const Inputconfigure (Mesh *m, apf::Field *size, SolutionTransfer *s=0)
 generate a configuration based on an isotropic field More...
 
const InputconfigureUniformRefine (Mesh *m, int n=1, SolutionTransfer *s=0)
 generate a uniform refinement configuration
 
const InputconfigureMatching (Mesh *m, int n=1, SolutionTransfer *s=0)
 generate a matched uniform refinement configuration
 
const InputconfigureIdentity (Mesh *m, SizeField *f=0, SolutionTransfer *s=0)
 generate a no-op configuration
 
void validateInput (Input *in)
 used internally, but users can call this if they want
 
InputmakeAdvanced (const Input *in)
 creates a new non-constant Input for advanced users
 
Vector getPosition (Mesh *m, Entity *vertex)
 get vertex spatial coordinates
 
EntityrebuildElement (Mesh *m, Entity *original, Entity *oldVert, Entity *newVert, apf::BuildCallback *cb, RebuildCallback *rcb=0)
 rebuild an element with one vertex being different More...
 
double getInsphere (Mesh *m, Entity *e)
 Computes the insphere radius of an element. More...
 
SolutionTransfercreateFieldTransfer (apf::Field *f)
 Creates a default solution transfer object for a field. More...
 
void intrude (Mesh *m, ModelExtrusions const &model_extrusions, size_t *num_layers_out)
 Compress an extruded prism mesh into a triangle mesh.
 
void extrude (Mesh *m, ModelExtrusions const &model_extrusions, size_t num_layers)
 Extrude a triangle mesh into a prism mesh.
 

Detailed Description

All MeshAdapt symbols.

Function Documentation

◆ adapt() [1/3]

void ma::adapt ( const Input in)

adapt with un-mutable configuration Input

see maInput.h for details. note that this function will delete the Input object.

◆ adapt() [2/3]

void ma::adapt ( Input in)

adapt with custom mutable configuration Input

see maInput.h for details. note that this function will delete the Input object.

◆ adapt() [3/3]

void ma::adapt ( Mesh m,
IsotropicFunction f,
SolutionTransfer s = 0 
)

adapt based on an isotropic function

see maSize.h for how to define a function

◆ adaptMatching()

void ma::adaptMatching ( Mesh m,
int  n = 1,
SolutionTransfer s = 0 
)

run uniform refinement with matched entity support

currently this supports snapping but not shape correction

◆ adaptVerbose() [1/2]

void ma::adaptVerbose ( const Input in,
bool  verbosef = false 
)

adapt verbose for debugging with unmutable configuration Input

see maInput.h for details. The mesh will be written (vtk-format) at each operation stage

◆ adaptVerbose() [2/2]

void ma::adaptVerbose ( Input in,
bool  verbosef = false 
)

adapt verbose for debugging with mutable configuration Input

see maInput.h for details. The mesh will be written (vtk-format) at each operation stage

◆ configure() [1/4]

const Input* ma::configure ( Mesh m,
AnisotropicFunction f,
SolutionTransfer s = 0,
bool  logInterpolation = true 
)

generate a configuration based on an anisotropic function.

Parameters
sif non-zero, use that to transfer all fields. otherwise, transfer any associated fields with default algorithms
logInterpolationif true uses logarithmic interpolation

◆ configure() [2/4]

const Input* ma::configure ( Mesh m,
apf::Field *  size,
SolutionTransfer s = 0 
)

generate a configuration based on an isotropic field

Parameters
sizea scalar field of desired element size
sif non-zero, use that to transfer all fields. otherwise, transfer any associated fields with default algorithms

◆ configure() [3/4]

const Input* ma::configure ( Mesh m,
apf::Field *  sizes,
apf::Field *  frames,
SolutionTransfer s = 0,
bool  logInterpolation = true 
)

generate a configuration based on anisotropic fields

Parameters
sizesa vector field of desired element sizes along the axes of the anisotropic frame
framesa matrix field containing anisotropic frames for each vertex along the columns
sif non-zero, use that to transfer all fields. otherwise, transfer any associated fields with default algorithms
logInterpolationif true uses logarithmic interpolation

◆ configure() [4/4]

const Input* ma::configure ( Mesh m,
IsotropicFunction f,
SolutionTransfer s = 0 
)

generate a configuration based on an isotropic function

Parameters
sif non-zero, use that to transfer all fields. otherwise, transfer any associated fields with default algorithms

◆ createFieldTransfer()

SolutionTransfer* ma::createFieldTransfer ( apf::Field *  f)

Creates a default solution transfer object for a field.

MeshAdapt has good algorithms for transferring nodal fields as well as using the Voronoi system for transferring integration point fields.

◆ getInsphere()

double ma::getInsphere ( Mesh m,
Entity e 
)

Computes the insphere radius of an element.

Todo:
currently only implemented for tets

◆ localizeLayerStacks()

void ma::localizeLayerStacks ( Mesh m)

localize boundary layer stacks

this will fail if parts are emptied

◆ rebuildElement()

Entity* ma::rebuildElement ( Mesh m,
Entity original,
Entity oldVert,
Entity newVert,
apf::BuildCallback cb,
RebuildCallback *  rcb = 0 
)

rebuild an element with one vertex being different

uses the original to reconstruct geometric classification