Changeset 895
- Timestamp:
- 07/11/16 17:36:01 (9 years ago)
- Location:
- XIOS/trunk/src
- Files:
-
- 13 added
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/config/node_type.conf
r888 r895 63 63 #endif //__XIOS_CReduceAxisToScalar__ 64 64 65 #ifdef __XIOS_CReduceDomainToAxis__ 66 DECLARE_NODE(ReduceDomainToAxis, reduce_domain) 67 #endif //__XIOS_CReduceDomainToAxis__ 68 69 #ifdef __XIOS_CExtractDomainToAxis__ 70 DECLARE_NODE(ExtractDomainToAxis, extract_domain) 71 #endif //__XIOS_CExtractDomainToAxis__ 72 65 73 #ifdef __XIOS_CContext__ 66 74 DECLARE_NODE_PAR(Context, context) -
XIOS/trunk/src/group_factory_decl.cpp
r888 r895 33 33 macro(CScalarGroup) 34 34 macro(CReduceAxisToScalarGroup) 35 macro(CReduceDomainToAxisGroup) 36 macro(CExtractDomainToAxisGroup) 35 37 } -
XIOS/trunk/src/group_template_decl.cpp
r888 r895 22 22 macro(Scalar) 23 23 macro(ReduceAxisToScalar) 24 macro(ReduceDomainToAxis) 25 macro(ExtractDomainToAxis) 24 26 25 27 } -
XIOS/trunk/src/node/axis.cpp
r836 r895 49 49 m["interpolate_axis"] = TRANS_INTERPOLATE_AXIS; 50 50 m["inverse_axis"] = TRANS_INVERSE_AXIS; 51 m["reduce_domain"] = TRANS_REDUCE_DOMAIN_TO_AXIS; 52 m["extract_domain"] = TRANS_EXTRACT_DOMAIN_TO_AXIS; 51 53 } 52 54 … … 922 924 TransMapTypes::const_iterator itb = transformationMap_.begin(), it, 923 925 ite = transformationMap_.end(); 924 for (it = itb; it != ite; ++it)925 {926 (it->second)->checkValid(this);927 }926 // for (it = itb; it != ite; ++it) 927 // { 928 // (it->second)->checkValid(this); 929 // } 928 930 } 929 931 -
XIOS/trunk/src/node/domain.cpp
r893 r895 83 83 } 84 84 85 85 86 86 const std::vector<int>& CDomain::getIndexesToWrite(void) const 87 87 { … … 215 215 this->relFiles.insert(filename); 216 216 } 217 217 218 218 void CDomain::addRelFileCompressed(const StdString& filename) 219 219 { … … 2006 2006 TransMapTypes::const_iterator itb = transformationMap_.begin(), it, 2007 2007 ite = transformationMap_.end(); 2008 for (it = itb; it != ite; ++it)2009 {2010 (it->second)->checkValid(this);2011 }2008 // for (it = itb; it != ite; ++it) 2009 // { 2010 // (it->second)->checkValid(this); 2011 // } 2012 2012 } 2013 2013 -
XIOS/trunk/src/node/grid.cpp
r890 r895 1688 1688 << "Dimension of grid source " << transformGridSrc->getId() << " is " << transformGridSrc->axis_domain_order.numElements()); 1689 1689 } 1690 else1691 {1692 // int ssize = axis_domain_order.numElements();1693 // for (int i = 0; i < ssize; ++i)1694 // if (axis_domain_order(i) != (transformGridSrc->axis_domain_order)(i))1695 // ERROR("CGrid::completeGrid(CGrid* transformGridSrc)",1696 // << "Grids " << this->getId() << " and " << transformGridSrc->getId()1697 // << " don't have elements in the same order");1698 }1699 1690 } 1700 1691 -
XIOS/trunk/src/node/node_enum.hpp
r888 r895 27 27 eGenerateRectilinearDomain, 28 28 eScalar, 29 eReduceAxisToScalar 29 eReduceAxisToScalar, 30 eReduceDomainToAxis, 31 eExtractDomainToAxis 30 32 31 33 } ENodeType; -
XIOS/trunk/src/node/node_type.hpp
r888 r895 18 18 #include "scalar.hpp" 19 19 #include "reduce_axis_to_scalar.hpp" 20 #include "reduce_domain_to_axis.hpp" 21 #include "extract_domain_to_axis.hpp" 20 22 21 23 -
XIOS/trunk/src/node/scalar.cpp
r888 r895 92 92 TransMapTypes::const_iterator itb = transformationMap_.begin(), it, 93 93 ite = transformationMap_.end(); 94 for (it = itb; it != ite; ++it)95 {96 (it->second)->checkValid(this);97 }94 // for (it = itb; it != ite; ++it) 95 // { 96 // (it->second)->checkValid(this); 97 // } 98 98 } 99 99 -
XIOS/trunk/src/node/transformation.hpp
r840 r895 22 22 /// Constructeurs /// 23 23 CTransformation(void) {} 24 virtual void checkValid(T* dest) = 0;24 virtual void checkValid(T* dest) {} 25 25 26 26 std::vector<StdString> checkAuxInputs() { return checkAuxInputs_(); } -
XIOS/trunk/src/node/transformation_enum.hpp
r888 r895 13 13 TRANS_INTERPOLATE_DOMAIN = 4, 14 14 TRANS_GENERATE_RECTILINEAR_DOMAIN = 5, 15 TRANS_REDUCE_AXIS_TO_SCALAR = 6 15 TRANS_REDUCE_AXIS_TO_SCALAR = 6, 16 TRANS_REDUCE_DOMAIN_TO_AXIS = 7, 17 TRANS_EXTRACT_DOMAIN_TO_AXIS = 8 16 18 } ETranformationType; 17 19 -
XIOS/trunk/src/object_factory_decl.cpp
r888 r895 34 34 macro(CScalar) 35 35 macro(CReduceAxisToScalar) 36 macro(CReduceDomainToAxis) 37 macro(CExtractDomainToAxis) 36 38 37 39 macro(CFieldGroup) … … 50 52 macro(CScalarGroup) 51 53 macro(CReduceAxisToScalarGroup) 54 macro(CReduceDomainToAxisGroup) 55 macro(CExtractDomainToAxisGroup) 52 56 } -
XIOS/trunk/src/object_template_decl.cpp
r888 r895 21 21 template class CObjectTemplate<CScalar>; 22 22 template class CObjectTemplate<CReduceAxisToScalar>; 23 template class CObjectTemplate<CReduceDomainToAxis>; 24 template class CObjectTemplate<CExtractDomainToAxis>; 23 25 24 26 template class CObjectTemplate<CContextGroup>; … … 37 39 template class CObjectTemplate<CScalarGroup>; 38 40 template class CObjectTemplate<CReduceAxisToScalarGroup>; 41 template class CObjectTemplate<CReduceDomainToAxisGroup>; 42 template class CObjectTemplate<CExtractDomainToAxisGroup>; 39 43 } -
XIOS/trunk/src/test/test_new_features.f90
r886 r895 19 19 INTEGER,PARAMETER :: llm=10 20 20 INTEGER,PARAMETER :: llmInterPolated=4 21 DOUBLE PRECISION :: lval(llm)=1, tsTemp, lvalInterPolated(llmInterPolated)=1 21 DOUBLE PRECISION :: lval(llm)=1, tsTemp, lvalInterPolated(llmInterPolated)=1, nlev(nj_glo)=10 22 22 TYPE(xios_field) :: field_hdl 23 23 TYPE(xios_fieldgroup) :: fieldgroup_hdl … … 29 29 DOUBLE PRECISION,DIMENSION(4,ni_glo,nj_glo) :: bnds_lon_glo, bnds_lat_glo 30 30 DOUBLE PRECISION :: field_A_glo(ni_glo,nj_glo,llm), lval_ni_glo(ni_glo), lval_nj_glo(nj_glo), field_Value_glo(ni_glo,nj_glo,llm) 31 DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:,:), field_A ll_Axis(:,:,:), lonvalue(:) , &31 DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:,:), field_A_2D(:,:), field_All_Axis(:,:,:), lonvalue(:) , & 32 32 field_Axis(:), lvaln(:), lval_ni(:), lval_nj(:), field_Two_Axis(:,:), lvalnInterp(:), & 33 33 lontransformed(:,:), lattransformed(:,:), lon_glotransformed(:,:), lat_glotransformed(:,:), & … … 106 106 CALL Distribute_index(jbeginDomInterp, jendDomInterp, njDomInterp, njDomGlo, rank, size) 107 107 108 ALLOCATE(field_A(0:ni+1,-1:nj+2,llm), field_ Two_Axis(ni_glo,1:nj), field_Axis(nAxis), field_All_Axis(1:ni,1:nj,llm), &108 ALLOCATE(field_A(0:ni+1,-1:nj+2,llm), field_A_2D(0:ni+1,-1:nj+2), field_Two_Axis(ni_glo,1:nj), field_Axis(nAxis), field_All_Axis(1:ni,1:nj,llm), & 109 109 lon(ni,nj),lat(ni,nj), lonvalue(ni*nj), & 110 110 lvaln(nAxis), lval_ni(ni), lval_nj(nj), lvalnInterp(nAxisinterp), & … … 127 127 lattransformed(:,:) = lat_glotransformed(ibeginDomInterp+1:iendDomInterp+1,jbeginDomInterp+1:jendDomInterp+1) 128 128 field_A(1:ni,1:nj,:) = field_A_glo(ibegin+1:iend+1,jbegin+1:jend+1,:) 129 field_A_2D(1:ni,1:nj) = field_A_glo(ibegin+1:iend+1,jbegin+1:jend+1,1) 129 130 field_value(1:ni,1:nj,:) = field_Value_glo(ibegin+1:iend+1,jbegin+1:jend+1,:) 130 131 field_Axis(1:nAxis) = field_A_glo(1,1,axisBegin+1:axisEnd+1) … … 149 150 CALL xios_set_axis_attr("axis_D", n_glo=llm, begin=axisBegin, n=nAxis, value=lvaln) 150 151 CALL xios_set_axis_attr("axis_E", n_glo=llmInterPolated, value=lvalnInterp, begin=axisterpBegin, n=nAxisinterp) 152 CALL xios_set_axis_attr("axis_G", n_glo=nj_glo, value=nlev) 153 151 154 CALL xios_set_domain_attr("domain_A",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj) 152 155 CALL xios_set_domain_attr("domain_A",data_dim=2, data_ibegin=-1, data_ni=ni+2, data_jbegin=-2, data_nj=nj+4) … … 206 209 CALL xios_update_calendar(ts) 207 210 CALL xios_send_field("field_A",field_A) 211 CALL xios_send_field("field_A_2D",field_A_2D) 208 212 CALL xios_send_field("field_Value",field_value) 209 213 CALL xios_send_field("field_Axis",field_Axis) -
XIOS/trunk/src/transformation/Functions/reduction.cpp
r888 r895 3 3 #include "min.hpp" 4 4 #include "max.hpp" 5 #include "extract.hpp" 5 6 6 7 namespace xios { … … 19 20 m["max"] = TRANS_REDUCE_MAX; 20 21 CMaxReductionAlgorithm::registerTrans(); 22 23 m["extract"] = TRANS_REDUCE_EXTRACT; 24 CExtractReductionAlgorithm::registerTrans(); 21 25 } 22 26 -
XIOS/trunk/src/transformation/Functions/reduction_types.hpp
r888 r895 16 16 TRANS_REDUCE_SUM = 0, 17 17 TRANS_REDUCE_MIN = 1, 18 TRANS_REDUCE_MAX = 2 18 TRANS_REDUCE_MAX = 2, 19 TRANS_REDUCE_EXTRACT = 3 19 20 } EReductionType; 20 21 -
XIOS/trunk/src/transformation/axis_algorithm_transformation.cpp
r888 r895 19 19 20 20 CAxisAlgorithmTransformation::CAxisAlgorithmTransformation(CAxis* axisDestination, CAxis* axisSource) 21 : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(axisSource) 21 : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(axisSource), domainSrc_(0) 22 { 23 axisDestGlobalSize_ = axisDestination->n_glo.getValue(); 24 int niDest = axisDestination->n.getValue(); 25 int ibeginDest = axisDestination->begin.getValue(); 26 27 for (int idx = 0; idx < niDest; ++idx) 28 if ((axisDestination->mask)(idx)) axisDestGlobalIndex_.push_back(ibeginDest+idx); 29 } 30 31 CAxisAlgorithmTransformation::CAxisAlgorithmTransformation(CAxis* axisDestination, CDomain* domainSource) 32 : CGenericAlgorithmTransformation(), axisDest_(axisDestination), axisSrc_(0), domainSrc_(domainSource) 22 33 { 23 34 axisDestGlobalSize_ = axisDestination->n_glo.getValue(); … … 51 62 int clientSize = client->clientSize; 52 63 53 54 64 size_t globalIndex; 55 int nIndexSize = axisSrc_->index.numElements(); 65 int nIndexSize = 0; 66 if (2 == elementType) nIndexSize = domainSrc_->i_index.numElements(); 67 else if (1 == elementType) nIndexSize = axisSrc_->index.numElements(); 56 68 CClientClientDHTInt::Index2VectorInfoTypeMap globalIndex2ProcRank; 57 69 globalIndex2ProcRank.rehash(std::ceil(nIndexSize/globalIndex2ProcRank.max_load_factor())); 58 70 for (int idx = 0; idx < nIndexSize; ++idx) 59 71 { 60 globalIndex = axisSrc_->index(idx); 72 if (2 == elementType) 73 { 74 globalIndex = domainSrc_->i_index(idx) + domainSrc_->j_index(idx) * domainSrc_->ni_glo; 75 } 76 else if (1 == elementType) 77 { 78 globalIndex = axisSrc_->index(idx); 79 } 80 61 81 globalIndex2ProcRank[globalIndex].resize(1); 62 82 globalIndex2ProcRank[globalIndex][0] = clientRank; -
XIOS/trunk/src/transformation/axis_algorithm_transformation.hpp
r888 r895 15 15 16 16 class CAxis; 17 class CDomain; 18 17 19 /*! 18 20 \class CAxisAlgorithmTransformation … … 23 25 public: 24 26 CAxisAlgorithmTransformation(CAxis* axisDestination, CAxis* axisSource); 27 CAxisAlgorithmTransformation(CAxis* axisDestination, CDomain* domainSource); 25 28 26 29 virtual ~CAxisAlgorithmTransformation(); … … 45 48 //! Axis on grid source 46 49 CAxis* axisSrc_; 50 51 //! Domain on grid source 52 CDomain* domainSrc_; 47 53 }; 48 54 -
XIOS/trunk/src/transformation/grid_transformation.cpp
r888 r895 8 8 */ 9 9 #include "grid_transformation.hpp" 10 #include "reduce_axis_to_scalar.hpp" 11 #include "scalar_algorithm_reduce_axis.hpp" 12 #include "axis_algorithm_inverse.hpp" 13 #include "axis_algorithm_zoom.hpp" 14 #include "axis_algorithm_interpolate.hpp" 15 #include "domain_algorithm_zoom.hpp" 16 #include "domain_algorithm_interpolate.hpp" 10 #include "algo_types.hpp" 17 11 #include "context.hpp" 18 12 #include "context_client.hpp" 19 #include "axis_algorithm_transformation.hpp"20 13 #include "distribution_client.hpp" 21 14 #include "mpi_tag.hpp" … … 92 85 CZoomAxis* zoomAxis = 0; 93 86 CInterpolateAxis* interpAxis = 0; 87 CReduceDomainToAxis* reduceDomain = 0; 88 CExtractDomainToAxis* extractDomain = 0; 94 89 CGenericAlgorithmTransformation* algo = 0; 95 90 switch (transType) … … 109 104 algo = new CAxisAlgorithmInverse(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex]); 110 105 break; 106 case TRANS_REDUCE_DOMAIN_TO_AXIS: 107 reduceDomain = dynamic_cast<CReduceDomainToAxis*> (it->second); 108 domainSrcIndex = elementPositionInGridSrc2DomainPosition_[elementPositionInGrid]; 109 algo = new CAxisAlgorithmReduceDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], reduceDomain); 110 break; 111 case TRANS_EXTRACT_DOMAIN_TO_AXIS: 112 extractDomain = dynamic_cast<CExtractDomainToAxis*> (it->second); 113 domainSrcIndex = elementPositionInGridSrc2DomainPosition_[elementPositionInGrid]; 114 algo = new CAxisAlgorithmExtractDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], extractDomain); 115 break; 111 116 default: 112 117 break; … … 189 194 case TRANS_ZOOM_AXIS: 190 195 case TRANS_INVERSE_AXIS: 196 case TRANS_REDUCE_DOMAIN_TO_AXIS: 197 case TRANS_EXTRACT_DOMAIN_TO_AXIS: 191 198 axisIndex = elementPositionInGridDst2AxisPosition_[elementPositionInGrid]; 192 199 break; … … 267 274 case TRANS_ZOOM_AXIS: 268 275 case TRANS_INVERSE_AXIS: 276 case TRANS_REDUCE_DOMAIN_TO_AXIS: 277 case TRANS_EXTRACT_DOMAIN_TO_AXIS: 269 278 axisIndex = elementPositionInGridDst2AxisPosition_[elementPositionInGrid]; 270 279 break; -
XIOS/trunk/src/type/type_util.hpp
r888 r895 36 36 class CReduceAxisToScalar; 37 37 class CReduceAxisToScalarGroup; 38 class CReduceDomainToAxis; 39 class CReduceDomainToAxisGroup; 40 class CExtractDomainToAxis; 41 class CExtractDomainToAxisGroup; 38 42 39 43 template <typename T> inline string getStrType(void); … … 88 92 macro(CReduceAxisToScalar) 89 93 macro(CReduceAxisToScalarGroup) 94 macro(CReduceDomainToAxis) 95 macro(CReduceDomainToAxisGroup) 96 macro(CExtractDomainToAxis) 97 macro(CExtractDomainToAxisGroup) 90 98 #undef macro 91 99 } -
XIOS/trunk/src/xml_parser_decl.cpp
r888 r895 27 27 macro( Scalar ) 28 28 macro( ReduceAxisToScalar ) 29 macro( ReduceDomainToAxis ) 30 macro( ExtractDomainToAxis ) 29 31 } 30 32 }
Note: See TracChangeset
for help on using the changeset viewer.