XIOS
1.0
Xml I/O Server
|
Implementing interpolation on axis The values on axis source are assumed monotonic. Plus de détails...
#include <axis_algorithm_interpolate.hpp>
Fonctions membres publiques | |
CAxisAlgorithmInterpolate (CAxis *axisDestination, CAxis *axisSource, CInterpolateAxis *interpAxis) | |
virtual | ~CAxisAlgorithmInterpolate () |
Fonctions membres publiques inherited from xios::CAxisAlgorithmTransformation | |
CAxisAlgorithmTransformation (CAxis *axisDestination, CAxis *axisSource) | |
CAxisAlgorithmTransformation (CAxis *axisDestination, CDomain *domainSource) | |
CAxisAlgorithmTransformation (CAxis *axisDestination, CScalar *scalarSource) | |
virtual | ~CAxisAlgorithmTransformation () |
Fonctions membres publiques inherited from xios::CGenericAlgorithmTransformation | |
CGenericAlgorithmTransformation () | |
virtual | ~CGenericAlgorithmTransformation () |
bool | isDistributedTransformation (int elementPositionInGrid, CGrid *gridSrc, CGrid *gridDst) |
void | computeGlobalSourceIndex (int elementPositionInGrid, CGrid *gridSrc, CGrid *gridDst, SourceDestinationIndexMap &globaIndexWeightFromSrcToDst) |
This function computes the global indexes of grid source, which the grid destination is in demand. Plus de détails... | |
virtual void | apply (const std::vector< std::pair< int, double > > &localIndex, const double *dataInput, CArray< double, 1 > &dataOut, std::vector< bool > &flagInitial, bool ignoreMissingValue, bool firstPass) |
Apply a operation on local data. Plus de détails... | |
virtual void | updateData (CArray< double, 1 > &dataOut) |
Update whole dataOut (on necessary). Plus de détails... | |
std::vector< StdString > | getIdAuxInputs () |
AlgoTransType | type () |
void | computeIndexSourceMapping (const std::vector< CArray< double, 1 > * > &dataAuxInputs=std::vector< CArray< double, 1 > * >()) |
Compute global index mapping from one element of destination grid to the corresponding element of source grid. Plus de détails... | |
void | computeTransformationMappingNonDistributed (int elementPositionInGrid, CGrid *gridSrc, CGrid *gridDst, vector< int > &localSrc, vector< int > &localDst, vector< double > &weight, int &nbLocalIndexOnGridDest) |
void | nonDistributedrecursiveFunct (int currentPos, bool masked, int elementPositionInGrid, vector< CArray< bool, 1 > * > &maskSrc, vector< CArray< bool, 1 > * > &maskDst, int &srcInd, int &srcIndCompressed, vector< int > &nIndexSrc, int &t, vector< vector< vector< pair< int, double > > > > &dstIndWeight, int currentInd, vector< int > &localSrc, vector< int > &localDst, vector< double > &weight) |
Fonctions membres publiques statiques | |
static bool | registerTrans () |
Fonctions membres protégées | |
void | computeIndexSourceMapping_ (const std::vector< CArray< double, 1 > * > &dataAuxInputs) |
Compute the index mapping between axis on grid source and one on grid destination. Plus de détails... | |
Fonctions membres protégées inherited from xios::CAxisAlgorithmTransformation | |
void | computeIndexSourceMapping_ (const std::vector< CArray< double, 1 > * > &dataAuxInputs) |
virtual void | computeExchangeGlobalIndex (const CArray< size_t, 1 > &globalAxisIndex, int elementType, CClientClientDHTInt::Index2VectorInfoTypeMap &globalDomainIndexOnProc) |
Compute global index of axis on different processes. Plus de détails... | |
Fonctions membres protégées inherited from xios::CGenericAlgorithmTransformation | |
void | computeGlobalGridIndexMapping (int elementPositionInGrid, const std::vector< int > &srcRank, std::unordered_map< int, std::vector< std::pair< int, double > > > &src2DstMap, CGrid *gridDst, CGrid *gridSrc, std::vector< std::unordered_map< int, std::vector< size_t > > > &globalElementIndexOnProc, SourceDestinationIndexMap &globaIndexWeightFromSrcToDst) |
Compute mapping of global index of grid source and grid destination. Plus de détails... | |
void | computeExchangeDomainIndex (CDomain *domainDst, CDomain *domainSrc, CArray< size_t, 1 > &destGlobalIndexPositionInGrid, std::unordered_map< int, std::vector< size_t > > &globalDomainIndexOnProc) |
Find out proc and global index of domain source which domain destination is on demande. Plus de détails... | |
void | computeExchangeAxisIndex (CAxis *axisDst, CAxis *axisSrc, CArray< size_t, 1 > &destGlobalIndexPositionInGrid, std::unordered_map< int, std::vector< size_t > > &globalAxisIndexOnProc) |
Find out proc and global index of axis source which axis destination is on demande. Plus de détails... | |
void | computeExchangeScalarIndex (CScalar *scalarDst, CScalar *scalarSrc, CArray< size_t, 1 > &destGlobalIndexPositionInGrid, std::unordered_map< int, std::vector< size_t > > &globalScalarIndexOnProc) |
Find out proc and global index of axis source which axis destination is on demande. Plus de détails... | |
void | computePositionElements (CGrid *dst, CGrid *src) |
Fonctions membres privées | |
void | retrieveAllAxisValue (const CArray< double, 1 > &axisValue, const CArray< bool, 1 > &axisMask, std::vector< double > &recvBuff, std::vector< int > &indexVec) |
Each client retrieves all values of an axis. Plus de détails... | |
void | computeInterpolantPoint (const std::vector< double > &recvBuff, const std::vector< int > &, int transPos=0) |
Compute the interpolant points Assume that we have all value of axis source, with these values, need to calculate weight (coeff) of Lagrange polynomial. Plus de détails... | |
void | computeWeightedValueAndMapping (const std::map< int, std::vector< std::pair< int, double > > > &interpolatingIndexValues, int transPos=0) |
Compute weight (coeff) of Lagrange's polynomial. Plus de détails... | |
void | fillInAxisValue (std::vector< CArray< double, 1 > > &vecAxisValue, const std::vector< CArray< double, 1 > * > &dataAuxInputs) |
Fill in axis value dynamically from a field whose grid is composed of a domain and an axis. Plus de détails... | |
Fonctions membres privées statiques | |
static CGenericAlgorithmTransformation * | create (CGrid *gridDst, CGrid *gridSrc, CTransformation< CAxis > *transformation, int elementPositionInGrid, std::map< int, int > &elementPositionInGridSrc2ScalarPosition, std::map< int, int > &elementPositionInGridSrc2AxisPosition, std::map< int, int > &elementPositionInGridSrc2DomainPosition, std::map< int, int > &elementPositionInGridDst2ScalarPosition, std::map< int, int > &elementPositionInGridDst2AxisPosition, std::map< int, int > &elementPositionInGridDst2DomainPosition) |
Attributs privés | |
int | order_ |
StdString | coordinate_ |
std::vector< std::vector< int > > | transPosition_ |
Additional Inherited Members | |
Types publics inherited from xios::CGenericAlgorithmTransformation | |
enum | AlgoTransType { ELEMENT_GENERATION = 0, ELEMENT_MODIFICATION_WITHOUT_DATA = 1, ELEMENT_MODIFICATION_WITH_DATA = 2, ELEMENT_NO_MODIFICATION_WITH_DATA = 3, ELEMENT_NO_MODIFICATION_WITHOUT_DATA = 4 } |
typedef std::unordered_map < int, std::unordered_map < size_t, std::vector < std::pair< size_t, double > > > > | SourceDestinationIndexMap |
Types protégés inherited from xios::CGenericAlgorithmTransformation | |
typedef std::unordered_map < size_t, int > | GlobalLocalMap |
typedef std::unordered_map < int, std::vector< int > > | TransformationIndexMap |
typedef std::unordered_map < int, std::vector< double > > | TransformationWeightMap |
typedef std::unordered_map < int, std::vector< int > > | TransformationPositionMap |
Attributs protégés inherited from xios::CAxisAlgorithmTransformation | |
std::vector< int > | axisDestGlobalIndex_ |
Global index of an axis on grid destination. Plus de détails... | |
int | axisDestGlobalSize_ |
Size of. Plus de détails... | |
CAxis * | axisDest_ |
Axis on grid destination. Plus de détails... | |
CAxis * | axisSrc_ |
Axis on grid source. Plus de détails... | |
CDomain * | domainSrc_ |
Domain on grid source. Plus de détails... | |
CScalar * | scalarSrc_ |
Scalar on grid source. Plus de détails... | |
Attributs protégés inherited from xios::CGenericAlgorithmTransformation | |
bool | isDistributed_ |
indicate if the transformation is performed on a distributed element Plus de détails... | |
bool | isDistributedComputed_ |
indicate if the method isDistributedTransformation has been called before Plus de détails... | |
std::vector < TransformationIndexMap > | transformationMapping_ |
Map between global index of destination element and source element. Plus de détails... | |
std::vector < TransformationWeightMap > | transformationWeight_ |
Weight corresponding of source to destination. Plus de détails... | |
std::vector < TransformationPositionMap > | transformationPosition_ |
std::vector< StdString > | idAuxInputs_ |
Id of auxillary inputs which helps doing transformation dynamically. Plus de détails... | |
AlgoTransType | type_ |
std::set< StdSize > | indexElementSrc_ |
std::vector < std::unordered_map< int, std::vector< size_t > > > | globalElementIndexOnProc_ |
std::vector< int > | procContainSrcElementIdx_ |
std::set< int > | commonProc_ |
std::vector< set< int > > | procElementList_ |
CClientClientDHTInt::Index2VectorInfoTypeMap | globalIndexOfTransformedElementOnProc_ |
bool | computedProcSrcNonTransformedElement_ |
std::map< int, int > | elementPositionInGridSrc2AxisPosition_ |
std::map< int, int > | elementPositionInGridSrc2DomainPosition_ |
std::map< int, int > | elementPositionInGridSrc2ScalarPosition_ |
std::map< int, int > | elementPositionInGridDst2AxisPosition_ |
std::map< int, int > | elementPositionInGridDst2DomainPosition_ |
std::map< int, int > | elementPositionInGridDst2ScalarPosition_ |
bool | eliminateRedondantSrc_ |
Implementing interpolation on axis The values on axis source are assumed monotonic.
Définition à la ligne 26 du fichier axis_algorithm_interpolate.hpp.
xios::CAxisAlgorithmInterpolate::CAxisAlgorithmInterpolate | ( | CAxis * | axisDestination, |
CAxis * | axisSource, | ||
CInterpolateAxis * | interpAxis | ||
) |
|
inlinevirtual |
Définition à la ligne 31 du fichier axis_algorithm_interpolate.hpp.
|
protectedvirtual |
Compute the index mapping between axis on grid source and one on grid destination.
Implémente xios::CGenericAlgorithmTransformation.
Définition à la ligne 69 du fichier axis_algorithm_interpolate.cpp.
Références xios::CAxisAlgorithmTransformation::axisSrc_, xios::CContext::client, xios::CContextClient::clientSize, computeInterpolantPoint(), fillInAxisValue(), xios::CTimer::get(), xios::CContext::getCurrent(), xios::CTimer::resume(), retrieveAllAxisValue(), et xios::CTimer::suspend().
|
private |
Compute the interpolant points Assume that we have all value of axis source, with these values, need to calculate weight (coeff) of Lagrange polynomial.
[in] | axisValue | all value of axis source |
[in] | tranPos | position of axis on a domain |
Définition à la ligne 104 du fichier axis_algorithm_interpolate.cpp.
Références xios::order_.
Référencé par computeIndexSourceMapping_().
|
private |
Compute weight (coeff) of Lagrange's polynomial.
[in] | interpolatingIndexValues | the necessary axis value to calculate the coeffs |
Définition à la ligne 178 du fichier axis_algorithm_interpolate.cpp.
Références xios::transMap, et xios::transWeight.
|
staticprivate |
Définition à la ligne 22 du fichier axis_algorithm_interpolate.cpp.
Référencé par registerTrans().
|
private |
Fill in axis value dynamically from a field whose grid is composed of a domain and an axis.
[in/out] | vecAxisValue vector axis value filled in from input field |
Définition à la ligne 302 du fichier axis_algorithm_interpolate.cpp.
Références xios::CAxisAlgorithmTransformation::axisSrc_, coordinate_, xios::ERROR, xios::CObjectTemplate< CField >::get(), xios::CGrid::getAxis(), xios::CGrid::getDistributionClient(), xios::CGrid::getDomains(), xios::CGrid::getGlobalDimension(), xios::CDistributionClient::getGlobalLocalDataSendToServer(), xios::CObject::getId(), xios::CField::grid, xios::CGenericAlgorithmTransformation::transformationMapping_, xios::CGenericAlgorithmTransformation::transformationPosition_, xios::CGenericAlgorithmTransformation::transformationWeight_, et transPosition_.
Référencé par computeIndexSourceMapping_().
|
static |
Définition à la ligne 44 du fichier axis_algorithm_interpolate.cpp.
Références create(), xios::CGridTransformationFactory< T >::registerTransformation(), et xios::TRANS_INTERPOLATE_AXIS.
Référencé par xios::CGridTransformationSelector::registerTransformations().
|
private |
Each client retrieves all values of an axis.
[in/out] | recvBuff buffer for receiving values (already allocated) |
[in/out] | indexVec mapping between values and global index of axis |
Définition à la ligne 224 du fichier axis_algorithm_interpolate.cpp.
Références xios::CContext::client, xios::CContextClient::clientSize, xios::CContext::getCurrent(), et xios::CContextClient::intraComm.
Référencé par computeIndexSourceMapping_().
|
private |
Définition à la ligne 48 du fichier axis_algorithm_interpolate.hpp.
Référencé par fillInAxisValue().
|
private |
Définition à la ligne 47 du fichier axis_algorithm_interpolate.hpp.
|
private |
Définition à la ligne 49 du fichier axis_algorithm_interpolate.hpp.
Référencé par fillInAxisValue().