1 // Copyright(C) 1999-2020 National Technology & Engineering Solutions
2 // of Sandia, LLC (NTESS).  Under the terms of Contract DE-NA0003525 with
3 // NTESS, the U.S. Government retains certain rights in this software.
4 //
5 // See packages/seacas/LICENSE for details
6 
7 #ifndef IOSS_Ioss_NodeSet_h
8 #define IOSS_Ioss_NodeSet_h
9 
10 #include "vtk_ioss_mangle.h"
11 
12 #include "Ioss_EntityType.h" // for EntityType, etc
13 #include "Ioss_Property.h"   // for Property
14 #include <Ioss_EntitySet.h>  // for EntitySet
15 #include <cstddef>           // for size_t
16 #include <cstdint>           // for int64_t
17 #include <string>            // for string
18 namespace Ioss {
19   class DatabaseIO;
20 } // namespace Ioss
21 namespace Ioss {
22   class Field;
23 } // namespace Ioss
24 
25 namespace Ioss {
26 
27   /** \brief A collection of nodes.
28    */
29   class NodeSet : public EntitySet
30   {
31   public:
32     NodeSet(); // Used for template typing only
33     NodeSet(const NodeSet &) = default;
34     NodeSet(DatabaseIO *io_database, const std::string &my_name, int64_t number_nodes);
35 
type_string()36     std::string type_string() const override { return "NodeSet"; }
short_type_string()37     std::string short_type_string() const override { return "nodelist"; }
contains_string()38     std::string contains_string() const override { return "Node"; }
type()39     EntityType  type() const override { return NODESET; }
40 
41     // Handle implicit properties -- These are calcuated from data stored
42     // in the grouping entity instead of having an explicit value assigned.
43     // An example would be 'element_block_count' for a region.
44     Property get_implicit_property(const std::string &my_name) const override;
45 
46   protected:
47     int64_t internal_get_field_data(const Field &field, void *data,
48                                     size_t data_size) const override;
49 
50     int64_t internal_put_field_data(const Field &field, void *data,
51                                     size_t data_size) const override;
52   };
53 } // namespace Ioss
54 #endif
55