source: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_temporal_splitting.cpp @ 2011

Last change on this file since 2011 was 2011, checked in by ymipsl, 3 years ago
  • bug fix when createing mask on server side when overlapping grid
  • implement axis interpolation on pressure coordinate
  • big cleaning in transformation

YM

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.9 KB
Line 
1/*!
2   \file axis_algorithm_temporal_splitting.cpp
3
4   \brief Algorithm to split scalar into  axis by temporal accumulation
5 */
6#include "axis_algorithm_temporal_splitting.hpp"
7#include "temporal_splitting.hpp"
8#include "axis.hpp"
9#include "scalar.hpp"
10#include "grid.hpp"
11#include "grid_transformation_factory_impl.hpp"
12#include "temporal_transform_filter.hpp"
13
14namespace xios {
15CGenericAlgorithmTransformation* CAxisAlgorithmTemporalSplitting::create(bool isSource, CGrid* gridDst, CGrid* gridSrc,
16                                                                     CTransformation<CAxis>* transformation,
17                                                                     int elementPositionInGrid,
18                                                                     std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
19                                                                     std::map<int, int>& elementPositionInGridSrc2AxisPosition,
20                                                                     std::map<int, int>& elementPositionInGridSrc2DomainPosition,
21                                                                     std::map<int, int>& elementPositionInGridDst2ScalarPosition,
22                                                                     std::map<int, int>& elementPositionInGridDst2AxisPosition,
23                                                                     std::map<int, int>& elementPositionInGridDst2DomainPosition)
24TRY
25{
26  std::vector<CAxis*> axisListDestP = gridDst->getAxis();
27  std::vector<CScalar*> scalarListSrcP = gridSrc->getScalars();
28
29  CTemporalSplitting* temporalSplitting = dynamic_cast<CTemporalSplitting*> (transformation);
30  int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid];
31  int scalarSrcIndex = elementPositionInGridSrc2ScalarPosition[elementPositionInGrid];
32
33  return (new CAxisAlgorithmTemporalSplitting(isSource, axisListDestP[axisDstIndex], scalarListSrcP[scalarSrcIndex], temporalSplitting));
34}
35CATCH
36
37bool CAxisAlgorithmTemporalSplitting::dummyRegistered_ = CAxisAlgorithmTemporalSplitting::registerTrans();
38bool CAxisAlgorithmTemporalSplitting::registerTrans()
39TRY
40{
41  return CGridTransformationFactory<CAxis>::registerTransformation(TRANS_TEMPORAL_SPLITTING, create);
42}
43CATCH
44
45CAxisAlgorithmTemporalSplitting::CAxisAlgorithmTemporalSplitting(bool isSource, CAxis* axisDestination, CScalar* scalarSource, CTemporalSplitting* algo)
46 : CAlgorithmTransformationNoDataModification(isSource)
47{
48  nrecords_ = axisDestination->n_glo ; // also axis must not be distributed, make more test later
49}
50
51CTransformFilter* CAxisAlgorithmTemporalSplitting::createTransformFilter(CGarbageCollector& gc, CGridAlgorithm* algo, bool detectMissingValues, double defaultValue)
52{
53  return new CTemporalTransformFilter(gc, 1, algo, nrecords_, detectMissingValues, defaultValue) ;
54}
55
56CAxisAlgorithmTemporalSplitting::~CAxisAlgorithmTemporalSplitting()
57{
58}
59
60
61}
Note: See TracBrowser for help on using the repository browser.