Changeset 887 for XIOS/trunk/src/node/field.cpp
- Timestamp:
- 07/05/16 15:59:02 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/field.cpp
r873 r887 34 34 , nstep(0), nstepMax(0) 35 35 , hasOutputFile(false) 36 , domAxis Ids_("", ""), areAllReferenceSolved(false), isReferenceSolved(false)36 , domAxisScalarIds_(vector<StdString>(3,"")), areAllReferenceSolved(false), isReferenceSolved(false) 37 37 , useCompressedOutput(false) 38 38 , isReadDataRequestPending(false) … … 45 45 , nstep(0), nstepMax(0) 46 46 , hasOutputFile(false) 47 , domAxis Ids_("", ""), areAllReferenceSolved(false), isReferenceSolved(false)47 , domAxisScalarIds_(vector<StdString>(3,"")), areAllReferenceSolved(false), isReferenceSolved(false) 48 48 , useCompressedOutput(false) 49 49 , isReadDataRequestPending(false) … … 889 889 void CField::solveGridReference(void) 890 890 { 891 if (grid_ref.isEmpty() && domain_ref.isEmpty() && axis_ref.isEmpty() )891 if (grid_ref.isEmpty() && domain_ref.isEmpty() && axis_ref.isEmpty() && scalar_ref.isEmpty()) 892 892 { 893 893 ERROR("CField::solveGridReference(void)", 894 894 << "A grid must be defined for field '" << getFieldOutputName() << "' ."); 895 895 } 896 else if (!grid_ref.isEmpty() && (!domain_ref.isEmpty() || !axis_ref.isEmpty() ))896 else if (!grid_ref.isEmpty() && (!domain_ref.isEmpty() || !axis_ref.isEmpty() || !scalar_ref.isEmpty())) 897 897 { 898 898 ERROR("CField::solveGridReference(void)", 899 << "Field '" << getFieldOutputName() << "' has both a grid and a domain/axis ." << std::endl900 << "Please define either 'grid_ref' or 'domain_ref'/'axis_ref' .");899 << "Field '" << getFieldOutputName() << "' has both a grid and a domain/axis/scalar." << std::endl 900 << "Please define either 'grid_ref' or 'domain_ref'/'axis_ref'/'scalar_ref'."); 901 901 } 902 902 … … 905 905 std::vector<CDomain*> vecDom; 906 906 std::vector<CAxis*> vecAxis; 907 std::vector<CScalar*> vecScalar; 907 908 908 909 if (!domain_ref.isEmpty()) … … 925 926 } 926 927 928 if (!scalar_ref.isEmpty()) 929 { 930 if (CScalar::has(scalar_ref)) 931 vecScalar.push_back(CScalar::get(scalar_ref)); 932 else 933 ERROR("CField::solveGridReference(void)", 934 << "Invalid reference to scalar '" << scalar_ref.getValue() << "'."); 935 } 936 927 937 // Warning: the gridId shouldn't be set as the grid_ref since it could be inherited 928 StdString gridId = CGrid::generateId(vecDom, vecAxis );938 StdString gridId = CGrid::generateId(vecDom, vecAxis, vecScalar); 929 939 if (CGrid::has(gridId)) 930 940 this->grid = CGrid::get(gridId); 931 941 else 932 this->grid = CGrid::createGrid(gridId, vecDom, vecAxis );942 this->grid = CGrid::createGrid(gridId, vecDom, vecAxis, vecScalar); 933 943 } 934 944 else … … 1138 1148 \return pair of Domain and Axis id 1139 1149 */ 1140 const std:: pair<StdString,StdString>& CField::getRefDomainAxisIds()1150 const std::vector<StdString>& CField::getRefDomainAxisIds() 1141 1151 { 1142 1152 CGrid* cgPtr = getRelGrid(); … … 1148 1158 std::vector<StdString> domainList = cgPtr->getDomainList(); 1149 1159 it = std::find(domainList.begin(), domainList.end(), domain_ref.getValue()); 1150 if (domainList.end() != it) domAxis Ids_.first= *it;1160 if (domainList.end() != it) domAxisScalarIds_[0] = *it; 1151 1161 } 1152 1162 … … 1155 1165 std::vector<StdString> axisList = cgPtr->getAxisList(); 1156 1166 it = std::find(axisList.begin(), axisList.end(), axis_ref.getValue()); 1157 if (axisList.end() != it) domAxisIds_.second = *it; 1158 } 1159 } 1160 return (domAxisIds_); 1167 if (axisList.end() != it) domAxisScalarIds_[1] = *it; 1168 } 1169 1170 if (!scalar_ref.isEmpty()) 1171 { 1172 std::vector<StdString> scalarList = cgPtr->getScalarList(); 1173 it = std::find(scalarList.begin(), scalarList.end(), scalar_ref.getValue()); 1174 if (scalarList.end() != it) domAxisScalarIds_[2] = *it; 1175 } 1176 } 1177 return (domAxisScalarIds_); 1161 1178 } 1162 1179
Note: See TracChangeset
for help on using the changeset viewer.