1#ifndef included_AMP_Map3to1to3
2#define included_AMP_Map3to1to3
7#include "AMP/mesh/MeshIterator.h"
8#include "AMP/operators/map/AsyncMapOperator.h"
9#include "AMP/operators/map/AsyncMapOperatorParameters.h"
36 explicit Map3to1to3( std::shared_ptr<const OperatorParameters> params );
42 std::string
type()
const override {
return "Map3to1to3"; }
77 const std::vector<double> &z,
78 const std::vector<double> &
val );
87 virtual std::multimap<double, double>
89 const std::shared_ptr<AMP::Mesh::Mesh> mesh,
101 const std::shared_ptr<AMP::Mesh::Mesh> mesh,
103 const std::map<double, double> &
map );
141 std::map<
double, std::pair<int, double>> & );
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< const Vector > const_shared_ptr
A class used to iterate over elements in a Mesh.
A base class for asynchronous map operations between meshes. A map operation involves two meshes and ...
For problems with a great deal of symmetry, it is possible to move data from one mesh to another by g...
AMP::Mesh::MeshIterator d_srcIterator1
Iterators over the nodes on the boundary.
virtual ~Map3to1to3()
Destructor.
AMP::LinearAlgebra::Vector::shared_ptr d_ResultVector
The place to put the mapped values.
int d_commTag
The tag used for communication.
void setVector(AMP::LinearAlgebra::Vector::shared_ptr result) override
Set a frozen vector for results of the apply operation.
Map3to1to3(std::shared_ptr< const OperatorParameters > params)
Standard constructor.
void addTo1DMap(std::multimap< double, double > &map, const std::vector< double > &z, const std::vector< double > &val)
Add an ordered pair to the set of interpolant values.
std::vector< bool > d_own_mesh2
void applyFinish(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f) override
Finish a communicative apply operation.
void addTo1DMap(std::multimap< double, double > &map, double z, double val)
Add an ordered pair to the set of interpolant values.
std::vector< comm_data > d_SendBuf1
The buffer used to perform the asynchronous communication.
virtual void buildReturn(AMP::LinearAlgebra::Vector::shared_ptr vec, const std::shared_ptr< AMP::Mesh::Mesh > mesh, const AMP::Mesh::MeshIterator &it, const std::map< double, double > &map)
A virtual method to construct a vector from a map.
AMP::Mesh::MeshIterator d_dstIterator1
virtual std::multimap< double, double > buildMap(AMP::LinearAlgebra::Vector::const_shared_ptr vec, const std::shared_ptr< AMP::Mesh::Mesh > mesh, const AMP::Mesh::MeshIterator &it)
A virtual method to construct the map from a vector.
AMP::Mesh::MeshIterator d_dstIterator2
static void unpackBuffer(const std::vector< comm_data > &, std::map< double, std::pair< int, double > > &)
void applyStart(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f) override
Start a communicative apply operation.
AMP::Mesh::MeshIterator d_srcIterator2
std::string type() const override
Return the name of the operator.
std::vector< comm_data > d_SendBuf2
std::vector< bool > d_own_mesh1
A list of processors that own each mesh.
std::shared_ptr< AMP::Operator::Operator > shared_ptr
structure used for communication