FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
CHECDB_NGroup.cpp
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_NGroup Ver.1.0
7 */
8 
9 #include "CHECDB.h"
10 #include "CHECData.h"
11 
12 using namespace std;
13 using namespace hecd_util;
14 
16  name[0] = 0;
17 }
18 
20 
21 void CHECDB_NGroup::Clear() { NodeList.clear(); }
22 
24  if (NodeList.size() == 0) return;
25 
26  hecd->WriteHeader("!NGROUP", "S", "NGRP", name);
27  set<int>::iterator iter;
28 
29  for (iter = NodeList.begin(); iter != NodeList.end(); iter++) {
30  hecd->WriteData("I", *iter);
31  }
32 }
33 
34 bool CHECDB_NGroup::Read(CHECData *hecd, char *header_line) {
35  int rcode[5];
36 
37  if (!hecd->ParseHeader(header_line, rcode, "S", "NGRP", name)) return false;
38 
39  char line[256];
40  const int max_id_n = 100;
41  int id[max_id_n];
42  int i, n;
43 
44  while (1) {
45  if (!hecd->ReadLine(line)) break;
46 
47  if (line[0] == '!') {
48  hecd->PushReadLine(line);
49  break;
50  }
51 
52  n = hecd->ParseIntDataArray(line, id);
53 
54  if (n < 0) return false;
55 
56  for (i = 0; i < n; i++) {
57  NodeList.insert(id[i]);
58  }
59  }
60 
61  return true;
62 }
CHECDB_NGroup::Read
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_NGroup.cpp:34
CHECDataBlock
Definition: CHECDataBlock.h:17
CHECData::ParseHeader
virtual bool ParseHeader(char *header_line, int *rcode, const char *fmt,...)
Definition: CHECData.cpp:506
CHECData.h
CHECDB_NGroup::CHECDB_NGroup
CHECDB_NGroup()
Definition: CHECDB_NGroup.cpp:15
CHECData::PushReadLine
virtual void PushReadLine(const char *s)
Definition: CHECData.cpp:328
CHECDB_NGroup::name
char name[hec_name_size]
Definition: CHECDB.h:206
CHECData::ReadLine
virtual bool ReadLine(char *s, int size=256)
Definition: CHECData.cpp:307
CHECData::WriteData
virtual void WriteData(const char *fmt,...)
Definition: CHECData.cpp:162
CHECDB.h
CHECDB_NGroup::NodeList
std::set< int > NodeList
Definition: CHECDB.h:207
CHECDB_NGroup::~CHECDB_NGroup
virtual ~CHECDB_NGroup()
Definition: CHECDB_NGroup.cpp:19
CHECData::WriteHeader
virtual void WriteHeader(const char *name, const char *fmt="",...)
Definition: CHECData.cpp:68
CHECData
Definition: CHECData.h:25
CHECDB_NGroup::Clear
virtual void Clear()
Definition: CHECDB_NGroup.cpp:21
hecd_util
Definition: hecd_util.cpp:11
CHECDB_NGroup::Write
virtual void Write(class CHECData *hecd)
Definition: CHECDB_NGroup.cpp:23
CHECData::ParseIntDataArray
virtual int ParseIntDataArray(char *line, int *data)
Definition: CHECData.cpp:617
HECDB_NGROUP
@ HECDB_NGROUP
Definition: CHECDB.h:26