Salome HOME
Update copyrights 2014.
[modules/med.git] / src / ParaMEDMEM / ICoCoTrioField.hxx
1 // Copyright (C) 2007-2014  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 // ICoCo file common to several codes
21 // ICoCoTrioField.h
22 // version 1.2 10/05/2010
23
24 #ifndef _ICoCoTrioField_included_
25 #define _ICoCoTrioField_included_
26
27 #include <ICoCoField.hxx>
28 namespace ICoCo {
29
30   //////////////////////////////////////////////////////////////////////////////
31   //
32   // .DESCRIPTION 
33   //     class TrioField, used for coupling Trio codes via the ICoCo interface
34   //     This structure contains all the necessary information 
35   //     for constructing a ParaMEDMEM::ParaFIELD (with the addition of the MPI
36   //     communicator).
37   //     This structure can either own or not _field values (_has_field_ownership)
38   //     For _coords, _connectivity and _field, a null pointer means no data allocated.
39   //     _coords and _connectivity tables, when allocated, are always owned by the TrioField.
40   //
41   //////////////////////////////////////////////////////////////////////////////
42   class TrioField:public Field {
43   public:
44     
45     TrioField();
46     TrioField(const TrioField& OtherField);
47     ~TrioField();
48     void clear();
49     void set_standalone();
50     void dummy_geom();
51     TrioField& operator=(const TrioField& NewField);
52     void save(std::ostream& os) const;
53     void restore(std::istream& in);
54     int nb_values() const ;
55
56   public:
57     int _type ; // 0 elem 1 nodes
58     int _mesh_dim;
59     int _space_dim;
60     int _nbnodes;
61     int _nodes_per_elem;
62     int _nb_elems;
63     int _itnumber;
64     int* _connectivity;
65     double* _coords;
66     
67     double _time1,_time2;
68     int _nb_field_components;
69     double* _field;
70     bool _has_field_ownership;
71   }; 
72 }
73
74 #endif