AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::quest::SamplingShaper Class Reference

Concrete class for sample based shaping. More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/develop/src/axom/quest/SamplingShaper.hpp>

Inheritance diagram for axom::quest::SamplingShaper:

Public Types

using RefinementType = enum { RefinementUniformSegments, RefinementDynamic }
 Refinement type. More...
 

Public Member Functions

 SamplingShaper (const klee::ShapeSet &shapeSet, sidre::MFEMSidreDataCollection *dc)
 
 ~SamplingShaper ()
 
Functions to get and set shaping parameters
void setSamplesPerKnotSpan (int nSamples)
 
void setVertexWeldThreshold (double threshold)
 
void setVerbosity (bool isVerbose)
 
void setPercentError (double percent)
 
void setRefinementType (RefinementType t)
 
bool isVerbose () const
 
sidre::MFEMSidreDataCollection * getDC ()
 
mint::MeshgetSurfaceMesh () const
 
virtual bool isValidFormat (const std::string &format) const
 Predicate to determine if the specified format is valid. More...
 
Functions related to the stages for a given shape
virtual void loadShape (const klee::Shape &shape)
 Loads the shape from file into m_surfaceMesh. More...
 

Static Public Attributes

static constexpr int DEFAULT_SAMPLES_PER_KNOT_SPAN {25}
 
static constexpr double MINIMUM_PERCENT_ERROR {0.}
 
static constexpr double MAXIMUM_PERCENT_ERROR {100.}
 
static constexpr double DEFAULT_VERTEX_WELD_THRESHOLD {1e-9}
 

Functions related to the stages for a given shape

void prepareShapeQuery (klee::Dimensions shapeDimension, const klee::Shape &shape) override
 Initializes the spatial index for shaping. More...
 
void runShapeQuery (const klee::Shape &shape) override
 
void applyReplacementRules (const klee::Shape &shape) override
 
void finalizeShapeQuery () override
 
void importInitialVolumeFractions (const std::map< std::string, mfem::GridFunction * > &initialGridFunctions)
 Import an initial set of material volume fractions before shaping. More...
 
void adjustVolumeFractions () override
 
void printRegisteredFieldNames (const std::string &initialMessage)
 

Functions to get and set shaping parameters related to sampling; supplements parameters in base class

void setSamplingType (shaping::VolFracSampling vfSampling)
 
void setQuadratureOrder (int quadratureOrder)
 
void setVolumeFractionOrder (int volfracOrder)
 
void setPointProjector (shaping::PointProjector< 2, 2 > projector)
 Registers a function to project from 2D input points to 2D query points. More...
 
void setPointProjector (shaping::PointProjector< 3, 2 > projector)
 Registers a function to project from 3D input points to 2D query points. More...
 
void setPointProjector (shaping::PointProjector< 2, 3 > projector)
 Registers a function to project from 2D input points to 3D query points. More...
 
void setPointProjector (shaping::PointProjector< 3, 3 > projector)
 Registers a function to project from 3D input points to 3D query points. More...
 

Functions to generate/adjust volume fractions after all shapes have been applied

double allReduceSum (double val) const
 Helper to apply a parallel sum reduction to a quantity. More...
 
const klee::ShapeSetm_shapeSet
 
sidre::MFEMSidreDataCollection * m_dc
 
mint::Meshm_surfaceMesh {nullptr}
 
int m_samplesPerKnotSpan {DEFAULT_SAMPLES_PER_KNOT_SPAN}
 
double m_percentError {MINIMUM_PERCENT_ERROR}
 
RefinementType m_refinementType {RefinementUniformSegments}
 
double m_vertexWeldThreshold {DEFAULT_VERTEX_WELD_THRESHOLD}
 
bool m_verboseOutput {false}
 
MPI_Comm m_comm {MPI_COMM_SELF}
 
void loadShapeInternal (const klee::Shape &shape, double percentError, double &revolvedVolume)
 Loads the shape from file into m_surfaceMesh and computes a revolvedVolume for the shape. More...
 
void applyTransforms (const klee::Shape &shape)
 Computes transforms for the shape and applies them to the surface mesh. More...
 
void applyTransforms (const numerics::Matrix< double > &transform)
 Computes transforms for the shape and applies them to the surface mesh. More...
 
