Go to the documentation of this file.
18 #ifndef __SPECKLEY_CROSSDOMAINCOUPLER_H__
19 #define __SPECKLEY_CROSSDOMAINCOUPLER_H__
21 #include <speckley/Brick.h>
22 #include <speckley/Rectangle.h>
24 #include <ripley/Brick.h>
25 #include <ripley/Rectangle.h>
60 int oqx,
int oqy,
int oqz,
double *out,
const double *factor_x,
61 const double *factor_y,
const double *factor_z,
65 double *bottom,
double *top,
double *brecv,
double *trecv,
66 int bSize,
int tSize,
int distance)
const;
110 const Brick *speck,
const double s_dx[3],
int rank,
118 #endif // __SPECKLEY_CROSSDOMAINCOUPLER_H__
double lagrange_degree10_7(double xi)
Definition: lagrange_functions.h:256
double dx[3]
Definition: CrossDomainCoupler.h:39
double lagrange_degree9_3(double xi)
Definition: lagrange_functions.h:200
double lagrange_degree10_3(double xi)
Definition: lagrange_functions.h:240
void shareBrickZFaces(struct Ripley &r, int hasLower, int hasUpper, int lower, int upper, escript::Data &target) const
Definition: CrossDomainCoupler.cpp:753
int MPI_Status
Definition: EsysMPI.h:47
double lagrange_degree9_8(double xi)
Definition: lagrange_functions.h:220
dim_t mins[3]
Definition: CrossDomainCoupler.h:41
bool hasUpper[3]
Definition: CrossDomainCoupler.h:92
double s_dx[3]
Definition: CrossDomainCoupler.h:84
double lagrange_degree8_2(double xi)
Definition: lagrange_functions.h:160
double lagrange_degree10_1(double xi)
Definition: lagrange_functions.h:232
MPI_Comm getMPIComm() const
returns the MPI communicator
Definition: ripley/src/RipleyDomain.h:158
RipleyCoupler(const SpeckleyDomain *speck, const double s_dx[2], int rank)
Definition: CrossDomainCoupler.cpp:46
virtual double getLocalCoordinate(dim_t index, int dim) const =0
returns the index'th coordinate value in given dimension for this rank
const SpeckleyDomain * speck
Definition: CrossDomainCoupler.h:82
double lagrange_degree9_2(double xi)
Definition: lagrange_functions.h:196
void requireWrite()
Ensures data is ready for write access. This means that the data will be resolved if lazy and will be...
Definition: Data.cpp:1239
double lagrange_degree10_4(double xi)
Definition: lagrange_functions.h:244
double lagrange_degree4_1(double xi)
Definition: lagrange_functions.h:52
bool hasLower[3]
Definition: CrossDomainCoupler.h:91
#define INDEX4(_X1_, _X2_, _X3_, _X4_, _N1_, _N2_, _N3_)
Definition: index.h:27
const double ripleyLocations[2]
Definition: CrossDomainCoupler.cpp:30
void interpolateAcross3D(escript::Data &target, const escript::Data &source, const Brick *speck, const double s_dx[3], int rank, MPI_Comm comm)
interpolates data given on source onto target where source and target are given on different domains
double lagrange_degree4_2(double xi)
Definition: lagrange_functions.h:56
double lagrange_degree8_0(double xi)
Definition: lagrange_functions.h:152
double lagrange_degree8_1(double xi)
Definition: lagrange_functions.h:156
#define INDEX2(_X1_, _X2_, _N1_)
Definition: index.h:23
void calculateOrder7(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:319
void calculateOrder9(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:350
const_Domain_ptr getDomain() const
Return the domain.
Definition: Data.h:487
void calculateOrder10(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:367
virtual const double * getElementLength() const =0
returns the lengths of an element
const DataTypes::real_t * getSampleDataRO(DataTypes::RealVectorType::size_type sampleNo, DataTypes::real_t dummy=0) const
Return the sample data for the given sample no. Please do not use this unless you NEED to access samp...
Definition: Data.h:1991
double lagrange_degree7_4(double xi)
Definition: lagrange_functions.h:136
double lagrange_degree8_3(double xi)
Definition: lagrange_functions.h:164
int order
Definition: CrossDomainCoupler.h:87
void shareBrickXFaces(struct Ripley &r, int hasLower, int hasUpper, int lower, int upper, escript::Data &target) const
Definition: CrossDomainCoupler.cpp:552
double lagrange_degree7_6(double xi)
Definition: lagrange_functions.h:144
double lagrange_degree9_5(double xi)
Definition: lagrange_functions.h:208
double lagrange_degree10_2(double xi)
Definition: lagrange_functions.h:236
double lagrange_degree9_9(double xi)
Definition: lagrange_functions.h:224
@ Elements
Definition: Ripley.h:54
double lagrange_degree5_2(double xi)
Definition: lagrange_functions.h:76
int getOrder() const
returns the order of the domain
Definition: speckley/src/SpeckleyDomain.h:742
double lagrange_degree5_0(double xi)
Definition: lagrange_functions.h:68
double lagrange_degree2_2(double xi)
Definition: lagrange_functions.h:28
double lagrange_degree8_8(double xi)
Definition: lagrange_functions.h:184
double lagrange_degree6_4(double xi)
Definition: lagrange_functions.h:108
void calculateOrder2(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:259
Definition: CrossDomainCoupler.h:37
double lagrange_degree5_3(double xi)
Definition: lagrange_functions.h:80
double lagrange_degree9_0(double xi)
Definition: lagrange_functions.h:188
double lagrange_degree10_8(double xi)
Definition: lagrange_functions.h:260
double lagrange_degree8_7(double xi)
Definition: lagrange_functions.h:180
double lagrange_degree7_2(double xi)
Definition: lagrange_functions.h:128
int getDataPointSize() const
Return the size of the data point. It is the product of the data point shape dimensions.
Definition: Data.cpp:1360
double lagrange_degree4_3(double xi)
Definition: lagrange_functions.h:60
void shareWithNeighbours(bool lowerFirst, int hasLower, int hasUpper, double *bottom, double *top, double *brecv, double *trecv, int bSize, int tSize, int distance) const
Definition: CrossDomainCoupler.cpp:960
double lagrange_degree9_6(double xi)
Definition: lagrange_functions.h:212
virtual const int * getNumSubdivisionsPerDim() const =0
returns the number of spatial subdivisions in each dimension
double lagrange_degree8_6(double xi)
Definition: lagrange_functions.h:176
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition: Data.h:463
void getEdgeSpacing(struct Ripley r, int *lower, int *upper) const
Definition: CrossDomainCoupler.cpp:385
double lagrange_degree7_3(double xi)
Definition: lagrange_functions.h:132
void calculateOrder4(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:280
bool probeInterpolationAcross(int fsType_source, const escript::AbstractDomain &domain, int fsType_target, int dim)
Definition: CrossDomainCoupler.cpp:32
void calculateOrder8(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:334
virtual const double * getLength() const =0
returns the lengths of the domain
double lagrange_degree5_4(double xi)
Definition: lagrange_functions.h:84
Definition: AbstractAssembler.cpp:19
void shareRectangleXEdges(struct Ripley &r, int hasLower, int hasUpper, int lower, int upper, escript::Data &target) const
Definition: CrossDomainCoupler.cpp:822
double lagrange_degree6_6(double xi)
Definition: lagrange_functions.h:116
Data represents a collection of datapoints.
Definition: Data.h:64
RipleyDomain extends the AbstractContinuousDomain interface for the Ripley library and is the base cl...
Definition: ripley/src/RipleyDomain.h:103
void generateLocations(struct Ripley &r, double **positions) const
Definition: CrossDomainCoupler.cpp:133
#define INDEX3(_X1_, _X2_, _X3_, _N1_, _N2_)
Definition: index.h:25
index_t dim_t
Definition: DataTypes.h:66
dim_t maxs[3]
Definition: CrossDomainCoupler.h:42
double lagrange_degree5_1(double xi)
Definition: lagrange_functions.h:72
DataTypes::real_t * getSampleDataRW(DataTypes::RealVectorType::size_type sampleNo, DataTypes::real_t dummy=0)
Return the sample data for the given sample no. Please do not use this unless you NEED to access samp...
Definition: Data.h:1956
double lagrange_degree2_1(double xi)
Definition: lagrange_functions.h:24
double lagrange_degree10_10(double xi)
Definition: lagrange_functions.h:268
void calculateOrder3(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:269
double lagrange_degree6_2(double xi)
Definition: lagrange_functions.h:100
double lagrange_degree7_0(double xi)
Definition: lagrange_functions.h:120
Brick is the 3-dimensional implementation of a SpeckleyDomain.
Definition: speckley/src/Brick.h:34
double lagrange_degree7_7(double xi)
Definition: lagrange_functions.h:148
virtual const int * getNumSubdivisionsPerDim() const =0
returns the number of spatial subdivisions in each dimension
void calculateOrder5(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:292
double lagrange_degree6_5(double xi)
Definition: lagrange_functions.h:112
double lagrange_degree6_3(double xi)
Definition: lagrange_functions.h:104
double lagrange_degree10_9(double xi)
Definition: lagrange_functions.h:264
double lagrange_degree8_5(double xi)
Definition: lagrange_functions.h:172
virtual const dim_t * getNumElementsPerDim() const =0
returns the number of elements per MPI rank in each dimension
double lagrange_degree8_4(double xi)
Definition: lagrange_functions.h:168
SpeckleyDomain extends the AbstractContinuousDomain interface for the Speckley library and is the bas...
Definition: speckley/src/SpeckleyDomain.h:86
double lagrange_degree7_5(double xi)
Definition: lagrange_functions.h:140
MPI_Comm getMPIComm() const
returns the MPI communicator
Definition: speckley/src/SpeckleyDomain.h:138
double lagrange_degree9_4(double xi)
Definition: lagrange_functions.h:204
void interpolate(escript::Data &target, const escript::Data &source) const
Definition: CrossDomainCoupler.cpp:453
virtual int getDim() const
returns the number of spatial dimensions of the domain
Definition: ripley/src/RipleyDomain.h:177
void shareRectangleYEdges(struct Ripley &r, int hasLower, int hasUpper, int lower, int upper, escript::Data &target) const
Definition: CrossDomainCoupler.cpp:900
double lagrange_degree5_5(double xi)
Definition: lagrange_functions.h:88
int s_NX[3]
Definition: CrossDomainCoupler.h:85
Definition: CrossDomainCoupler.h:29
double lagrange_degree10_6(double xi)
Definition: lagrange_functions.h:252
double lagrange_degree4_0(double xi)
Definition: lagrange_functions.h:48
double lagrange_degree6_0(double xi)
Definition: lagrange_functions.h:92
@ Elements
Definition: Speckley.h:63
double lagrange_degree3_0(double xi)
Definition: lagrange_functions.h:32
#define MPI_DOUBLE
Definition: EsysMPI.h:49
double lagrange_degree6_1(double xi)
Definition: lagrange_functions.h:96
#define SHARED
Definition: CrossDomainCoupler.cpp:24
double lagrange_degree10_0(double xi)
Definition: lagrange_functions.h:228
double lagrange_degree3_2(double xi)
Definition: lagrange_functions.h:40
int numQuads
Definition: CrossDomainCoupler.h:88
double lagrange_degree3_3(double xi)
Definition: lagrange_functions.h:44
virtual double getLocalCoordinate(index_t index, int dim) const =0
returns the index'th coordinate value in given dimension for this rank
double lagrange_degree2_0(double xi)
Definition: lagrange_functions.h:20
#define MINE
Definition: CrossDomainCoupler.cpp:23
bool validInterpolation(escript::Data &target, const escript::Data &source, const SpeckleyDomain *speck, const double *s_dx, const ripley::RipleyDomain *other) const
Definition: CrossDomainCoupler.cpp:75
void calculate(struct Ripley &r, dim_t ex, dim_t ey, dim_t ez, int oqx, int oqy, int oqz, double *out, const double *factor_x, const double *factor_y, const double *factor_z, const escript::Data &source) const
Definition: CrossDomainCoupler.cpp:409
int getTypeCode() const
Returns the function space type code.
Definition: FunctionSpace.cpp:95
virtual int getDim() const
returns the number of spatial dimensions of the domain
Definition: speckley/src/SpeckleyDomain.h:157
double lagrange_degree9_7(double xi)
Definition: lagrange_functions.h:216
int MPI_Comm
Definition: EsysMPI.h:44
virtual const dim_t * getNumFacesPerBoundary() const =0
returns the number of face elements in the order (left,right,bottom,top,[front,back]) on current MPI ...
double lagrange_degree7_1(double xi)
Definition: lagrange_functions.h:124
const ripley::RipleyDomain * domain
Definition: CrossDomainCoupler.h:38
double speckley_origin[3]
Definition: CrossDomainCoupler.h:86
Base class for all escript domains.
Definition: AbstractDomain.h:51
double lagrange_degree3_1(double xi)
Definition: lagrange_functions.h:36
dim_t s_NE[3]
Definition: CrossDomainCoupler.h:83
dim_t NE[3]
Definition: CrossDomainCoupler.h:40
virtual const dim_t * getNumFacesPerBoundary() const =0
returns the number of face elements in the order (left,right,bottom,top,[front,back]) on current MPI ...
double lagrange_degree4_4(double xi)
Definition: lagrange_functions.h:64
virtual const dim_t * getNumElementsPerDim() const =0
returns the number of elements per MPI rank in each dimension
void calculateOrder6(int dim, double loc, double *results) const
Definition: CrossDomainCoupler.cpp:305
SpeckleyException exception class.
Definition: SpeckleyException.h:31
double lagrange_degree9_1(double xi)
Definition: lagrange_functions.h:192
#define THEIRS
Definition: CrossDomainCoupler.cpp:25
double lagrange_degree10_5(double xi)
Definition: lagrange_functions.h:248
int numComp
Definition: CrossDomainCoupler.h:95
virtual const double * getLength() const =0
returns the lengths of the domain
void shareBrickYFaces(struct Ripley &r, int hasLower, int hasUpper, int lower, int upper, escript::Data &target) const
Definition: CrossDomainCoupler.cpp:669