XIOS  1.0
Xml I/O Server
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros
Référence de la classe xios::CAxisAlgorithmInterpolate

Implementing interpolation on axis The values on axis source are assumed monotonic. Plus de détails...

#include <axis_algorithm_interpolate.hpp>

+ Graphe d'héritage de xios::CAxisAlgorithmInterpolate:
+ Graphe de collaboration de xios::CAxisAlgorithmInterpolate:

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< StdStringgetIdAuxInputs ()
 
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...
 
CAxisaxisDest_
 Axis on grid destination. Plus de détails...
 
CAxisaxisSrc_
 Axis on grid source. Plus de détails...
 
CDomaindomainSrc_
 Domain on grid source. Plus de détails...
 
CScalarscalarSrc_
 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< StdStringidAuxInputs_
 Id of auxillary inputs which helps doing transformation dynamically. Plus de détails...
 
AlgoTransType type_
 
std::set< StdSizeindexElementSrc_
 
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_
 

Description détaillée

Implementing interpolation on axis The values on axis source are assumed monotonic.

Définition à la ligne 26 du fichier axis_algorithm_interpolate.hpp.

Documentation des constructeurs et destructeur

xios::CAxisAlgorithmInterpolate::CAxisAlgorithmInterpolate ( CAxis axisDestination,
CAxis axisSource,
CInterpolateAxis interpAxis 
)
virtual xios::CAxisAlgorithmInterpolate::~CAxisAlgorithmInterpolate ( )
inlinevirtual

Définition à la ligne 31 du fichier axis_algorithm_interpolate.hpp.

Documentation des fonctions membres

CATCH void xios::CAxisAlgorithmInterpolate::computeIndexSourceMapping_ ( const std::vector< CArray< double, 1 > * > &  dataAuxInputs)
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().

+ Voici le graphe d'appel pour cette fonction :

CATCH void xios::CAxisAlgorithmInterpolate::computeInterpolantPoint ( const std::vector< double > &  axisValue,
const std::vector< int > &  indexVec,
int  transPos = 0 
)
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.

Paramètres
[in]axisValueall value of axis source
[in]tranPosposition 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_().

+ Voici le graphe des appelants de cette fonction :

CATCH void xios::CAxisAlgorithmInterpolate::computeWeightedValueAndMapping ( const std::map< int, std::vector< std::pair< int, double > > > &  interpolatingIndexValues,
int  transPos = 0 
)
private

Compute weight (coeff) of Lagrange's polynomial.

Paramètres
[in]interpolatingIndexValuesthe 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.

CGenericAlgorithmTransformation * xios::CAxisAlgorithmInterpolate::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 
)
staticprivate

Définition à la ligne 22 du fichier axis_algorithm_interpolate.cpp.

Référencé par registerTrans().

+ Voici le graphe des appelants de cette fonction :

CATCH void xios::CAxisAlgorithmInterpolate::fillInAxisValue ( std::vector< CArray< double, 1 > > &  vecAxisValue,
const std::vector< CArray< double, 1 > * > &  dataAuxInputs 
)
private
CATCH bool xios::CAxisAlgorithmInterpolate::registerTrans ( )
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().

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

CATCH void xios::CAxisAlgorithmInterpolate::retrieveAllAxisValue ( const CArray< double, 1 > &  axisValue,
const CArray< bool, 1 > &  axisMask,
std::vector< double > &  recvBuff,
std::vector< int > &  indexVec 
)
private

Each client retrieves all values of an axis.

Paramètres
[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_().

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

Documentation des données membres

StdString xios::CAxisAlgorithmInterpolate::coordinate_
private

Définition à la ligne 48 du fichier axis_algorithm_interpolate.hpp.

Référencé par fillInAxisValue().

int xios::CAxisAlgorithmInterpolate::order_
private

Définition à la ligne 47 du fichier axis_algorithm_interpolate.hpp.

std::vector<std::vector<int> > xios::CAxisAlgorithmInterpolate::transPosition_
private

Définition à la ligne 49 du fichier axis_algorithm_interpolate.hpp.

Référencé par fillInAxisValue().


La documentation de cette classe a été générée à partir des fichiers suivants :