preCICE
Loading...
Searching...
No Matches
precice::mapping::AxialGeoMultiscaleMapping Class Reference

Geometric multiscale mapping in axial direction. More...

#include <AxialGeoMultiscaleMapping.hpp>

Inheritance diagram for precice::mapping::AxialGeoMultiscaleMapping:
[legend]
Collaboration diagram for precice::mapping::AxialGeoMultiscaleMapping:
[legend]

Public Types

enum struct  MultiscaleType { SPREAD , COLLECT }
 Geometric multiscale nature of the mapping (spread or collect). More...
enum struct  MultiscaleAxis { X = 0 , Y = 1 , Z = 2 }
enum struct  MultiscaleProfile { UNIFORM , PARABOLIC }
 Profile to use when type == SPREAD. More...
enum struct  MultiscaleDimension { D1D3 , D1D2 , D2D3 }
enum struct  MultiscaleCrossSection { CIRCLE , SQUARE }
Public Types inherited from precice::mapping::Mapping
enum  Constraint { CONSISTENT , CONSERVATIVE , SCALED_CONSISTENT_SURFACE , SCALED_CONSISTENT_VOLUME }
 Specifies additional constraints for a mapping. More...
enum class  MeshRequirement { UNDEFINED = 0 , VERTEX = 1 , FULL = 2 }
 Specifies requirements for the input and output meshes of a mapping. More...
enum class  InitialGuessRequirement : bool { Required = true , None = false }
 Specifies whether the mapping requires an initial guess. More...

Public Member Functions

 AxialGeoMultiscaleMapping (Constraint constraint, int dimensions, MultiscaleDimension dimension, MultiscaleType type, MultiscaleAxis axis, double radius, MultiscaleProfile profile=MultiscaleProfile::UNIFORM, MultiscaleCrossSection crossSection=MultiscaleCrossSection::CIRCLE)
 Constructor.
void computeMapping () override
 Takes care of compute-heavy operations needed only once to set up the mapping.
void clear () override
 Removes a computed mapping.
void tagMeshFirstRound () override
 Method used by partition. Tags vertices that could be owned by this rank.
void tagMeshSecondRound () override
 Method used by partition. Tags vertices that can be filtered out.
std::string getName () const final override
 Returns name of the mapping.
Public Member Functions inherited from precice::mapping::Mapping
 Mapping (Constraint constraint, int dimensions, bool requiresGradientData, InitialGuessRequirement initialGuessRequirement)
 Constructor, takes mapping constraint.
Mappingoperator= (Mapping &&)=delete
virtual ~Mapping ()=default
 Destructor, empty.
void setMeshes (const mesh::PtrMesh &input, const mesh::PtrMesh &output)
 Sets input and output meshes carrying data to be mapped.
const mesh::PtrMeshgetInputMesh () const
const mesh::PtrMeshgetOutputMesh () const
Constraint getConstraint () const
 Returns the constraint (consistent/conservative) of the mapping.
MeshRequirement getInputRequirement () const
 Returns the requirement on the input mesh.
MeshRequirement getOutputRequirement () const
 Returns the requirement on the output mesh.
bool hasComputedMapping () const
 Returns true, if the mapping has been computed.
virtual bool hasConstraint (const Constraint &constraint) const
 Checks whether the mapping has the given constraint or not.
bool isScaledConsistent () const
 Returns true if mapping is a form of scaled consistent mapping.
bool requiresInitialGuess () const
 Return true if the mapping requires an initial guess.
bool isJustInTimeMapping () const
const Eigen::VectorXd & initialGuess () const
 Return the provided initial guess of a mapping using an initialGuess.
Eigen::VectorXd & initialGuess ()
bool hasInitialGuess () const
 True if initialGuess().size() == 0.
void map (int inputDataID, int outputDataID)
void map (int inputDataID, int outputDataID, Eigen::VectorXd &initialGuess)
void map (const time::Sample &input, Eigen::VectorXd &output)
 Maps an input Sample to output data from input mesh to output mesh.
