source: XIOS/trunk/src/distribution_server.hpp @ 1620

Last change on this file since 1620 was 1553, checked in by oabramkina, 6 years ago

The zoom is dead, long live the zoom.

Replacing domain_zoom transformation by copying it from domain_extract. From now on, only the zoomed part of a domain is sent to servers. On the user's side all definitions stay the same.

To do soon: axis_zoom.

File size: 2.2 KB
RevLine 
[553]1/*!
2   \file distribution_server.hpp
3   \author Ha NGUYEN
4   \since 13 Jan 2015
5   \date 04 Feb 2015
6
7   \brief Index distribution on server side.
8 */
9
[551]10#ifndef __XIOS_DISTRIBUTION_SERVER_HPP__
11#define __XIOS_DISTRIBUTION_SERVER_HPP__
12
13#include "distribution.hpp"
14
15namespace xios {
[553]16
[552]17/*!
[553]18  \class CDistributionServer
19  The class, for now, plays a role of computing local index for writing data on server
[552]20*/
[551]21class CDistributionServer : public CDistribution
22{
23  public:
24    /** Default constructor */
[1201]25    CDistributionServer(int rank, int dims, const CArray<size_t,1>& globalIndex = CArray<size_t,1>());
[1553]26    CDistributionServer(int rank, const std::vector<int>& nBeginServer,
27                        const std::vector<int>& nSizeServer, const std::vector<int>& nGlobal);
28    CDistributionServer(int rank, const std::vector<int>& nBeginServer,
29                        const std::vector<int>& nSizeServer,
30                        const std::vector<int>& nBeginGlobal,
[567]31                        const std::vector<int>& nGlobal);
[551]32
[1553]33    CDistributionServer(int rank,
[1201]34                        const std::vector<CArray<int,1> >& globalIndexElements,
35                        const CArray<int,1>& elementOrder,
[1553]36                        const std::vector<int>& nBeginServer,
37                        const std::vector<int>& nSizeServer,
38                        const std::vector<int>& nBeginGlobal,
[1201]39                        const std::vector<int>& nGlobal);
40
[551]41    /** Default destructor */
42    virtual ~CDistributionServer();
43
[1144]44    const GlobalLocalMap& getGlobalLocalIndex() const { return globalLocalIndexMap_; }   
[1099]45    int getGridSize() const;
[1144]46   
[554]47    virtual void computeLocalIndex(CArray<size_t,1>& globalIndex);
[676]48    virtual void computeGlobalIndex(CArray<int,1>& indexes) const;
[1340]49    virtual void partialClear(void); //! clear heavy sized attibutes
[552]50
[551]51  protected:
52    virtual void createGlobalIndex();
[1202]53    void createGlobalIndex(const std::vector<CArray<int,1> >& globalIndexElements,
54                           const CArray<int,1>& elementOrder);
55   
[930]56  protected:
57    GlobalLocalMap globalLocalIndexMap_;
58
[551]59  private:
60    std::vector<int> nGlobal_;
[1553]61    std::vector<int> nBeginGlobal_;
62    std::vector<int> nSize_;
63    std::vector<int> nBegin_;
[1201]64
[551]65};
66
[552]67} // namespace xios
[551]68#endif // __XIOS_DISTRIBUTION_SERVER_HPP__
Note: See TracBrowser for help on using the repository browser.