20 #include "atlas/util/Object.h" 21 #include "atlas/util/ObjectHandle.h" 23 #include "atlas/field/Field.h" 24 #include "atlas/util/Metadata.h" 25 #include "atlas/util/Topology.h" 30 class ConnectivityInterface;
31 class IrregularConnectivityImpl;
32 using IrregularConnectivity = ConnectivityInterface<IrregularConnectivityImpl>;
57 const Field& field(
const std::string& name )
const;
58 Field& field(
const std::string& name );
59 bool has_field(
const std::string& name )
const {
return ( fields_.find( name ) != fields_.end() ); }
63 idx_t nb_fields()
const {
return static_cast<idx_t>( fields_.size() ); }
68 const Field& global_index()
const {
return global_index_; }
69 Field& global_index() {
return global_index_; }
71 const Field& remote_index()
const {
return remote_index_; }
72 Field& remote_index() {
return remote_index_; }
74 const Field& partition()
const {
return partition_; }
75 Field& partition() {
return partition_; }
77 const Field& xy()
const {
return xy_; }
78 Field& xy() {
return xy_; }
80 const Field& lonlat()
const {
return lonlat_; }
81 Field& lonlat() {
return lonlat_; }
83 const Field& ghost()
const {
return ghost_; }
84 Field& ghost() {
return ghost_; }
86 const Field& flags()
const {
return flags_; }
87 Field& flags() {
return flags_; }
89 const Field& halo()
const {
return halo_; }
90 Field& halo() {
return halo_; }
100 const Connectivity& connectivity(
const std::string& name )
const;
103 bool has_connectivity( std::string name )
const {
return connectivities_.count( name ); }
105 idx_t size()
const {
return size_; }
111 void resize(
idx_t );
113 void remove_field(
const std::string& name );
118 size_t footprint()
const;
120 void updateDevice()
const;
122 void updateHost()
const;
124 void syncHostDevice()
const;
127 void print( std::ostream& )
const;
129 friend std::ostream& operator<<( std::ostream& s,
const Nodes& p ) {
135 typedef std::map<std::string, Field> FieldMap;
136 typedef std::map<std::string, util::ObjectHandle<Connectivity>> ConnectivityMap;
141 ConnectivityMap connectivities_;
161 return *edge_connectivity_;
165 return *edge_connectivity_;
169 return *cell_connectivity_;
173 return *cell_connectivity_;
177 Nodes* atlas__mesh__Nodes__create();
178 void atlas__mesh__Nodes__delete(
Nodes* This );
179 idx_t atlas__mesh__Nodes__size(
Nodes* This );
180 void atlas__mesh__Nodes__resize(
Nodes* This,
idx_t size );
181 idx_t atlas__mesh__Nodes__nb_fields(
Nodes* This );
183 void atlas__mesh__Nodes__remove_field(
Nodes* This,
char* name );
184 int atlas__mesh__Nodes__has_field(
Nodes* This,
char* name );
188 void atlas__mesh__Nodes__str(
Nodes* This,
char*& str,
int& size );
A Field contains an Array, Metadata, and a reference to a FunctionSpace.
Definition: Field.h:59
Definition: Topology.h:18
Definition: Connectivity.h:53
const Connectivity & edge_connectivity() const
Node to Edge connectivity table.
Definition: Nodes.h:160
Nodes class that owns a collection of fields defined in nodes of the mesh.
Definition: Nodes.h:43
Contains all atlas classes and methods.
Definition: atlas-grids.cc:33
Definition: FieldImpl.h:40
long idx_t
Integer type for indices in connectivity tables.
Definition: config.h:42
const Connectivity & cell_connectivity() const
Node to Cell connectivity table.
Definition: Nodes.h:168