source: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/coupler_out.hpp @ 1784

Last change on this file since 1784 was 1784, checked in by ymipsl, 4 years ago
  • Preparing coupling functionalities.
  • Make some cleaner things

YM

  • Property svn:executable set to *
File size: 3.5 KB
Line 
1#ifndef __XIOS_CCouplerOut__
2#define __XIOS_CCouplerOut__
3
4/// XIOS headers ///
5#include "xios_spl.hpp"
6#include "field.hpp"
7#include "declare_group.hpp"
8#include "date.hpp"
9#include "attribute_enum.hpp"
10#include "attribute_enum_impl.hpp"
11#include "context_client.hpp"
12#include "mpi.hpp"
13
14namespace xios
15{
16
17   /// ////////////////////// Déclarations ////////////////////// ///
18
19   class CCouplerOutGroup;
20   class CCouplerOutAttributes;
21   class CCouplerOut;
22
23   class CGarbageCollector;
24
25   ///--------------------------------------------------------------
26
27   // Declare/Define CCouplerOutAttribute
28   BEGIN_DECLARE_ATTRIBUTE_MAP(CCouplerOut)
29#  include "coupler_out_attribute.conf"
30   END_DECLARE_ATTRIBUTE_MAP(CCouplerOut)
31
32   ///--------------------------------------------------------------
33
34   /*!
35   \class CCouplerOut
36   
37   */
38   class CCouplerOut
39      : public CObjectTemplate<CCouplerOut>
40      , public CCouplerOutAttributes
41   {
42         /// typedef ///
43         typedef CObjectTemplate<CCouplerOut>   SuperClass;
44         typedef CCouplerOutAttributes SuperClassAttribute;
45
46      public :
47         enum EEventId
48         {
49           NO_EVENT
50         };
51
52         typedef CCouplerOutAttributes RelAttributes;
53         typedef CCouplerOutGroup      RelGroup;
54
55         /// Constructeurs ///
56         CCouplerOut(void);
57         explicit CCouplerOut(const StdString& id);
58         CCouplerOut(const CCouplerOut& couplerOut);       // Not implemented yet.
59         CCouplerOut(const CCouplerOut* const couplerOut); // Not implemented yet.
60
61         /// Destructeur ///
62         virtual ~CCouplerOut(void);
63
64      public:
65         /// Accesseurs ///
66         CFieldGroup* getVirtualFieldGroup(void) const;
67         std::vector<CField*> getAllFields(void) const;
68         std::vector<CField* > getEnabledFields(void);
69
70         StdString dumpClassAttributes(void);
71
72      public :
73         void setVirtualFieldGroup(CFieldGroup* newVFieldGroup);
74
75         // Add component into coupler
76         CField* addField(const string& id = "");
77         CFieldGroup* addFieldGroup(const string& id = "");
78
79      public:
80         /// Accesseurs statiques ///
81         static StdString GetName(void);
82         static StdString GetDefName(void);
83         static ENodeType GetType(void);
84      public:
85         /// Traitements ///
86         virtual void parse(xml::CXMLNode& node);
87//         virtual StdString toString(void) const;
88
89      public:
90        virtual void solveDescInheritance(bool apply, const CAttributeMap* const parent = 0);
91        void solveFieldRefInheritance(bool apply);
92        void createInterCommunicator(void) ;
93        void solveOnlyRefOfEnabledFields(void);
94        void generateNewTransformationGridDest(void);
95        void solveAllRefOfEnabledFieldsAndTransform() ;
96        void buildFilterGraphOfEnabledFields(CGarbageCollector& gc);
97        void checkGridOfEnabledFields(void) ;
98
99      private :
100         CFieldGroup* virtualFieldGroup;
101
102//         std::shared_ptr<CDataOutput> data_out;
103//         std::shared_ptr<CDataInput> data_in;
104         std::vector<CField*> enabledFields;
105
106
107      public:
108
109   }; // class CCouplerOut
110
111   ///--------------------------------------------------------------
112
113   // Declare/Define CFileGroup and CFileDefinition
114   DECLARE_GROUP(CCouplerOut);
115
116   ///--------------------------------------------------------------
117
118} // namespace xios
119
120#endif // __XIOS_CCouplingIn__
Note: See TracBrowser for help on using the repository browser.