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 #include "Ioss_CodeTypes.h"           // for IntVector
8 #include "Ioss_ElementTopology.h"     // for ElementTopology
9 #include <Ioss_ElementVariableType.h> // for ElementVariableType
10 #include <Ioss_Unknown.h>
11 #include <cassert> // for assert
12 
13 // ========================================================================
14 namespace Ioss {
15   const char *Unknown::name = "unknown";
16   class St_Unknown : public ElementVariableType
17   {
18   public:
19     static void factory();
20 
21   protected:
St_Unknown()22     St_Unknown() : ElementVariableType(Ioss::Unknown::name, 0) {}
23   };
24 } // namespace Ioss
factory()25 void Ioss::St_Unknown::factory() { static Ioss::St_Unknown registerThis; }
26 
27 // ========================================================================
28 namespace {
29   struct Constants
30   {
31     static const int nnode     = 0;
32     static const int nedge     = 0;
33     static const int nedgenode = 0;
34     static const int nface     = 0;
35     static const int nfacenode = 0;
36   };
37 } // namespace
38 
factory()39 void Ioss::Unknown::factory()
40 {
41   static Ioss::Unknown registerThis;
42   Ioss::St_Unknown::factory();
43 }
44 
Unknown()45 Ioss::Unknown::Unknown() : Ioss::ElementTopology(Ioss::Unknown::name, Ioss::Unknown::name)
46 {
47   Ioss::ElementTopology::alias(Ioss::Unknown::name, "invalid_topology");
48 }
49 
50 Ioss::Unknown::~Unknown() = default;
51 
parametric_dimension()52 int Ioss::Unknown::parametric_dimension() const { return 0; }
spatial_dimension()53 int Ioss::Unknown::spatial_dimension() const { return 3; }
order()54 int Ioss::Unknown::order() const { return 0; }
55 
number_corner_nodes()56 int Ioss::Unknown::number_corner_nodes() const { return number_nodes(); }
number_nodes()57 int Ioss::Unknown::number_nodes() const { return Constants::nnode; }
number_edges()58 int Ioss::Unknown::number_edges() const { return Constants::nedge; }
number_faces()59 int Ioss::Unknown::number_faces() const { return Constants::nface; }
60 
number_nodes_edge(int)61 int Ioss::Unknown::number_nodes_edge(int /* edge */) const { return Constants::nedgenode; }
62 
number_nodes_face(int face)63 int Ioss::Unknown::number_nodes_face(int face) const
64 {
65   // face is 1-based.  0 passed in for all faces.
66   assert(face >= 0 && face <= number_faces());
67   return Constants::nfacenode;
68 }
69 
number_edges_face(int face)70 int Ioss::Unknown::number_edges_face(int face) const
71 {
72   // face is 1-based.  0 passed in for all faces.
73   assert(face >= 0 && face <= number_faces());
74   return Constants::nfacenode;
75 }
76 
edge_connectivity(int edge_number)77 Ioss::IntVector Ioss::Unknown::edge_connectivity(int edge_number) const
78 {
79   Ioss::IntVector connectivity;
80   assert(edge_number >= 0 && edge_number <= Constants::nedge);
81   return connectivity;
82 }
83 
face_connectivity(int face_number)84 Ioss::IntVector Ioss::Unknown::face_connectivity(int face_number) const
85 {
86   assert(face_number >= 0 && face_number <= number_faces());
87   Ioss::IntVector connectivity;
88   return connectivity;
89 }
90 
element_connectivity()91 Ioss::IntVector Ioss::Unknown::element_connectivity() const
92 {
93   Ioss::IntVector connectivity;
94   return connectivity;
95 }
96 
face_type(int face_number)97 Ioss::ElementTopology *Ioss::Unknown::face_type(int face_number) const
98 {
99   // face_number == 0 returns topology for all faces if
100   // all faces are the same topology; otherwise, returns nullptr
101   // face_number is 1-based.
102 
103   assert(face_number >= 0 && face_number <= number_faces());
104   return Ioss::ElementTopology::factory(Ioss::Unknown::name);
105 }
106 
edge_type(int edge_number)107 Ioss::ElementTopology *Ioss::Unknown::edge_type(int edge_number) const
108 {
109   // edge_number == 0 returns topology for all edges if
110   // all edges are the same topology; otherwise, returns nullptr
111   // edge_number is 1-based.
112 
113   assert(edge_number >= 0 && edge_number <= number_edges());
114   return Ioss::ElementTopology::factory(Ioss::Unknown::name);
115 }
116