Changeset 887 for XIOS/trunk/src/node/grid.hpp
- Timestamp:
- 07/05/16 15:59:02 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/grid.hpp
r865 r887 9 9 #include "domain.hpp" 10 10 #include "axis.hpp" 11 #include "scalar.hpp" 11 12 #include "array_new.hpp" 12 13 #include "attribute_array.hpp" … … 24 25 class CDomainGroup; 25 26 class CAxisGroup; 27 class CScalarGroup; 26 28 class CGrid; 27 29 class CDistributionClient; … … 55 57 enum EEventId 56 58 { 57 EVENT_ID_INDEX, EVENT_ID_ADD_DOMAIN, EVENT_ID_ADD_AXIS 58 }; 59 60 enum EElementType 61 { 62 GRID_ONLY_AXIS, GRID_ONLY_DOMAIN, GRID_AXIS_DOMAIN 59 EVENT_ID_INDEX, EVENT_ID_ADD_DOMAIN, EVENT_ID_ADD_AXIS, EVENT_ID_ADD_SCALAR 63 60 }; 64 61 … … 122 119 static CGrid* createGrid(CDomain* domain, CAxis* axis); 123 120 static CGrid* createGrid(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 124 const CArray<bool,1>& axisDomainOrder = CArray<bool,1>()); 121 const CArray<int,1>& axisDomainOrder = CArray<int,1>()); 122 // static CGrid* createGrid(StdString id, const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 123 // const CArray<int,1>& axisDomainOrder = CArray<int,1>()); 125 124 static CGrid* createGrid(StdString id, const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 126 const CArray<bool,1>& axisDomainOrder = CArray<bool,1>()); 125 const std::vector<CScalar*>& scalars, const CArray<int,1>& axisDomainOrder = CArray<int,1>()); 126 static CGrid* createGrid(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 127 const std::vector<CScalar*>& scalars, const CArray<int,1>& axisDomainOrder); 128 // static StdString generateId(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 129 // const std::vector<CScalar*>& scalars, const CArray<int,1>& axisDomainOrder = CArray<int,1>()); 127 130 static StdString generateId(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 128 const CArray<bool,1>& axisDomainOrder = CArray<bool,1>());131 const std::vector<CScalar*>& scalars, const CArray<int,1>& axisDomainOrder = CArray<int,1>()); 129 132 static StdString generateId(const CGrid* gridSrc, const CGrid* gridDest); 130 133 static CGrid* cloneGrid(const StdString& idNewGrid, CGrid* gridSrc); … … 144 147 void solveDomainRef(bool checkAtt); 145 148 void solveAxisRef(bool checkAtt); 149 void solveScalarRef(bool checkAtt); 146 150 void solveDomainAxisRefInheritance(bool apply = true); 147 151 void solveTransformations(); … … 150 154 CDomain* addDomain(const std::string& id=StdString()); 151 155 CAxis* addAxis(const std::string& id=StdString()); 156 CScalar* addScalar(const std::string& id=StdString()); 152 157 void sendAddDomain(const std::string& id=""); 153 158 void sendAddAxis(const std::string& id=""); 159 void sendAddScalar(const std::string& id=""); 154 160 void sendAllDomains(); 155 161 void sendAllAxis(); 162 void sendAllScalars(); 156 163 157 164 static void recvAddDomain(CEventServer& event); … … 159 166 static void recvAddAxis(CEventServer& event); 160 167 void recvAddAxis(CBufferIn& buffer); 168 static void recvAddScalar(CEventServer& event); 169 void recvAddScalar(CBufferIn& buffer); 161 170 162 171 static bool dispatchEvent(CEventServer& event); … … 172 181 std::vector<StdString> getDomainList(); 173 182 std::vector<StdString> getAxisList(); 183 std::vector<StdString> getScalarList(); 174 184 std::vector<CDomain*> getDomains(); 175 185 std::vector<CAxis*> getAxis(); 186 std::vector<CScalar*> getScalars(); 176 187 std::vector<int> getAxisOrder(); 177 188 std::vector<int> getGlobalDimension(); … … 218 229 void computeGridGlobalDimension(const std::vector<CDomain*>& domains, 219 230 const std::vector<CAxis*>& axis, 220 const CArray<bool,1>& axisDomainOrder); 231 const std::vector<CScalar*>& scalars, 232 const CArray<int,1>& axisDomainOrder); 221 233 222 234 private: … … 225 237 const std::vector<CArray<bool,1>* >& domainMasks, 226 238 const std::vector<CArray<bool,1>* >& axisMasks, 227 const CArray< bool,1>& axisDomainOrder,239 const CArray<int,1>& axisDomainOrder, 228 240 bool createMask = false); 229 241 template<int N> … … 234 246 void setVirtualAxisGroup(CAxisGroup* newVAxisGroup); 235 247 void setVirtualAxisGroup(); 236 248 void setVirtualScalarGroup(CScalarGroup* newVScalarGroup); 249 void setVirtualScalarGroup(); 250 251 void setDomainList(const std::vector<CDomain*> domains = std::vector<CDomain*>()); 237 252 void setAxisList(const std::vector<CAxis*> axis = std::vector<CAxis*>()); 238 void setDomainList(const std::vector<CDomain*> domains = std::vector<CDomain*>()); 239 253 void setScalarList(const std::vector<CScalar*> scalars = std::vector<CScalar*>()); 254 255 CDomainGroup* getVirtualDomainGroup() const; 240 256 CAxisGroup* getVirtualAxisGroup() const; 241 C DomainGroup* getVirtualDomainGroup() const;257 CScalarGroup* getVirtualScalarGroup() const; 242 258 243 259 void checkAttributesAfterTransformation(); … … 246 262 CClientServerMapping::GlobalIndexMap& globalIndexOnServer); 247 263 248 249 264 private: 250 265 CDomainGroup* vDomainGroup_; 251 266 CAxisGroup* vAxisGroup_; 252 std::vector<std::string> axisList_, domList_; 253 bool isAxisListSet, isDomListSet; 267 CScalarGroup* vScalarGroup_; 268 std::vector<std::string> axisList_, domList_, scalarList_; 269 bool isAxisListSet, isDomListSet, isScalarListSet; 254 270 255 271 CDistributionClient* clientDistribution_; … … 275 291 CClientServerMapping::GlobalIndexMap globalIndexOnServer_; 276 292 // List order of axis and domain in a grid, if there is a domain, it will take value 1 (true), axis 0 (false) 277 std::vector< bool> order_;293 std::vector<int> order_; 278 294 }; // class CGrid 279 295 … … 306 322 const std::vector<CArray<bool,1>* >& domainMasks, 307 323 const std::vector<CArray<bool,1>* >& axisMasks, 308 const CArray< bool,1>& axisDomainOrder,324 const CArray<int,1>& axisDomainOrder, 309 325 bool createMask) 310 326 { … … 320 336 { 321 337 indexMap[i] = idx; 322 if ( true== axisDomainOrder(i)) {338 if (2 == axisDomainOrder(i)) { 323 339 eachDimSize[indexMap[i]] = domainP[idxDomain]->ni; 324 340 eachDimSize[indexMap[i]+1] = domainP[idxDomain]->nj; 325 341 idx += 2; ++idxDomain; 326 342 } 327 else {343 else if (1 == axisDomainOrder(i)) { 328 344 eachDimSize[indexMap[i]] = axisMasks[idxAxis]->numElements(); 329 345 ++idx; ++idxAxis; 330 346 } 347 else ++idx; 331 348 } 332 349 … … 365 382 for (int i = 0; i < numElement; ++i) 366 383 { 367 if ( axisDomainOrder(i))384 if (2 == axisDomainOrder(i)) 368 385 { 369 386 maskValue = maskValue && (*domainMasks[idxDomain])(idxLoop[indexMap[i]] + idxLoop[indexMap[i]+1] * eachDimSize[indexMap[i]]); 370 387 ++idxDomain; 371 388 } 372 else 389 else if (1 == axisDomainOrder(i)) 373 390 { 374 391 maskValue = maskValue && (*axisMasks[idxAxis])(idxLoop[indexMap[i]]);
Note: See TracChangeset
for help on using the changeset viewer.