numerics::Matrix< double > getTransforms (const klee::Shape &shape) const
 Get a matrix that contains the shape's concatenated transforms. More...
 
int getRank () const
 Helper function to get the rank associated with the current process. More...
 

Detailed Description

Concrete class for sample based shaping.

Member Typedef Documentation

◆ RefinementType

using axom::quest::Shaper::RefinementType = enum { RefinementUniformSegments, RefinementDynamic }
inherited

Refinement type.

Constructor & Destructor Documentation

◆ SamplingShaper()

axom::quest::SamplingShaper::SamplingShaper ( const klee::ShapeSet shapeSet,
sidre::MFEMSidreDataCollection *  dc 
)
inline

◆ ~SamplingShaper()

axom::quest::SamplingShaper::~SamplingShaper ( )
inline

Member Function Documentation

◆ setSamplingType()

void axom::quest::SamplingShaper::setSamplingType ( shaping::VolFracSampling  vfSampling)
inline

◆ setQuadratureOrder()

void axom::quest::SamplingShaper::setQuadratureOrder ( int  quadratureOrder)
inline

◆ setVolumeFractionOrder()

void axom::quest::SamplingShaper::setVolumeFractionOrder ( int  volfracOrder)
inline

◆ setPointProjector() [1/4]

void axom::quest::SamplingShaper::setPointProjector ( shaping::PointProjector< 2, 2 >  projector)
inline

Registers a function to project from 2D input points to 2D query points.

◆ setPointProjector() [2/4]

void axom::quest::SamplingShaper::setPointProjector ( shaping::PointProjector< 3, 2 >  projector)
inline

Registers a function to project from 3D input points to 2D query points.

◆ setPointProjector() [3/4]

void axom::quest::SamplingShaper::setPointProjector ( shaping::PointProjector< 2, 3 >  projector)
inline

Registers a function to project from 2D input points to 3D query points.

◆ setPointProjector() [4/4]

void axom::quest::SamplingShaper::setPointProjector ( shaping::PointProjector< 3, 3 >  projector)
inline

Registers a function to project from 3D input points to 3D query points.

◆ prepareShapeQuery()

◆ runShapeQuery()

◆ applyReplacementRules()

◆ finalizeShapeQuery()

void axom::quest::SamplingShaper::finalizeShapeQuery ( )
inlineoverridevirtual

◆ importInitialVolumeFractions()

void axom::quest::SamplingShaper::importInitialVolumeFractions ( const std::map< std::string, mfem::GridFunction * > &  initialGridFunctions)
inline

Import an initial set of material volume fractions before shaping.

Parameters
[in]initialGridFuncionsThe input data as a map from material names to grid functions

The imported grid functions are interpolated at quadrature points and registered with the supplied names as material-based quadrature fields

References axom::slic::message::Debug, axom::quest::Shaper::isVerbose(), axom::quest::Shaper::m_dc, SLIC_INFO, SLIC_WARNING, and axom::slic::message::Warning.

◆ adjustVolumeFractions()

◆ printRegisteredFieldNames()

void axom::quest::SamplingShaper::printRegisteredFieldNames ( const std::string &  initialMessage)
inline

Prints out the names of the registered fields related to shapes and materials This function is intended to help with debugging

References axom::quest::Shaper::m_dc, axom::quest::shaping::SAMPLE_AT_DOFS, axom::quest::shaping::SAMPLE_AT_QPTS, and SLIC_INFO.

◆ setSamplesPerKnotSpan()

void axom::quest::Shaper::setSamplesPerKnotSpan ( int  nSamples)
inherited

◆ setVertexWeldThreshold()

void axom::quest::Shaper::setVertexWeldThreshold ( double  threshold)
inherited

◆ setVerbosity()

void axom::quest::Shaper::setVerbosity ( bool  isVerbose)
inlineinherited

◆ setPercentError()

void axom::quest::Shaper::setPercentError ( double  percent)
inherited

◆ setRefinementType()

void axom::quest::Shaper::setRefinementType ( RefinementType  t)
inherited

◆ isVerbose()

bool axom::quest::Shaper::isVerbose ( ) const
inlineinherited

◆ getDC()

sidre::MFEMSidreDataCollection* axom::quest::Shaper::getDC ( )
inlineinherited

◆ getSurfaceMesh()

mint::Mesh* axom::quest::Shaper::getSurfaceMesh ( ) const
inlineinherited

