source: XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.hpp @ 181

Last change on this file since 181 was 181, checked in by hozdoba, 13 years ago
File size: 3.9 KB
Line 
1#ifndef __XMLIO_CGrid__
2#define __XMLIO_CGrid__
3
4/// xmlioserver headers ///
5#include "xmlioserver_spl.hpp"
6#include "group_factory.hpp"
7
8#include "declare_group.hpp"
9#include "domain.hpp"
10#include "axis.hpp"
11
12namespace xmlioserver {
13namespace tree {
14   
15   /// ////////////////////// Déclarations ////////////////////// ///
16
17   class CGridGroup;
18   class CGridAttributes;
19   class CGrid;
20
21   ///--------------------------------------------------------------
22
23   // Declare/Define CGridAttribute
24   BEGIN_DECLARE_ATTRIBUTE_MAP(CGrid)
25#  include "grid_attribute.conf"
26   END_DECLARE_ATTRIBUTE_MAP(CGrid)
27
28   ///--------------------------------------------------------------
29
30   class CGrid
31      : public CObjectTemplate<CGrid>
32      , public CGridAttributes
33   {
34         /// typedef ///
35         typedef CObjectTemplate<CGrid>   SuperClass;
36         typedef CGridAttributes SuperClassAttribute;
37
38      public :
39
40         typedef CGridAttributes RelAttributes;
41         typedef CGridGroup      RelGroup;
42
43         /// Constructeurs ///
44         CGrid(void);
45         explicit CGrid(const StdString & id);
46         CGrid(const CGrid & grid);       // Not implemented yet.
47         CGrid(const CGrid * const grid); // Not implemented yet.
48
49         /// Traitements ///
50         void solveReference(void);
51
52         virtual void toBinary  (StdOStream & os) const;
53         virtual void fromBinary(StdIStream & is);
54
55         /// Tests ///
56         bool hasAxis(void) const;
57
58      public :
59
60         /// Accesseurs ///
61         const std::deque<ARRAY(int, 1)> & getStoreIndex(void) const;
62         const std::deque<ARRAY(int, 1)> & getOutIIndex(void)  const;
63         const std::deque<ARRAY(int, 1)> & getOutJIndex(void)  const;
64         const std::deque<ARRAY(int, 1)> & getOutLIndex(void)  const;
65
66         const boost::shared_ptr<CAxis>   getRelAxis  (void) const;
67         const boost::shared_ptr<CDomain> getRelDomain(void) const;
68
69         /// Entrées-sorties de champs ///
70         template <StdSize n>
71            void inputField(const  ARRAY(double, n) field, ARRAY(double, 1) stored) const;
72
73         template <StdSize n>
74            void outputField(const ARRAY(double, 1) stored,  ARRAY(double, n) field) const;
75
76         /// Destructeur ///
77         virtual ~CGrid(void);
78
79      public :
80
81         /// Accesseurs statiques ///
82         static StdString GetName(void);
83         static StdString GetDefName(void);
84         
85         static ENodeType GetType(void);
86
87         /// Instanciateurs Statiques ///
88         static boost::shared_ptr<CGrid>
89            CreateGrid(boost::shared_ptr<CDomain> domain);
90         static boost::shared_ptr<CGrid>
91            CreateGrid(boost::shared_ptr<CDomain> domain, boost::shared_ptr<CAxis> axis);
92
93      protected :
94
95         /// Entrées-sorties de champs (interne) ///
96         void storeField_arr(const double * const data, ARRAY(double, 1) stored) const;
97
98         /// Traitements protégés ///
99         void computeIndex(void);
100         void solveDomainRef(void);
101         void solveAxisRef(void);
102
103      public:
104
105         /// Propriétés privées ///
106         bool withAxis ;
107         bool isChecked;
108
109         boost::shared_ptr<CAxis>   axis ;
110         boost::shared_ptr<CDomain> domain ;
111
112         std::deque<ARRAY(int, 1)> storeIndex ;
113         std::deque<ARRAY(int, 1)> out_i_index ;
114         std::deque<ARRAY(int, 1)> out_j_index ;
115         std::deque<ARRAY(int, 1)> out_l_index ;
116
117   }; // class CGrid
118
119   ///--------------------------------------------------------------
120
121   template <StdSize n>
122      void CGrid::inputField(const  ARRAY(double, n) field, ARRAY(double, 1) stored) const
123   { this->storeField_arr(field.data(), stored) ; }
124
125   ///--------------------------------------------------------------
126
127   // Declare/Define CGridGroup and CGridDefinition
128   DECLARE_GROUP(CGrid);
129
130   ///--------------------------------------------------------------
131
132} // namespace tree
133} // namespace xmlioserver
134
135#endif // __XMLIO_CGrid__
Note: See TracBrowser for help on using the repository browser.