- Timestamp:
- 03/16/17 15:04:53 (7 years ago)
- Location:
- XIOS/trunk
- Files:
-
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/inputs/REMAP/iodef.xml
r1064 r1076 5 5 <calendar type="Gregorian" start_date="2012-03-01 15:00:00" time_origin="2012-02-28 15:00:00 + 1d" /> 6 6 <field_definition level="1" > 7 <field_group id="fields_src" operation="instant" de fault_value="100000">7 <field_group id="fields_src" operation="instant" detect_missing_value=".false."> 8 8 <field id="src_field_2D" domain_ref="src_domain" /> 9 <field id="src_field_2D_clone" domain_ref="src_domain_clone" detect_missing_value=".TRUE."/>9 <field id="src_field_2D_clone" domain_ref="src_domain_clone" /> 10 10 <field id="src_field_3D" domain_ref="src_domain" axis_ref="src_axis" /> 11 <field id="src_field_3D_clone" grid_ref="src_grid_3D" detect_missing_value=".TRUE."/>11 <field id="src_field_3D_clone" grid_ref="src_grid_3D" /> 12 12 <field id="src_field_3D_pression" grid_ref="src_grid_3D" /> 13 <field id="src_field_4D" grid_ref="src_grid_4D" detect_missing_value=".TRUE."/>13 <field id="src_field_4D" grid_ref="src_grid_4D" /> 14 14 </field_group> 15 15 <field_group id="fields_dst"> 16 16 <field id="dst_field_2D" field_ref="src_field_2D" domain_ref="dst_domain"/> 17 17 <field id="dst_field_2D_regular_pole" field_ref="src_field_2D" domain_ref="dst_domain_regular_pole"/> 18 <field id="dst_field_2D_clone" field_ref="src_field_2D_clone" domain_ref="dst_domain_regular_pole" expr="@this" operation="average" detect_missing_value=".true."/>18 <field id="dst_field_2D_clone" field_ref="src_field_2D_clone" domain_ref="dst_domain_regular_pole" expr="@this" operation="average" /> 19 19 <field id="dst_field_2D_extract" field_ref="src_field_3D_clone" grid_ref="dst_grid_2D_extract"/> 20 20 <field id="dst_field_3D" field_ref="src_field_3D" grid_ref="dst_grid_3D"/> … … 37 37 <file id="output_2D" name="output_2D" > 38 38 <field field_ref="src_field_2D" name="field_src" /> 39 <field field_ref="src_field_2D_clone" name="field_src_clone" />39 <field field_ref="src_field_2D_clone" name="field_src_clone" default_value="100000" /> 40 40 <field field_ref="src_field_2D" name="field_dst_regular_0" domain_ref="dst_domain_regular_pole" /> 41 41 <field field_ref="dst_field_2D" name="field_dst_regular_1" /> 42 42 <field field_ref="dst_field_2D_regular_pole" name="field_dst_regular_2" /> 43 <field field_ref="dst_field_2D_clone" name="field_dst_regular_3" />43 <field field_ref="dst_field_2D_clone" name="field_dst_regular_3" detect_missing_value=".false." default_value="100000" /> 44 44 <field field_ref="dst_field_2D_extract" name="field_dst_regular_4" /> 45 45 </file> -
XIOS/trunk/src/filter/spatial_transform_filter.cpp
r1042 r1076 26 26 const std::vector<StdString>& auxInputs = gridTransformation->getAuxInputs(); 27 27 size_t inputCount = 1 + (auxInputs.empty() ? 0 : auxInputs.size()); 28 double defaultValue = (hasMissingValue) ? std::numeric_limits<double>::quiet_NaN() : missingValue;28 double defaultValue = (hasMissingValue) ? std::numeric_limits<double>::quiet_NaN() : 0.0; 29 29 boost::shared_ptr<CSpatialTransformFilter> filter(new CSpatialTransformFilter(gc, engine, defaultValue, inputCount)); 30 30 … … 117 117 118 118 // Get default value for output data 119 double defaultValue = 0.0; 120 if (0 != dataDest.numElements()) defaultValue = dataDest(0); 119 bool ignoreMissingValue = false; 120 double defaultValue = std::numeric_limits<double>::quiet_NaN(); 121 if (0 != dataDest.numElements()) ignoreMissingValue = NumTraits<double>::isnan(dataDest(0)); 121 122 122 123 const std::list<CGridTransformation::SendingIndexGridSourceMap>& listLocalIndexSend = gridTransformation->getLocalIndexToSendFromGridSource(); … … 203 204 dataCurrentDest, 204 205 localInitFlag, 205 defaultValue);206 ignoreMissingValue); 206 207 207 208 currentBuff += countSize; -
XIOS/trunk/src/test/test_remap.f90
r1064 r1076 90 90 DO i=1,src_ni 91 91 src_field_3D(i,:) = src_field_2D(i) 92 IF (( 23.5 < src_lat(i)) .AND. (src_lat(i) < 65.5) .AND. (0 < src_lon(i)) .AND. (src_lon(i) < 30)) THEN92 IF ((0 < src_lat(i)) .AND. (src_lat(i) < 25.5) .AND. (30 < src_lon(i)) .AND. (src_lon(i) < 60)) THEN 93 93 src_mask_2D(i)=.FALSE. 94 src_field_2D(i) = missing_value94 ! src_field_2D(i) = missing_value 95 95 ELSE 96 96 src_mask_2D(i)=.TRUE. … … 192 192 CALL xios_get_domain_attr("src_domain_unstructured_read", ni=src_tmp_ni, nj=src_tmp_nj) 193 193 ALLOCATE(tmp_field_2(src_tmp_ni*src_tmp_nj)) 194 195 DO ts=1,1 196 CALL xios_recv_field("src_field_regular", tmp_field_0) 197 CALL xios_recv_field("src_field_curvilinear", tmp_field_1) 198 CALL xios_recv_field("src_field_unstructured", tmp_field_2) 194 195 CALL xios_recv_field("src_field_regular", tmp_field_0) 196 CALL xios_recv_field("src_field_curvilinear", tmp_field_1) 197 CALL xios_recv_field("src_field_unstructured", tmp_field_2) 198 199 DO ts=1,10 199 200 CALL xios_update_calendar(ts) 200 201 CALL xios_send_field("src_field_2D",src_field_2D) -
XIOS/trunk/src/transformation/Functions/average_reduction.cpp
r1043 r1076 30 30 const double* dataInput, 31 31 CArray<double,1>& dataOut, 32 std::vector<bool>& flagInitial, 33 const double& defaultValue)32 std::vector<bool>& flagInitial, 33 bool ignoreMissingValue) 34 34 { 35 if (resetWeight_) { weights_.resize(flagInitial.size()); weights_ = 1.0; resetWeight_ = false; } 36 bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 35 if (resetWeight_) { weights_.resize(flagInitial.size()); weights_ = 1.0; resetWeight_ = false; } 37 36 38 if ( hasMissingValue)37 if (ignoreMissingValue) 39 38 { 40 39 int nbLocalIndex = localIndex.size(); -
XIOS/trunk/src/transformation/Functions/average_reduction.hpp
r1018 r1076 26 26 const double* dataInput, 27 27 CArray<double,1>& dataOut, 28 std::vector<bool>& flagInitial, 29 const double& defaultValue);28 std::vector<bool>& flagInitial, 29 bool ignoreMissingValue); 30 30 31 31 virtual void updateData(CArray<double,1>& dataOut); -
XIOS/trunk/src/transformation/Functions/extract.cpp
r1018 r1076 30 30 CArray<double,1>& dataOut, 31 31 std::vector<bool>& flagInitial, 32 const double& defaultValue)32 bool ignoreMissingValue) 33 33 { 34 34 int nbLocalIndex = localIndex.size(); -
XIOS/trunk/src/transformation/Functions/extract.hpp
r1018 r1076 27 27 CArray<double,1>& dataOut, 28 28 std::vector<bool>& flagInitial, 29 const double& defaultValue);29 bool ignoreMissingValue); 30 30 31 31 virtual ~CExtractReductionAlgorithm() {} -
XIOS/trunk/src/transformation/Functions/max_reduction.cpp
r1043 r1076 31 31 CArray<double,1>& dataOut, 32 32 std::vector<bool>& flagInitial, 33 const double& defaultValue) 34 { 35 bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 36 37 if (hasMissingValue) 33 bool ignoreMissingValue) 34 { 35 if (ignoreMissingValue) 38 36 { 39 37 int nbLocalIndex = localIndex.size(); -
XIOS/trunk/src/transformation/Functions/max_reduction.hpp
r1018 r1076 27 27 CArray<double,1>& dataOut, 28 28 std::vector<bool>& flagInitial, 29 const double& defaultValue);29 bool ignoreMissingValue); 30 30 31 31 virtual ~CMaxReductionAlgorithm() {} -
XIOS/trunk/src/transformation/Functions/min_reduction.cpp
r1043 r1076 31 31 CArray<double,1>& dataOut, 32 32 std::vector<bool>& flagInitial, 33 const double& defaultValue)33 bool ignoreMissingValue) 34 34 { 35 bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 36 37 if (hasMissingValue) 35 if (ignoreMissingValue) 38 36 { 39 37 int nbLocalIndex = localIndex.size(); -
XIOS/trunk/src/transformation/Functions/min_reduction.hpp
r1018 r1076 26 26 const double* dataInput, 27 27 CArray<double,1>& dataOut, 28 std::vector<bool>& flagInitial, 29 const double& defaultValue);28 std::vector<bool>& flagInitial, 29 bool ignoreMissingValue); 30 30 31 31 virtual ~CMinReductionAlgorithm() {} -
XIOS/trunk/src/transformation/Functions/reduction.hpp
r1018 r1076 45 45 const double* dataInput, 46 46 CArray<double,1>& dataOut, 47 std::vector<bool>& flagInitial, 48 const double& defaultValue) = 0;47 std::vector<bool>& flagInitial, 48 bool ignoreMissingValue) = 0; 49 49 /*! 50 50 Update local data -
XIOS/trunk/src/transformation/Functions/sum_reduction.cpp
r1043 r1076 31 31 CArray<double,1>& dataOut, 32 32 std::vector<bool>& flagInitial, 33 const double& defaultValue)33 bool ignoreMissingValue) 34 34 { 35 bool hasMissingValue = NumTraits<double>::isnan(defaultValue); 36 37 if (hasMissingValue) 35 if (ignoreMissingValue) 38 36 { 39 37 int nbLocalIndex = localIndex.size(); -
XIOS/trunk/src/transformation/Functions/sum_reduction.hpp
r1018 r1076 27 27 CArray<double,1>& dataOut, 28 28 std::vector<bool>& flagInitial, 29 const double& defaultValue);29 bool ignoreMissingValue); 30 30 31 31 virtual ~CSumReductionAlgorithm() {} -
XIOS/trunk/src/transformation/axis_algorithm_extract_domain.cpp
r1018 r1076 68 68 const double* dataInput, 69 69 CArray<double,1>& dataOut, 70 std::vector<bool>& flagInitial, 71 const double& defaultValue)70 std::vector<bool>& flagInitial, 71 bool ignoreMissingValue) 72 72 { 73 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue);73 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 74 74 } 75 75 -
XIOS/trunk/src/transformation/axis_algorithm_extract_domain.hpp
r933 r1076 33 33 const double* dataInput, 34 34 CArray<double,1>& dataOut, 35 std::vector<bool>& flagInitial, 36 const double& defaultValue);35 std::vector<bool>& flagInitial, 36 bool ignoreMissingValue); 37 37 38 38 virtual ~CAxisAlgorithmExtractDomain(); -
XIOS/trunk/src/transformation/axis_algorithm_reduce_domain.cpp
r1018 r1076 76 76 const double* dataInput, 77 77 CArray<double,1>& dataOut, 78 std::vector<bool>& flagInitial, 79 const double& defaultValue)78 std::vector<bool>& flagInitial, 79 bool ignoreMissingValue) 80 80 { 81 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue);81 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 82 82 } 83 83 -
XIOS/trunk/src/transformation/axis_algorithm_reduce_domain.hpp
r979 r1076 32 32 const double* dataInput, 33 33 CArray<double,1>& dataOut, 34 std::vector<bool>& flagInitial, 35 const double& defaultValue);34 std::vector<bool>& flagInitial, 35 bool ignoreMissingValue); 36 36 37 37 virtual void updateData(CArray<double,1>& dataOut); -
XIOS/trunk/src/transformation/generic_algorithm_transformation.cpp
r1018 r1076 30 30 CArray<double,1>& dataOut, 31 31 std::vector<bool>& flagInitial, 32 const double& defaultValue)33 { 34 int nbLocalIndex = localIndex.size(); 35 bool hasMissingValue = NumTraits<double>::isnan(defaultValue);36 if ( hasMissingValue)32 bool ignoreMissingValue) 33 { 34 int nbLocalIndex = localIndex.size(); 35 double defaultValue = std::numeric_limits<double>::quiet_NaN(); 36 if (ignoreMissingValue) 37 37 { 38 38 for (int idx = 0; idx < nbLocalIndex; ++idx) -
XIOS/trunk/src/transformation/generic_algorithm_transformation.hpp
r979 r1076 63 63 \param [in/out] dataOut Array contains local data 64 64 \param [in/out] flagInitial vector of boolean to mark the local index already initialized. True means there is a need for initalization 65 \param [in] ignoreMissingValue don't count missing value in operation if this flag is true 65 66 */ 66 67 virtual void apply(const std::vector<std::pair<int,double> >& localIndex, 67 68 const double* dataInput, 68 69 CArray<double,1>& dataOut, 69 std::vector<bool>& flagInitial, 70 const double& defaultValue);70 std::vector<bool>& flagInitial, 71 bool ignoreMissingValue); 71 72 72 73 /*! -
XIOS/trunk/src/transformation/scalar_algorithm_extract_axis.cpp
r1018 r1076 55 55 const double* dataInput, 56 56 CArray<double,1>& dataOut, 57 std::vector<bool>& flagInitial, 58 const double& defaultValue)57 std::vector<bool>& flagInitial, 58 bool ignoreMissingValue) 59 59 { 60 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue);60 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 61 61 } 62 62 -
XIOS/trunk/src/transformation/scalar_algorithm_extract_axis.hpp
r980 r1076 32 32 const double* dataInput, 33 33 CArray<double,1>& dataOut, 34 std::vector<bool>& flagInitial, 35 const double& defaultValue);34 std::vector<bool>& flagInitial, 35 bool ignoreMissingValue); 36 36 37 37 virtual ~CScalarAlgorithmExtractAxis(); -
XIOS/trunk/src/transformation/scalar_algorithm_reduce_domain.cpp
r1018 r1076 81 81 const double* dataInput, 82 82 CArray<double,1>& dataOut, 83 std::vector<bool>& flagInitial, 84 const double& defaultValue)83 std::vector<bool>& flagInitial, 84 bool ignoreMissingValue) 85 85 { 86 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, defaultValue);86 reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue); 87 87 } 88 88 -
XIOS/trunk/src/transformation/scalar_algorithm_reduce_domain.hpp
r979 r1076 32 32 const double* dataInput, 33 33 CArray<double,1>& dataOut, 34 std::vector<bool>& flagInitial, 35 const double& defaultValue);34 std::vector<bool>& flagInitial, 35 bool ignoreMissingValue); 36 36 37 37 virtual void updateData(CArray<double,1>& dataOut);
Note: See TracChangeset
for help on using the changeset viewer.