◆ isValidFormat()

virtual bool axom::quest::Shaper::isValidFormat ( const std::string &  format) const
virtualinherited

Predicate to determine if the specified format is valid.

Parameters
formatA string listing the format to check

◆ loadShape()

virtual void axom::quest::Shaper::loadShape ( const klee::Shape shape)
virtualinherited

Loads the shape from file into m_surfaceMesh.

Reimplemented in axom::quest::IntersectionShaper.

◆ allReduceSum()

double axom::quest::Shaper::allReduceSum ( double  val) const
inherited

Helper to apply a parallel sum reduction to a quantity.

Note
This is the identity function when running without MPI

◆ loadShapeInternal()

void axom::quest::Shaper::loadShapeInternal ( const klee::Shape shape,
double  percentError,
double &  revolvedVolume 
)
protectedinherited

Loads the shape from file into m_surfaceMesh and computes a revolvedVolume for the shape.

Parameters
shapeThe shape.
percentErrorA percent error to use when refining the shape. If it positive then Axom will try to refine dynamically according to this error. Otherwise, it will use the segmentsPerKnotSpan value.
[out]revolvedvolumeA revolved volume for the shape, if possible.

◆ applyTransforms() [1/2]

void axom::quest::Shaper::applyTransforms ( const klee::Shape shape)
protectedinherited

Computes transforms for the shape and applies them to the surface mesh.

Parameters
shapeThe shape.

◆ applyTransforms() [2/2]

void axom::quest::Shaper::applyTransforms ( const numerics::Matrix< double > &  transform)
protectedinherited

Computes transforms for the shape and applies them to the surface mesh.

Parameters
shapeThe shape.
transformA 4x4 matrix containing the transformation to apply.

◆ getTransforms()

numerics::Matrix<double> axom::quest::Shaper::getTransforms ( const klee::Shape shape) const
protectedinherited

Get a matrix that contains the shape's concatenated transforms.

Parameters
shapeThe shape whose transforms are being concatenated.
Returns
A 4x4 matrix that represents the transforms.

◆ getRank()

int axom::quest::Shaper::getRank ( ) const
protectedinherited

Helper function to get the rank associated with the current process.

Note
This function can be called even in non-mpi configurations

Member Data Documentation

◆ DEFAULT_SAMPLES_PER_KNOT_SPAN

constexpr int axom::quest::Shaper::DEFAULT_SAMPLES_PER_KNOT_SPAN {25}
staticconstexprinherited

◆ MINIMUM_PERCENT_ERROR

constexpr double axom::quest::Shaper::MINIMUM_PERCENT_ERROR {0.}
staticconstexprinherited

◆ MAXIMUM_PERCENT_ERROR

constexpr double axom::quest::Shaper::MAXIMUM_PERCENT_ERROR {100.}
staticconstexprinherited

◆ DEFAULT_VERTEX_WELD_THRESHOLD

constexpr double axom::quest::Shaper::DEFAULT_VERTEX_WELD_THRESHOLD {1e-9}
staticconstexprinherited

◆ m_shapeSet

const klee::ShapeSet& axom::quest::Shaper::m_shapeSet
protectedinherited

◆ m_dc

sidre::MFEMSidreDataCollection* axom::quest::Shaper::m_dc
protectedinherited

◆ m_surfaceMesh

mint::Mesh* axom::quest::Shaper::m_surfaceMesh {nullptr}
protectedinherited

◆ m_samplesPerKnotSpan

int axom::quest::Shaper::m_samplesPerKnotSpan {DEFAULT_SAMPLES_PER_KNOT_SPAN}
protectedinherited

◆ m_percentError

double axom::quest::Shaper::m_percentError {MINIMUM_PERCENT_ERROR}
protectedinherited

◆ m_refinementType

RefinementType axom::quest::Shaper::m_refinementType {RefinementUniformSegments}
protectedinherited

◆ m_vertexWeldThreshold

double axom::quest::Shaper::m_vertexWeldThreshold {DEFAULT_VERTEX_WELD_THRESHOLD}
protectedinherited

◆ m_verboseOutput

bool axom::quest::Shaper::m_verboseOutput {false}
protectedinherited

◆ m_comm

MPI_Comm axom::quest::Shaper::m_comm {MPI_COMM_SELF}
protectedinherited

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