FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
CNFDB_408.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  CNFDB_408 Ver.1.0
7 */
8 
9 // 408 Group
10 
11 #include <vector>
12 #include "CNFData.h"
13 #include "CNFDB_408.h"
14 
15 using namespace std;
16 
18 
20  char buff[256];
21  int i;
22  // #1
23  nfd->ReadLineEx(buff);
24 
25  if (nfd->version >= 5.0) {
26  nfd->ReadRecord(buff, "IIB", &ID, &need_eval, &prev_enum);
27 
28  } else {
29  nfd->ReadRecord(buff, "II", &ID, &need_eval);
30  }
31 
32  // #2
33  nfd->ReadLineEx(buff);
34  nfd->ReadStr(buff, title, sizeof(title));
35  // #3
36  nfd->ReadLineEx(buff);
37  nfd->ReadRecord(buff, "III", &layer[0], &layer[1], &layer_method);
38  // #4
39  nfd->ReadLineEx(buff);
40  nfd->ReadRecord(buff, "IIIIFF", &coclip_on, &coclip_dof, &coclip_meth,
42  // #5
43  nfd->ReadLineEx(buff);
44  nfd->ReadRecord(buff, "II", &plclip_meth, &plclip_in);
45  // #--------------------------------
46 
47  for (i = 0; i < 6; i++) {
48  // ##1
49  nfd->ReadLineEx(buff);
50  nfd->ReadRecord(buff, "II", &plclip_set[i].plclip_on,
51  &plclip_set[i].plclip_neg);
52  // ##2
53  nfd->ReadLineEx(buff);
54  nfd->ReadRecord(buff, "FFF", &plclip_set[i].plclip_base[0],
55  &plclip_set[i].plclip_base[1],
56  &plclip_set[i].plclip_base[2]);
57  // ##3
58  nfd->ReadLineEx(buff);
59  nfd->ReadRecord(buff, "FFF", &plclip_set[i].plclip_norm[0],
60  &plclip_set[i].plclip_norm[1],
61  &plclip_set[i].plclip_norm[2]);
62  }
63 
64  // #--------------------------------
65  nfd->ReadLineEx(buff);
66  nfd->ReadRecord(buff, "I", &max_rules);
67  // #--------------------------------
68  read_rule(nfd, rule_set);
69  // #--------------------------------
70  nfd->ReadLineEx(buff);
71  nfd->ReadRecord(buff, "I", &max_lists);
72  // #--------------------------------
73  read_list(nfd, list_set);
74 }
75 
76 void CNFDB_408::read_rule(CNFData *nfd, std::vector<crule_rec> &list) {
77  char buff[256];
78  crule_rec rec;
79  list.clear();
80 
81  while (1) {
82  nfd->ReadLineEx(buff);
83  nfd->ReadRecord(buff, "I", &rec.rule_type);
84 
85  if (rec.rule_type == -1) break;
86 
87  rec.entry_set.clear();
89 
90  while (1) {
91  nfd->ReadLineEx(buff);
92  nfd->ReadRecord(buff, "IIII", &erec.startID, &erec.stopID, &erec.incID,
93  &erec.include);
94 
95  if (erec.startID == -1) break;
96 
97  rec.entry_set.push_back(erec);
98  }
99 
100  list.push_back(rec);
101  }
102 }
103 
104 void CNFDB_408::read_list(CNFData *nfd, std::vector<clist_rec> &list) {
105  char buff[256];
106  clist_rec rec;
107  list.clear();
108 
109  while (1) {
110  nfd->ReadLineEx(buff);
111  nfd->ReadRecord(buff, "I", &rec.list_type);
112 
113  if (rec.list_type == -1) break;
114 
115  rec.entityID.clear();
116  nf_int eid;
117 
118  while (1) {
119  nfd->ReadLineEx(buff);
120  nfd->ReadRecord(buff, "I", &eid);
121 
122  if (eid == -1) break;
123 
124  rec.entityID.push_back(eid);
125  }
126 
127  list.push_back(rec);
128  }
129 }
130 
131 //*****************************************************************************
132 
133 void CNFDB_408::WriteData(class CNFData *nfd, FILE *fp) {
134  int i;
135 
136  // #1
137  if (nfd->version >= 5.0) {
138  nfd->WriteData(fp, "IIBn", ID, need_eval, prev_enum);
139 
140  } else {
141  nfd->WriteData(fp, "IIn", ID, need_eval);
142  }
143 
144  // #2
145  nfd->WriteStr(fp, title);
146  // #3
147  nfd->WriteData(fp, "IIIn", layer[0], layer[1], layer_method);
148  // #4
149  nfd->WriteData(fp, "IIIIFFn", coclip_on, coclip_dof, coclip_meth, coclip_csys,
151  // #5
152  nfd->WriteData(fp, "IIn", plclip_meth, plclip_in);
153  // #--------------------------------
154 
155  for (i = 0; i < 6; i++) {
156  // ##1
157  nfd->WriteData(fp, "IIn", plclip_set[i].plclip_on,
158  plclip_set[i].plclip_neg);
159  // ##2
160  nfd->WriteData(fp, "FFFn", plclip_set[i].plclip_base[0],
161  plclip_set[i].plclip_base[1], plclip_set[i].plclip_base[2]);
162  // ##3
163  nfd->WriteData(fp, "FFFn", plclip_set[i].plclip_norm[0],
164  plclip_set[i].plclip_norm[1], plclip_set[i].plclip_norm[2]);
165  }
166 
167  // #--------------------------------
168  nfd->WriteData(fp, "In", max_rules);
169  // #--------------------------------
170  write_rule(nfd, fp, rule_set);
171  // #--------------------------------
172  nfd->WriteData(fp, "In", max_lists);
173  // #--------------------------------
174  write_list(nfd, fp, list_set);
175 }
176 
177 void CNFDB_408::write_rule(CNFData *nfd, FILE *fp,
178  std::vector<crule_rec> &list) {
179  vector<crule_rec>::iterator iter;
180 
181  for (iter = list.begin(); iter != list.end(); iter++) {
182  nfd->WriteData(fp, "In", iter->rule_type);
183  vector<crule_rec::centry_rec>::iterator irec;
184 
185  for (irec = iter->entry_set.begin(); irec != iter->entry_set.end();
186  irec++) {
187  nfd->WriteData(fp, "IIIIn", irec->startID, irec->stopID, irec->incID,
188  irec->include);
189  }
190 
191  nfd->WriteData(fp, "IIIIn", -1, -1, -1, -1);
192  }
193 
194  nfd->WriteData(fp, "In", -1);
195 }
196 
197 void CNFDB_408::write_list(CNFData *nfd, FILE *fp,
198  std::vector<clist_rec> &list) {
199  vector<clist_rec>::iterator iter;
200 
201  for (iter = list.begin(); iter != list.end(); iter++) {
202  nfd->WriteData(fp, "In", iter->list_type);
203  vector<nf_int>::iterator irec;
204 
205  for (irec = iter->entityID.begin(); irec != iter->entityID.end(); irec++) {
206  nfd->WriteData(fp, "In", *irec);
207  }
208 
209  nfd->WriteData(fp, "In", -1);
210  }
211 
212  nfd->WriteData(fp, "In", -1);
213 }
CNFData::ReadRecord
void ReadRecord(char *buff, const char *fmt,...)
Definition: CNFData.cpp:308
CNFDB_408::plclip_in
nf_int plclip_in
Definition: CNFDB_408.h:103
CNFDB_408::crule_rec::centry_rec
Definition: CNFDB_408.h:65
CNFDB_408::list_set
std::vector< clist_rec > list_set
Definition: CNFDB_408.h:113
CNFDB_408::ID
nf_int ID
Definition: CNFDB_408.h:86
CNFDB_408::crule_rec
Definition: CNFDB_408.h:60
CNFDB_408::write_list
void write_list(class CNFData *nfd, FILE *fp, std::vector< clist_rec > &list)
Definition: CNFDB_408.cpp:197
CNFDataBlock
Definition: CNFDataBlock.h:24
CNFDB_408::read_rule
void read_rule(class CNFData *nfd, std::vector< crule_rec > &list)
Definition: CNFDB_408.cpp:76
CNFData::WriteStr
void WriteStr(FILE *fp, const char *s)
Definition: CNFData.cpp:452
CNFDB_408::crule_rec::centry_rec::stopID
nf_int stopID
Definition: CNFDB_408.h:68
CNFDB_408::coclip_meth
nf_int coclip_meth
Definition: CNFDB_408.h:97
CNFDB_408.h
CNFData.h
CNFDB_408::layer_method
nf_int layer_method
Definition: CNFDB_408.h:93
CNFData::version
double version
Definition: CNFData.h:48
CNFDB_408::rule_set
std::vector< crule_rec > rule_set
Definition: CNFDB_408.h:109
CNFDB_408::coclip_on
nf_int coclip_on
Definition: CNFDB_408.h:95
CNFDB_408::max_rules
nf_int max_rules
Definition: CNFDB_408.h:107
CNFDB_408::layer
nf_int layer[2]
Definition: CNFDB_408.h:92
CNFDB_408::clist_rec::entityID
std::vector< nf_int > entityID
Definition: CNFDB_408.h:82
CNFDB_408::plclip_meth
nf_int plclip_meth
Definition: CNFDB_408.h:102
CNFDB_408::need_eval
nf_int need_eval
Definition: CNFDB_408.h:87
CNFDB_408::read_list
void read_list(class CNFData *nfd, std::vector< clist_rec > &list)
Definition: CNFDB_408.cpp:104
CNFData::ReadLineEx
void ReadLineEx(char *buff, int size=255)
Definition: CNFData.cpp:367
CNFData
Definition: CNFData.h:46
CNFData::WriteData
void WriteData(FILE *fp, const char *fmt,...)
Definition: CNFData.cpp:486
CNFDB_408::prev_enum
nf_bool prev_enum
Definition: CNFDB_408.h:88
CNFData::ReadStr
void ReadStr(char *buff, char *s, int size)
Definition: CNFData.cpp:373
CNFDB_408::CNFDB_408
CNFDB_408()
Definition: CNFDB_408.cpp:17
CNFDB_408::clist_rec::list_type
nf_int list_type
Definition: CNFDB_408.h:81
CNFDB_408::write_rule
void write_rule(class CNFData *nfd, FILE *fp, std::vector< crule_rec > &list)
Definition: CNFDB_408.cpp:177
CNFDB_408::title
nf_char title[26]
Definition: CNFDB_408.h:90
CNFDB_408::crule_rec::rule_type
nf_int rule_type
Definition: CNFDB_408.h:63
CNFDB_408::coclip_max
nf_float coclip_max
Definition: CNFDB_408.h:100
CNFDB_408::coclip_min
nf_float coclip_min
Definition: CNFDB_408.h:99
CNFDB_408::crule_rec::centry_rec::incID
nf_int incID
Definition: CNFDB_408.h:69
CNFDB_408::crule_rec::centry_rec::startID
nf_int startID
Definition: CNFDB_408.h:67
CNFDB_408::plclip_set
cplclip_rec plclip_set[6]
Definition: CNFDB_408.h:105
CNFDB_408::coclip_csys
nf_int coclip_csys
Definition: CNFDB_408.h:98
CNFDB_408::crule_rec::centry_rec::include
nf_int include
Definition: CNFDB_408.h:70
CNFDB_408::coclip_dof
nf_int coclip_dof
Definition: CNFDB_408.h:96
CNFDB_408::max_lists
nf_int max_lists
Definition: CNFDB_408.h:111
nf_int
int nf_int
Definition: CNFDataBlock.h:19
CNFDB_408::WriteData
virtual void WriteData(class CNFData *nfd, FILE *fp)
Definition: CNFDB_408.cpp:133
CNFDB_408::crule_rec::entry_set
std::vector< centry_rec > entry_set
Definition: CNFDB_408.h:72
CNFDB_408::clist_rec
Definition: CNFDB_408.h:79
CNFDB_408::Read
virtual void Read(class CNFData *nfd)
Definition: CNFDB_408.cpp:19