void map (const time::Sample &input, Eigen::VectorXd &output, Eigen::VectorXd &initialGuess)
 Maps an input Sample to output data from input mesh to output mesh, given an initialGuess.
virtual void scaleConsistentMapping (const Eigen::VectorXd &input, Eigen::VectorXd &output, Constraint type) const
 Scales the consistently mapped output data such that the surface integral of the values on input mesh and output mesh are equal.
bool requiresGradientData () const
 Returns whether the mapping requires gradient data.
virtual void mapConservativeAt (const Eigen::Ref< const Eigen::MatrixXd > &coordinates, const Eigen::Ref< const Eigen::MatrixXd > &source, impl::MappingDataCache &cache, Eigen::Ref< Eigen::MatrixXd > target)
 Just-in-time mapping variant of mapConservative.
virtual void mapConsistentAt (const Eigen::Ref< const Eigen::MatrixXd > &coordinates, const impl::MappingDataCache &cache, Eigen::Ref< Eigen::MatrixXd > values)
 Just-in-time mapping variant of mapConsistent.
virtual void updateMappingDataCache (impl::MappingDataCache &cache, const Eigen::Ref< const Eigen::VectorXd > &in)
 Allows updating a so-called MappingDataCache for more efficient just-in-time mappings.
virtual void initializeMappingDataCache (impl::MappingDataCache &cache)
 Allocates memory and sets up the data structures inside the MappingDataCache.
virtual void completeJustInTimeMapping (impl::MappingDataCache &cache, Eigen::Ref< Eigen::MatrixXd > result)
 Completes a just-in-time mapping for conservative constraints.

Protected Member Functions

void mapConservative (const time::Sample &inData, Eigen::VectorXd &outData) override
 Maps data using a conservative constraint.
void mapConsistent (const time::Sample &inData, Eigen::VectorXd &outData) override
 Maps data using a consistent constraint.
Protected Member Functions inherited from precice::mapping::Mapping
mesh::PtrMesh input () const
 Returns pointer to input mesh.
mesh::PtrMesh output () const
 Returns pointer to output mesh.
void setInputRequirement (MeshRequirement requirement)
 Sets the mesh requirement for the input mesh.
void setOutputRequirement (MeshRequirement requirement)
 Sets the mesh requirement for the output mesh.
int getDimensions () const

Private Attributes

logging::Logger _log {"mapping::AxialGeoMultiscaleMapping"}
MultiscaleDimension _dimension
MultiscaleType _type
 type of mapping, namely spread or collect
MultiscaleAxis _axis
 main axis along which axial geometric multiscale coupling happens
double _radius
 radius of the "tube" from or to which the data is mapped, i.e., radius of the circular interface between the two participants
MultiscaleProfile _profile
 Cross-sectional profile of the exchanged quantity.
MultiscaleCrossSection _crossSection
std::vector< double > _vertexDistances
 computed vertex distances to map data from input vertex to output vertices
std::vector< Eigen::Vector2d > _vertexTransverseCoords
 computed normalized transverse coordinates of oputput vertices for squared cross-section
int _lineCoord = -1
std::vector< int > _nearestVertex
std::vector< std::vector< int > > _collectBands
std::vector< double > _maxDistancePerInput

Additional Inherited Members

Protected Attributes inherited from precice::mapping::Mapping
bool _hasComputedMapping = false
 Flag to indicate whether computeMapping() has been called.
bool _requiresGradientData
 Flag if gradient data is required for the mapping.

Detailed Description

Geometric multiscale mapping in axial direction.

Definition at line 10 of file AxialGeoMultiscaleMapping.hpp.

Member Enumeration Documentation

◆ MultiscaleAxis

Enumerator

Definition at line 22 of file AxialGeoMultiscaleMapping.hpp.

◆ MultiscaleCrossSection

Enumerator
CIRCLE 
SQUARE 

Definition at line 42 of file AxialGeoMultiscaleMapping.hpp.

◆ MultiscaleDimension

Enumerator
D1D3 
D1D2 
D2D3 

