FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
CHECDB_Node.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_Node Ver.1.0
7*/
8
9#include "CHECDB.h"
10#include "CHECData.h"
11
12using namespace std;
13
15
17
18void CHECDB_Node::Clear() { NodeList.clear(); }
19
21 if (NodeList.size() == 0) return;
22
23 hecd->WriteHeader("!NODE");
24 set<CNodeItem>::iterator iter;
25
26 for (iter = NodeList.begin(); iter != NodeList.end(); iter++) {
27 hecd->WriteData("IFFF", iter->ID, iter->x, iter->y, iter->z);
28 }
29}
30
32 std::set<CNodeItem>::iterator iter;
33
34 for (iter = NodeList.begin(); iter != NodeList.end(); iter++) {
35 if (iter->ID == id) {
36 return (CNodeItem *)&(*iter);
37 }
38 }
39
40 return 0;
41 /*
42 iter = find( NodeList.begin(), NodeList.end(), CNodeItem(id));
43 if( iter == NodeList.end()) return 0;
44 return &(*iter);
45 */
46}
47
48bool CHECDB_Node::Read(CHECData *hecd, char *header_line) {
49 CNodeItem item;
50 char line[256];
51
52 while (hecd->ReadLine(line)) {
53 if (line[0] == '!') {
54 hecd->PushReadLine(line);
55 break;
56 }
57
58 char *token = strtok(line, ",\r\n");
59
60 if (!token) return false;
61
62 if (sscanf(token, "%d", &item.ID) != 1) return false;
63
64 // x
65 token = strtok(0, ",\r\n");
66
67 if (!token) return false;
68
69 if (sscanf(token, "%lf", &item.x) != 1) return false;
70
71 // y
72 token = strtok(0, ",\r\n");
73
74 if (!token) return false;
75
76 if (sscanf(token, "%lf", &item.y) != 1) return false;
77
78 // z
79 item.z = 0;
80 token = strtok(0, ",\r\n");
81
82 if (token) {
83 if (sscanf(token, "%lf", &item.z) != 1) return false;
84 }
85
86 NodeList.insert(item);
87 }
88
89 return true;
90}
@ HECDB_NODE
Definition: CHECDB.h:19
CNodeItem * GetNode(int id)
Definition: CHECDB_Node.cpp:31
virtual void Clear()
Definition: CHECDB_Node.cpp:18
virtual bool Read(class CHECData *hecd, char *header_line)
Definition: CHECDB_Node.cpp:48
virtual ~CHECDB_Node()
Definition: CHECDB_Node.cpp:16
virtual void Write(class CHECData *hecd)
Definition: CHECDB_Node.cpp:20
std::set< CNodeItem > NodeList
Definition: CHECDB.h:117
virtual void WriteData(const char *fmt,...)
Definition: CHECData.cpp:162
virtual bool ReadLine(char *s, int size=256)
Definition: CHECData.cpp:307
virtual void WriteHeader(const char *name, const char *fmt="",...)
Definition: CHECData.cpp:68
virtual void PushReadLine(const char *s)
Definition: CHECData.cpp:328