FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
CHECDB.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 /*
6  CHECDB Ver. 3.6
7 */
8 
9 #ifndef CHECDBH
10 #define CHECDBH
11 
12 #include <set>
13 #include <vector>
14 #include "CHECDataBlock.h"
15 #include "CHECDB_Visual.h"
16 
17 enum {
18  HECDB_HEADER = 1,
19  HECDB_NODE,
29 };
30 
32  public:
33  int ID;
34  checdb_id_class(int id = -1) : ID(id) {}
35  virtual ~checdb_id_class() {}
36 };
37 
38 inline bool operator==(const checdb_id_class& a, const checdb_id_class& b) {
39  return a.ID == b.ID;
40 }
41 inline bool operator<(const checdb_id_class& a, const checdb_id_class& b) {
42  return a.ID < b.ID;
43 }
44 inline bool operator>(const checdb_id_class& a, const checdb_id_class& b) {
45  return a.ID > b.ID;
46 }
47 
48 CHECDataBlock* CreateHECDataBlock(const char* header_name);
49 bool IsHECDataBlockName(const char* name);
50 
51 class CHECDB_Header : public CHECDataBlock {
52  public:
54 
55  CHECDB_Header();
56  virtual ~CHECDB_Header();
57  virtual void Clear();
58  virtual void Write(class CHECData* hecd);
59  virtual bool Read(class CHECData* hecd, char* header_line);
60 };
61 
62 class CHECDB_Element : public CHECDataBlock {
63  public:
64  static int NodeNumber(int type);
65  static int FaceNumber(int type);
66  static int DOFNumber(int type);
67  static const int* Connectivity(int face_id);
68  static bool CheckType(int type);
69 
70  public:
71  int type;
72  // for generate SECTION
73  int sec_id;
74  int option;
75 
76  class CElemItem : public checdb_id_class {
77  public:
78  int* node;
79  int node_n;
81  CElemItem(int type, int id = -1) : checdb_id_class(id), node(0), node_n(0) {
82  Init(type);
83  }
84  CElemItem(const CElemItem& e) : checdb_id_class(e.ID), node(0), node_n(0) {
85  InitNode(e.node_n);
86  for (int i = 0; i < node_n; i++) node[i] = e.node[i];
87  }
88  virtual ~CElemItem() { delete[] node; }
89  void Init(int type) { InitNode(NodeNumber(type)); }
90  void InitNode(int n) {
91  delete[] node;
92  node_n = n;
93  node = new int[node_n];
94  }
95  };
96  std::set<CElemItem> ElemList;
97 
99  virtual ~CHECDB_Element();
100  virtual void Clear();
101  virtual void Write(class CHECData* hecd);
102  virtual bool Read(class CHECData* hecd, char* header_line);
103 
104  int ElemNumber() { return ElemList.size(); }
105  CElemItem* GetElem(int id);
106 };
107 
108 class CHECDB_Node : public CHECDataBlock {
109  public:
110  class CNodeItem : public checdb_id_class {
111  public:
112  // int ID;
113  double x, y, z;
114  CNodeItem(int id = -1, double X = 0, double Y = 0, double Z = 0)
115  : checdb_id_class(id), x(X), y(Y), z(Z) {}
116  };
117  std::set<CNodeItem> NodeList;
118 
119  CHECDB_Node();
120  virtual ~CHECDB_Node();
121  virtual void Clear();
122  virtual void Write(class CHECData* hecd);
123  virtual bool Read(class CHECData* hecd, char* header_line);
124 
125  int NodeNumber() { return NodeList.size(); }
126  CNodeItem* GetNode(int id);
127 };
128 
130  public:
132 
133  class CItem {
134  public:
135  int ID;
136  CItem() : ID(-1) {}
137  class CItemRec {
138  public:
140  std::vector<double> params;
141  CItemRec() : last_is_temp(false), params() {}
142  };
143  std::vector<CItemRec> RecList;
144  int RecNumber() { return RecList.size(); }
146  if (RecNumber() > 0) {
147  std::vector<CItemRec>::iterator i = RecList.begin();
148  if (i->last_is_temp)
149  return i->params.size() - 1;
150  else
151  return i->params.size();
152  } else
153  return 0;
154  }
155  bool LastIsTemp() {
156  if (RecNumber() > 0) {
157  std::vector<CItemRec>::iterator i = RecList.begin();
158  return i->last_is_temp;
159  } else
160  return false;
161  }
162  void Clear() { RecList.clear(); }
163  void Write(class CHECData* hecd);
164  bool Read(class CHECData* hecd);
165  };
166  std::vector<CItem> ItemList;
167 
168  CHECDB_Material();
169  virtual ~CHECDB_Material();
170  virtual void Clear();
171  virtual void Write(class CHECData* hecd);
172  virtual bool Read(class CHECData* hecd, char* header_line);
173 };
174 
176  public:
177  // type
179 
180  int type;
183  int n_comp;
184  int secopt;
185 
186  // type == TYPE_SOLID, TYPE_SHELL or TYPE_INTERFACE
187  double thickness;
188 
189  // type == TYPE_SHELL
191 
192  // type == TYPE_INTERFACE
193  double gapcon;
194  double gaprad1;
195  double gaprad2;
196 
197  CHECDB_Section();
198  virtual ~CHECDB_Section();
199  virtual void Clear();
200  virtual void Write(class CHECData* hecd);
201  virtual bool Read(class CHECData* hecd, char* header_line);
202 };
203 
204 class CHECDB_NGroup : public CHECDataBlock {
205  public:
207  std::set<int> NodeList;
208 
209  CHECDB_NGroup();
210  virtual ~CHECDB_NGroup();
211  virtual void Clear();
212  virtual void Write(class CHECData* hecd);
213  virtual bool Read(class CHECData* hecd, char* header_line);
214 };
215 
216 class CHECDB_EGroup : public CHECDataBlock {
217  public:
219  std::set<int> ElemList;
220 
221  CHECDB_EGroup();
222  virtual ~CHECDB_EGroup();
223  virtual void Clear();
224  virtual void Write(class CHECData* hecd);
225  virtual bool Read(class CHECData* hecd, char* header_line);
226 };
227 
228 class CHECDB_SGroup : public CHECDataBlock {
229  public:
231 
232  class CItem {
233  public:
234  int elem, surf;
235  CItem(int eid = -1, int sid = 0) : elem(eid), surf(sid) {}
236  };
237  std::vector<CItem> ItemList;
238 
239  CHECDB_SGroup();
240  virtual ~CHECDB_SGroup();
241  virtual void Clear();
242  virtual void Write(class CHECData* hecd);
243  virtual bool Read(class CHECData* hecd, char* header_line);
244 };
245 
247  public:
252 
253  class CItem {
254  public:
255  double val, t;
256  CItem(double v = 0, double T = 0) : val(v), t(T) {}
257  };
258  std::vector<CItem> ItemList;
259 
261  virtual ~CHECDB_Amplitude();
262  virtual void Clear();
263  virtual void Write(class CHECData* hecd);
264  virtual bool Read(class CHECData* hecd, char* header_line);
265 };
266 
267 class CHECDB_Zero : public CHECDataBlock {
268  public:
269  double zero;
270 
271  CHECDB_Zero();
272  virtual ~CHECDB_Zero();
273  virtual void Clear();
274  virtual void Write(class CHECData* hecd);
275  virtual bool Read(class CHECData* hecd, char* header_line);
276 };
277 
278 #endif
CHECDB_NGroup::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_NGroup.cpp:34
CHECDB_Section::thickness
double thickness
Definition: CHECDB.h:187
CHECDB_Amplitude::definition
char definition[hec_name_size]
Definition: CHECDB.h:249
CHECDataBlock
Definition: CHECDataBlock.h:17
CHECDB_SGroup::CItem
Definition: CHECDB.h:232
CreateHECDataBlock
CHECDataBlock * CreateHECDataBlock(const char *header_name)
Definition: HECDB_util.cpp:16
CHECDB_Amplitude::CItem::CItem
CItem(double v=0, double T=0)
Definition: CHECDB.h:256
CHECDB_Material::~CHECDB_Material
virtual ~CHECDB_Material()
Definition: CHECDB_Material.cpp:18
CHECDB_Material::CItem::CItemRec::params
std::vector< double > params
Definition: CHECDB.h:140
CHECDB_Material::CItem::Write
void Write(class CHECData *hecd)
Definition: CHECDB_Material.cpp:25
CHECDB_SGroup
Definition: CHECDB.h:228
CHECDB_EGroup::~CHECDB_EGroup
virtual ~CHECDB_EGroup()
Definition: CHECDB_EGroup.cpp:19
CHECDB_Amplitude::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Amplitude.cpp:38
operator<
bool operator<(const checdb_id_class &a, const checdb_id_class &b)
Definition: CHECDB.h:41
CHECDB_Header::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Header.cpp:25
CHECDB_SGroup::CItem::elem
int elem
Definition: CHECDB.h:234
CHECDB_Header::CHECDB_Header
CHECDB_Header()
Definition: CHECDB_Header.cpp:12
CHECDB_Section::egrp
char egrp[hec_name_size]
Definition: CHECDB.h:181
CHECDB_Element::NodeNumber
static int NodeNumber(int type)
Definition: CHECDB_Element.cpp:15
CHECDB_Element::CElemItem
Definition: CHECDB.h:76
CHECDB_NGroup::CHECDB_NGroup
CHECDB_NGroup()
Definition: CHECDB_NGroup.cpp:15
CHECDB_Section::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Section.cpp:44
CHECDB_Section::n_comp
int n_comp
Definition: CHECDB.h:183
HECDB_MATERIAL
@ HECDB_MATERIAL
Definition: CHECDB.h:24
CHECDB_Node::GetNode
CNodeItem * GetNode(int id)
Definition: CHECDB_Node.cpp:31
CHECDB_EGroup::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_EGroup.cpp:34
operator==
bool operator==(const checdb_id_class &a, const checdb_id_class &b)
Definition: CHECDB.h:38
CHECDB_Section::CHECDB_Section
CHECDB_Section()
Definition: CHECDB_Section.cpp:15
CHECDB_Section::TYPE_BEAM
@ TYPE_BEAM
Definition: CHECDB.h:178
CHECDB_EGroup
Definition: CHECDB.h:216
CHECDB_Amplitude::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Amplitude.cpp:26
CHECDB_Material::CItem::CItemRec::CItemRec
CItemRec()
Definition: CHECDB.h:141
CHECDB_Element::ElemNumber
int ElemNumber()
Definition: CHECDB.h:104
CHECDB_Material
Definition: CHECDB.h:129
CHECDB_Section::gaprad2
double gaprad2
Definition: CHECDB.h:195
CHECDB_SGroup::CItem::surf
int surf
Definition: CHECDB.h:234
CHECDB_Zero::~CHECDB_Zero
virtual ~CHECDB_Zero()
Definition: CHECDB_Zero.cpp:14
CHECDB_Visual.h
CHECDB_Amplitude::value
char value[hec_name_size]
Definition: CHECDB.h:251
CHECDB_Element::option
int option
Definition: CHECDB.h:74
IsHECDataBlockName
bool IsHECDataBlockName(const char *name)
Definition: HECDB_util.cpp:57
HECDB_AMPLITUDE
@ HECDB_AMPLITUDE
Definition: CHECDB.h:29
CHECDB_EGroup::name
char name[hec_name_size]
Definition: CHECDB.h:218
CHECDB_Element::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Element.cpp:323
CHECDB_Section::Clear
virtual void Clear()
Definition: CHECDB_Section.cpp:31
CHECDB_NGroup::name
char name[hec_name_size]
Definition: CHECDB.h:206
CHECDB_Header::title
char title[hec_str_size]
Definition: CHECDB.h:53
CHECDB_EGroup::Clear
virtual void Clear()
Definition: CHECDB_EGroup.cpp:21
CHECDB_Material::CItem::RecList
std::vector< CItemRec > RecList
Definition: CHECDB.h:143
CHECDB_Header::Clear
virtual void Clear()
Definition: CHECDB_Header.cpp:16
CHECDB_Amplitude::Clear
virtual void Clear()
Definition: CHECDB_Amplitude.cpp:24
CHECDB_SGroup::CItem::CItem
CItem(int eid=-1, int sid=0)
Definition: CHECDB.h:235
CHECDB_Section::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Section.cpp:68
CHECDB_Section::gaprad1
double gaprad1
Definition: CHECDB.h:194
CHECDB_Node::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Node.cpp:20
CHECDB_Element::CElemItem::CElemItem
CElemItem(const CElemItem &e)
Definition: CHECDB.h:84
CHECDB_Amplitude::name
char name[hec_name_size]
Definition: CHECDB.h:248
CHECDB_Section
Definition: CHECDB.h:175
CHECDB_Zero
Definition: CHECDB.h:267
CHECDB_Zero::Clear
virtual void Clear()
Definition: CHECDB_Zero.cpp:16
CHECDB_Material::ItemList
std::vector< CItem > ItemList
Definition: CHECDB.h:166
CHECDB_Node::CNodeItem::y
double y
Definition: CHECDB.h:113
CHECDB_Amplitude::CItem
Definition: CHECDB.h:253
CHECDB_Element::CElemItem::~CElemItem
virtual ~CElemItem()
Definition: CHECDB.h:88
CHECDB_Zero::zero
double zero
Definition: CHECDB.h:269
HECDB_VISUAL
@ HECDB_VISUAL
Definition: CHECDB.h:31
CHECDB_Node::~CHECDB_Node
virtual ~CHECDB_Node()
Definition: CHECDB_Node.cpp:16
CHECDB_Node
Definition: CHECDB.h:108
CHECDB_Material::CItem
Definition: CHECDB.h:133
CHECDB_Material::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Material.cpp:41
CHECDB_Amplitude::CItem::val
double val
Definition: CHECDB.h:255
CHECDB_Element::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Element.cpp:357
CHECDB_Section::~CHECDB_Section
virtual ~CHECDB_Section()
Definition: CHECDB_Section.cpp:29
HECDB_HEADER
@ HECDB_HEADER
Definition: CHECDB.h:21
CHECDB_Amplitude
Definition: CHECDB.h:246
CHECDB_NGroup::NodeList
std::set< int > NodeList
Definition: CHECDB.h:207
CHECDB_Header
Definition: CHECDB.h:51
CHECDB_Element::CElemItem::node_n
int node_n
Definition: CHECDB.h:79
HECDB_NODE
@ HECDB_NODE
Definition: CHECDB.h:22
CHECDB_Material::Clear
virtual void Clear()
Definition: CHECDB_Material.cpp:20
CHECDB_NGroup::~CHECDB_NGroup
virtual ~CHECDB_NGroup()
Definition: CHECDB_NGroup.cpp:19
CHECDB_Node::NodeNumber
int NodeNumber()
Definition: CHECDB.h:125
CHECDB_SGroup::~CHECDB_SGroup
virtual ~CHECDB_SGroup()
Definition: CHECDB_SGroup.cpp:19
CHECDB_NGroup
Definition: CHECDB.h:204
CHECDB_Node::CHECDB_Node
CHECDB_Node()
Definition: CHECDB_Node.cpp:14
CHECDB_Section::material
char material[hec_name_size]
Definition: CHECDB.h:182
CHECDB_Node::CNodeItem
Definition: CHECDB.h:110
CHECDB_Element::ElemList
std::set< CElemItem > ElemList
Definition: CHECDB.h:96
CHECDB_Material::CItem::RecNumber
int RecNumber()
Definition: CHECDB.h:144
CHECDB_Node::CNodeItem::x
double x
Definition: CHECDB.h:113
HECDB_SGROUP
@ HECDB_SGROUP
Definition: CHECDB.h:28
CHECDB_SGroup::CHECDB_SGroup
CHECDB_SGroup()
Definition: CHECDB_SGroup.cpp:15
CHECDB_Material::CItem::Read
bool Read(class CHECData *hecd)
Definition: CHECDB_Material.cpp:52
CHECDB_Amplitude::CItem::t
double t
Definition: CHECDB.h:255
CHECData
Definition: CHECData.h:25
checdb_id_class::ID
int ID
Definition: CHECDB.h:33
CHECDB_Material::CItem::SubItemNumber
int SubItemNumber()
Definition: CHECDB.h:145
HECDB_ZERO
@ HECDB_ZERO
Definition: CHECDB.h:30
CHECDB_Node::NodeList
std::set< CNodeItem > NodeList
Definition: CHECDB.h:117
CHECDB_Element::CHECDB_Element
CHECDB_Element()
Definition: CHECDB_Element.cpp:316
CHECDB_Element::Clear
virtual void Clear()
Definition: CHECDB_Element.cpp:321
CHECDB_Material::CItem::ID
int ID
Definition: CHECDB.h:135
CHECDB_SGroup::ItemList
std::vector< CItem > ItemList
Definition: CHECDB.h:237
CHECDB_EGroup::CHECDB_EGroup
CHECDB_EGroup()
Definition: CHECDB_EGroup.cpp:15
HECDB_EGROUP
@ HECDB_EGROUP
Definition: CHECDB.h:27
CHECDB_Material::CItem::CItemRec
Definition: CHECDB.h:137
CHECDB_Material::CItem::CItemRec::last_is_temp
bool last_is_temp
Definition: CHECDB.h:139
CHECDB_Section::type
int type
Definition: CHECDB.h:180
CHECDB_Header::~CHECDB_Header
virtual ~CHECDB_Header()
Definition: CHECDB_Header.cpp:14
CHECDB_Node::CNodeItem::z
double z
Definition: CHECDB.h:113
CHECDB_Section::TYPE_SHELL
@ TYPE_SHELL
Definition: CHECDB.h:178
CHECDB_Material::CItem::LastIsTemp
bool LastIsTemp()
Definition: CHECDB.h:155
CHECDB_Node::Clear
virtual void Clear()
Definition: CHECDB_Node.cpp:18
CHECDB_Element::type
int type
Definition: CHECDB.h:71
CHECDB_NGroup::Clear
virtual void Clear()
Definition: CHECDB_NGroup.cpp:21
CHECDB_Material::CItem::CItem
CItem()
Definition: CHECDB.h:136
CHECDB_Section::secopt
int secopt
Definition: CHECDB.h:184
CHECDB_Zero::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Zero.cpp:18
CHECDB_Element::GetElem
CElemItem * GetElem(int id)
Definition: CHECDB_Element.cpp:342
CHECDB_Material::name
char name[hec_name_size]
Definition: CHECDB.h:131
CHECDB_SGroup::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_SGroup.cpp:34
CHECDB_Amplitude::CHECDB_Amplitude
CHECDB_Amplitude()
Definition: CHECDB_Amplitude.cpp:14
CHECDB_SGroup::name
char name[hec_name_size]
Definition: CHECDB.h:230
CHECDB_SGroup::Clear
virtual void Clear()
Definition: CHECDB_SGroup.cpp:21
CHECDB_Zero::CHECDB_Zero
CHECDB_Zero()
Definition: CHECDB_Zero.cpp:12
CHECDB_Section::TYPE_SOLID
@ TYPE_SOLID
Definition: CHECDB.h:178
HECDB_SECTION
@ HECDB_SECTION
Definition: CHECDB.h:25
CHECDB_Node::CNodeItem::CNodeItem
CNodeItem(int id=-1, double X=0, double Y=0, double Z=0)
Definition: CHECDB.h:114
checdb_id_class
Definition: CHECDB.h:31
CHECDB_Element::Connectivity
static const int * Connectivity(int face_id)
hec_name_size
const int hec_name_size
Definition: CHECDataBlock.h:14
CHECDB_Zero::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Zero.cpp:23
hec_str_size
const int hec_str_size
Definition: CHECDataBlock.h:15
CHECDB_Section::TYPE_UNKNOWN
@ TYPE_UNKNOWN
Definition: CHECDB.h:178
CHECDB_Element::CElemItem::InitNode
void InitNode(int n)
Definition: CHECDB.h:90
CHECDB_NGroup::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_NGroup.cpp:23
CHECDB_Amplitude::~CHECDB_Amplitude
virtual ~CHECDB_Amplitude()
Definition: CHECDB_Amplitude.cpp:22
CHECDB_Node::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Node.cpp:48
CHECDB_Element::~CHECDB_Element
virtual ~CHECDB_Element()
Definition: CHECDB_Element.cpp:319
CHECDB_Section::TYPE_INTERFACE
@ TYPE_INTERFACE
Definition: CHECDB.h:178
checdb_id_class::checdb_id_class
checdb_id_class(int id=-1)
Definition: CHECDB.h:34
checdb_id_class::~checdb_id_class
virtual ~checdb_id_class()
Definition: CHECDB.h:35
CHECDB_Element::CElemItem::CElemItem
CElemItem(int type, int id=-1)
Definition: CHECDB.h:81
CHECDB_Element::CElemItem::Init
void Init(int type)
Definition: CHECDB.h:89
HECDB_NGROUP
@ HECDB_NGROUP
Definition: CHECDB.h:26
CHECDB_Material::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Material.cpp:97
CHECDB_Material::CHECDB_Material
CHECDB_Material()
Definition: CHECDB_Material.cpp:14
CHECDB_EGroup::ElemList
std::set< int > ElemList
Definition: CHECDB.h:219
CHECDB_Header::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Header.cpp:18
CHECDB_Section::integpoints
int integpoints
Definition: CHECDB.h:190
CHECDB_Element
Definition: CHECDB.h:62
CHECDB_EGroup::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_EGroup.cpp:23
CHECDB_Element::CElemItem::CElemItem
CElemItem()
Definition: CHECDB.h:80
CHECDB_Element::CElemItem::node
int * node
Definition: CHECDB.h:78
CHECDB_Amplitude::time
char time[hec_name_size]
Definition: CHECDB.h:250
CHECDB_Amplitude::ItemList
std::vector< CItem > ItemList
Definition: CHECDB.h:258
CHECDB_Element::CheckType
static bool CheckType(int type)
Definition: CHECDB_Element.cpp:304
CHECDB_SGroup::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_SGroup.cpp:23
CHECDB_Section::gapcon
double gapcon
Definition: CHECDB.h:193
CHECDB_Material::CItem::Clear
void Clear()
Definition: CHECDB.h:162
operator>
bool operator>(const checdb_id_class &a, const checdb_id_class &b)
Definition: CHECDB.h:44
CHECDB_Element::sec_id
int sec_id
Definition: CHECDB.h:73
CHECDB_Element::DOFNumber
static int DOFNumber(int type)
Definition: CHECDB_Element.cpp:149
HECDB_ELEMENT
@ HECDB_ELEMENT
Definition: CHECDB.h:23
CHECDB_Element::FaceNumber
static int FaceNumber(int type)
Definition: CHECDB_Element.cpp:82
CHECDataBlock.h