Definition at line 37 of file AxialGeoMultiscaleMapping.hpp.

◆ MultiscaleProfile

Profile to use when type == SPREAD.

  • UNIFORM: Uniform profile u(r) = U_mean
  • PARABOLIC: laminar Poiseuille profile u(r) = 2*U_mean*(1 - (r/R)^2)
Enumerator
UNIFORM 
PARABOLIC 

Definition at line 33 of file AxialGeoMultiscaleMapping.hpp.

◆ MultiscaleType

Geometric multiscale nature of the mapping (spread or collect).

A geometric multiscale mapping can either go from the 1D to the 2D/3D solver. Then, we call it "spread". Or from the 2D/3D to the 1D solver, which we call "collect".

Enumerator
SPREAD 
COLLECT 

Definition at line 18 of file AxialGeoMultiscaleMapping.hpp.

Constructor & Destructor Documentation

◆ AxialGeoMultiscaleMapping()

precice::mapping::AxialGeoMultiscaleMapping::AxialGeoMultiscaleMapping ( Constraint constraint,
int dimensions,
MultiscaleDimension dimension,
MultiscaleType type,
MultiscaleAxis axis,
double radius,
MultiscaleProfile profile = MultiscaleProfile::UNIFORM,
MultiscaleCrossSection crossSection = MultiscaleCrossSection::CIRCLE )

Constructor.

Parameters
[in]constraintSpecifies mapping to be consistent or conservative.
[in]dimensionsDimensionality of the meshes
[in]dimensionDimensionality pairing of the mapping
[in]typeGeometric multiscale type of the mapping
[in]axisMain axis along which axial geometric multiscale coupling happens
[in]radiusRadius of the 2D or 3D solver "tube"
  • For crossSection == CIRCLE: radius of the circular interface (R)
  • For crossSection == SQUARE: half side length of the square interface (side = 2*R)
[in]profileProfile for SPREAD (ignored for COLLECT).
[in]crossSectionShape of the interface cross-section (default: circle).

Definition at line 7 of file AxialGeoMultiscaleMapping.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ clear()

void precice::mapping::AxialGeoMultiscaleMapping::clear ( )
overridevirtual

Removes a computed mapping.

Implements precice::mapping::Mapping.

Definition at line 197 of file AxialGeoMultiscaleMapping.cpp.

◆ computeMapping()

void precice::mapping::AxialGeoMultiscaleMapping::computeMapping ( )
overridevirtual

Takes care of compute-heavy operations needed only once to set up the mapping.

Implements precice::mapping::Mapping.

Definition at line 28 of file AxialGeoMultiscaleMapping.cpp.

Here is the call graph for this function:

◆ getName()

std::string precice::mapping::AxialGeoMultiscaleMapping::getName ( ) const
finaloverridevirtual

Returns name of the mapping.

Implements precice::mapping::Mapping.

Definition at line 393 of file AxialGeoMultiscaleMapping.cpp.

◆ mapConservative()

void precice::mapping::AxialGeoMultiscaleMapping::mapConservative ( const time::Sample & inData,
Eigen::VectorXd & outData )
overrideprotectedvirtual

Maps data using a conservative constraint.

Parameters
[in]inputSample to map data from
[in]outputValues to map to

If requiresInitialGuess(), then the initial guess is available via initialGuess(). Provide a new initial guess by overwriting it. The mapping has full control over its size.

See also
For mappings requiring an initialGuess: initialGuess() hasInitialGuess()

Implements precice::mapping::Mapping.

Definition at line 204 of file AxialGeoMultiscaleMapping.cpp.

Here is the call graph for this function:

◆ mapConsistent()

void precice::mapping::AxialGeoMultiscaleMapping::mapConsistent ( const time::Sample & inData,
Eigen::VectorXd & outData )
overrideprotectedvirtual

Maps data using a consistent constraint.

Parameters
[in]inputSample to map data from
[in]outputValues to map to

If requiresInitialGuess(), then the initial guess is available via initialGuess(). Provide a new initial guess by overwriting it. The mapping has full control over its size.

