Ignore:
Timestamp:
07/16/20 17:18:01 (4 years ago)
Author:
ymipsl
Message:

Big update on on going work related to data distribution and transfer between clients and servers.

  • move all related file into distribution directorie
  • implement the concept of data "View"
  • implement the concept of "connector" which make the data transfer between 2 differents "Views"

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.hpp

    r1881 r1918  
    1616#include "utils.hpp" 
    1717#include "transformation_enum.hpp" 
     18#include "grid_local_connector.hpp" 
     19#include "grid_elements.hpp" 
    1820 
    1921namespace xios { 
     
    255257         void modifyMask(const CArray<int,1>& indexToModify, bool valueToModify = false); 
    256258         void modifyMaskSize(const std::vector<int>& newDimensionSize, bool newValue = false); 
     259         
     260        /** get mask pointer stored in mask_1d, or mask_2d, or..., or mask_7d */ 
     261         CArray<bool,1> mask_ ; 
     262         CArray<bool,1>& getMask(void) ; 
    257263 
    258264         void computeGridGlobalDimension(const std::vector<CDomain*>& domains, 
     
    289295                          const CArray<int,1>& axisDomainOrder, 
    290296                          bool createMask = false); 
     297 
    291298        template<int N> 
    292299        void modifyGridMask(CArray<bool,N>& gridMask, const CArray<int,1>& indexToModify, bool valueToModify); 
     
    500507/** List order of axis and domain in a grid, if there is a domain, it will take value 2, axis 1, scalar 0 */ 
    501508        std::vector<int> order_; 
     509 
     510      private:   
     511        CGridLocalElements* gridLocalElements_= nullptr ; 
     512        void computeGridLocalElements(void) ; 
     513      public: 
     514        CGridLocalElements* getGridLocalElements(void) { if (gridLocalElements_==nullptr) computeGridLocalElements() ; return gridLocalElements_ ;} 
     515 
     516      private: 
     517        CGridLocalConnector* modelToWorkflowConnector_ ; 
     518      public: 
     519        void computeModelToWorkflowConnector(void) ; 
     520        CGridLocalConnector* getModelToWorkflowConnector(void) { if (modelToWorkflowConnector_==nullptr) computeModelToWorkflowConnector() ; return modelToWorkflowConnector_;} 
    502521 
    503522   }; // class CGrid 
     
    521540   CATCH 
    522541 
     542/* obsolete 
    523543   template <int n> 
    524544   void CGrid::maskField(const CArray<double,n>& field, CArray<double,1>& stored) 
     
    534554      this->maskField_arr(field.dataFirst(), stored); 
    535555   } 
     556*/ 
     557   template <int n> 
     558   void CGrid::maskField(const CArray<double,n>& field, CArray<double,1>& stored) 
     559   { 
     560      auto connector = getModelToWorkflowConnector() ; 
     561 
     562      if (connector->getSrcSize() != field.numElements()) 
     563         ERROR("void CGrid::inputField(const  CArray<double,n>& field, CArray<double,1>& stored) const", 
     564                << "[ Awaiting data of size = " << this->getDataSize() << ", " 
     565                << "Received data size = "      << field.numElements() << " ] " 
     566                << "The data array does not have the right size! " 
     567                << "Grid = " << this->getId()) 
     568      const double nanValue = std::numeric_limits<double>::quiet_NaN(); 
     569      connector->transfer(field, stored, nanValue) ; 
     570   } 
     571 
     572 
    536573 
    537574   template <int n> 
Note: See TracChangeset for help on using the changeset viewer.