FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
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
15using 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
76void 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
104void 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
133void 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
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
177void 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
197void 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}
int nf_int
Definition: CNFDataBlock.h:19
std::vector< nf_int > entityID
Definition: CNFDB_408.h:79
std::vector< centry_rec > entry_set
Definition: CNFDB_408.h:69
void read_list(class CNFData *nfd, std::vector< clist_rec > &list)
Definition: CNFDB_408.cpp:104
nf_bool prev_enum
Definition: CNFDB_408.h:85
nf_int plclip_in
Definition: CNFDB_408.h:100
nf_int coclip_dof
Definition: CNFDB_408.h:93
nf_int layer[2]
Definition: CNFDB_408.h:89
std::vector< clist_rec > list_set
Definition: CNFDB_408.h:110
nf_float coclip_min
Definition: CNFDB_408.h:96
void write_rule(class CNFData *nfd, FILE *fp, std::vector< crule_rec > &list)
Definition: CNFDB_408.cpp:177
nf_int coclip_csys
Definition: CNFDB_408.h:95
virtual void Read(class CNFData *nfd)
Definition: CNFDB_408.cpp:19
void read_rule(class CNFData *nfd, std::vector< crule_rec > &list)
Definition: CNFDB_408.cpp:76
nf_char title[26]
Definition: CNFDB_408.h:87
nf_int coclip_on
Definition: CNFDB_408.h:92
virtual void WriteData(class CNFData *nfd, FILE *fp)
Definition: CNFDB_408.cpp:133
std::vector< crule_rec > rule_set
Definition: CNFDB_408.h:106
nf_int max_rules
Definition: CNFDB_408.h:104
nf_int need_eval
Definition: CNFDB_408.h:84
nf_int max_lists
Definition: CNFDB_408.h:108
void write_list(class CNFData *nfd, FILE *fp, std::vector< clist_rec > &list)
Definition: CNFDB_408.cpp:197
nf_int layer_method
Definition: CNFDB_408.h:90
nf_int coclip_meth
Definition: CNFDB_408.h:94
cplclip_rec plclip_set[6]
Definition: CNFDB_408.h:102
nf_int ID
Definition: CNFDB_408.h:83
nf_int plclip_meth
Definition: CNFDB_408.h:99
nf_float coclip_max
Definition: CNFDB_408.h:97
void WriteStr(FILE *fp, const char *s)
Definition: CNFData.cpp:452
void ReadStr(char *buff, char *s, int size)
Definition: CNFData.cpp:373
void ReadLineEx(char *buff, int size=255)
Definition: CNFData.cpp:367
double version
Definition: CNFData.h:48
void WriteData(FILE *fp, const char *fmt,...)
Definition: CNFData.cpp:486
void ReadRecord(char *buff, const char *fmt,...)
Definition: CNFData.cpp:308