See also
For mappings requiring an initialGuess: initialGuess() hasInitialGuess()

Implements precice::mapping::Mapping.

Definition at line 211 of file AxialGeoMultiscaleMapping.cpp.

Here is the call graph for this function:

◆ tagMeshFirstRound()

void precice::mapping::AxialGeoMultiscaleMapping::tagMeshFirstRound ( )
overridevirtual

Method used by partition. Tags vertices that could be owned by this rank.

Implements precice::mapping::Mapping.

Definition at line 367 of file AxialGeoMultiscaleMapping.cpp.

Here is the call graph for this function:

◆ tagMeshSecondRound()

void precice::mapping::AxialGeoMultiscaleMapping::tagMeshSecondRound ( )
overridevirtual

Method used by partition. Tags vertices that can be filtered out.

Implements precice::mapping::Mapping.

Definition at line 387 of file AxialGeoMultiscaleMapping.cpp.

Member Data Documentation

◆ _axis

MultiscaleAxis precice::mapping::AxialGeoMultiscaleMapping::_axis
private

main axis along which axial geometric multiscale coupling happens

Definition at line 91 of file AxialGeoMultiscaleMapping.hpp.

◆ _collectBands

std::vector<std::vector<int> > precice::mapping::AxialGeoMultiscaleMapping::_collectBands
private

Definition at line 115 of file AxialGeoMultiscaleMapping.hpp.

◆ _crossSection

MultiscaleCrossSection precice::mapping::AxialGeoMultiscaleMapping::_crossSection
private

Definition at line 100 of file AxialGeoMultiscaleMapping.hpp.

◆ _dimension

MultiscaleDimension precice::mapping::AxialGeoMultiscaleMapping::_dimension
private

Definition at line 85 of file AxialGeoMultiscaleMapping.hpp.

◆ _lineCoord

int precice::mapping::AxialGeoMultiscaleMapping::_lineCoord = -1
private

Definition at line 109 of file AxialGeoMultiscaleMapping.hpp.

◆ _log

logging::Logger precice::mapping::AxialGeoMultiscaleMapping::_log {"mapping::AxialGeoMultiscaleMapping"}
mutableprivate

Definition at line 82 of file AxialGeoMultiscaleMapping.hpp.

◆ _maxDistancePerInput

std::vector<double> precice::mapping::AxialGeoMultiscaleMapping::_maxDistancePerInput
private

Definition at line 118 of file AxialGeoMultiscaleMapping.hpp.

◆ _nearestVertex

std::vector<int> precice::mapping::AxialGeoMultiscaleMapping::_nearestVertex
private

Definition at line 112 of file AxialGeoMultiscaleMapping.hpp.

◆ _profile

MultiscaleProfile precice::mapping::AxialGeoMultiscaleMapping::_profile
private

Cross-sectional profile of the exchanged quantity.

Definition at line 97 of file AxialGeoMultiscaleMapping.hpp.

◆ _radius

double precice::mapping::AxialGeoMultiscaleMapping::_radius
private

radius of the "tube" from or to which the data is mapped, i.e., radius of the circular interface between the two participants

Definition at line 94 of file AxialGeoMultiscaleMapping.hpp.

◆ _type

MultiscaleType precice::mapping::AxialGeoMultiscaleMapping::_type
private

type of mapping, namely spread or collect

Definition at line 88 of file AxialGeoMultiscaleMapping.hpp.

◆ _vertexDistances

std::vector<double> precice::mapping::AxialGeoMultiscaleMapping::_vertexDistances
private

computed vertex distances to map data from input vertex to output vertices

Definition at line 103 of file AxialGeoMultiscaleMapping.hpp.

◆ _vertexTransverseCoords

std::vector<Eigen::Vector2d> precice::mapping::AxialGeoMultiscaleMapping::_vertexTransverseCoords
private

computed normalized transverse coordinates of oputput vertices for squared cross-section

Definition at line 106 of file AxialGeoMultiscaleMapping.hpp.


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