FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
CNFDB_506.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_506 Ver.1.0
7*/
8
9// 506 Constraints
10
11#include "CNFData.h"
12#include "CNFDB_506.h"
13
14using namespace std;
15
17
19 char buff[256];
20 // #1
21 nfd->ReadLineEx(buff);
22 nfd->ReadRecord(buff, "I", &setID);
23 // #2
24 nfd->ReadLineEx(buff);
25 nfd->ReadStr(buff, title, sizeof(title));
26 // for nodes
28 // for points
30 // for curves
32 // for surfaces
34 // for equations
36 int eq_n = const_equations.size();
37
38 if (eq_n == 0) return;
39
40 // for number of coefficiency in equation
41 read_num_co(nfd, eq_n, num_co);
42 // for num_co records
43 read_num_co_list(nfd, eq_n, num_co_list);
44}
45
46void CNFDB_506::read_const_item(CNFData *nfd, std::vector<cconst_item> &list) {
47 char buff[256];
48 cconst_item item;
49 list.clear();
50
51 while (1) {
52 nfd->ReadLineEx(buff);
53 nfd->ReadRecord(buff, "IIIBBBBBBB", &item.ID, &item.color, &item.layer,
54 &item.DOF[0], &item.DOF[1], &item.DOF[2], &item.DOF[3],
55 &item.DOF[4], &item.DOF[5], &item.ex_geom);
56
57 if (item.ID == -1) break;
58
59 list.push_back(item);
60 }
61}
62
63void CNFDB_506::read_const_eq(CNFData *nfd, std::vector<cconst_eq> &list) {
64 char buff[256];
65 cconst_eq item;
66 list.clear();
67
68 while (1) {
69 nfd->ReadLineEx(buff);
70 nfd->ReadRecord(buff, "III", &item.ID, &item.color, &item.layer);
71
72 if (item.ID == -1) break;
73
74 list.push_back(item);
75 }
76}
77
78void CNFDB_506::read_num_co(CNFData *nfd, int eq_n, std::vector<nf_int> &list) {
79 char buff[256];
80 nf_int x;
81 list.clear();
82
83 for (int i = 0; i < eq_n; i++) {
84 nfd->ReadLineEx(buff);
85 nfd->ReadRecord(buff, "I", &x);
86 list.push_back(x);
87 }
88}
89
91 std::vector<cnum_co_rec> &list) {
92 char buff[256];
93 cnum_co_rec item;
94 list.clear();
95
96 for (int i = 0; i < eq_n; i++) {
97 nfd->ReadLineEx(buff);
98 nfd->ReadRecord(buff, "IIF", &item.eqn_nodeID, &item.eqn_dof, &item.coeff);
99 list.push_back(item);
100 }
101}
102
103//*****************************************************************************
104
105void CNFDB_506::WriteData(class CNFData *nfd, FILE *fp) {
106 // #1
107 nfd->WriteData(fp, "In", setID);
108 // #2
109 nfd->WriteStr(fp, title);
110 // for nodes
112 // for points
114 // for curves
116 // for surfaces
118 // for equations
120 int eq_n = const_equations.size();
121
122 if (eq_n == 0) return;
123
124 // for number of coefficiency in equation
125 write_num_co(nfd, fp, num_co);
126 // for num_co records
128}
129
131 std::vector<CNFDB_506::cconst_item> &list) {
132 vector<cconst_item>::iterator iter;
133
134 for (iter = list.begin(); iter != list.end(); iter++) {
135 nfd->WriteData(fp, "IIIBBBBBBBn", iter->ID, iter->color, iter->layer,
136 iter->DOF[0], iter->DOF[1], iter->DOF[2], iter->DOF[3],
137 iter->DOF[4], iter->DOF[5], iter->ex_geom);
138 }
139
140 nfd->WriteData(fp, "IIIBBBBBBBn", -1, -1, -1, 0, 0, 0, 0, 0, 0, 0);
141}
142
144 std::vector<CNFDB_506::cconst_eq> &list) {
145 vector<cconst_eq>::iterator iter;
146
147 for (iter = list.begin(); iter != list.end(); iter++) {
148 nfd->WriteData(fp, "IIIn", iter->ID, iter->color, iter->layer);
149 }
150
151 nfd->WriteData(fp, "IIIn", -1, -1, -1);
152}
153
155 std::vector<nf_int> &list) {
156 vector<nf_int>::iterator iter;
157
158 for (iter = list.begin(); iter != list.end(); iter++) {
159 nfd->WriteData(fp, "In", *iter);
160 }
161}
162
164 std::vector<CNFDB_506::cnum_co_rec> &list) {
165 vector<cnum_co_rec>::iterator iter;
166
167 for (iter = list.begin(); iter != list.end(); iter++) {
168 nfd->WriteData(fp, "IIFn", iter->eqn_nodeID, iter->eqn_dof, iter->coeff);
169 }
170}
int nf_int
Definition: CNFDataBlock.h:19
void write_const_item(class CNFData *nfd, FILE *fp, std::vector< cconst_item > &list)
Definition: CNFDB_506.cpp:130
std::vector< cconst_item > const_nodes
Definition: CNFDB_506.h:75
void write_const_eq(class CNFData *nfd, FILE *fp, std::vector< cconst_eq > &list)
Definition: CNFDB_506.cpp:143
void write_num_co_list(class CNFData *nfd, FILE *fp, std::vector< cnum_co_rec > &list)
Definition: CNFDB_506.cpp:163
std::vector< cconst_item > const_curves
Definition: CNFDB_506.h:79
void write_num_co(class CNFData *nfd, FILE *fp, std::vector< nf_int > &list)
Definition: CNFDB_506.cpp:154
std::vector< cconst_item > const_points
Definition: CNFDB_506.h:77
nf_int setID
Definition: CNFDB_506.h:71
std::vector< cconst_item > const_surfaces
Definition: CNFDB_506.h:81
std::vector< cnum_co_rec > num_co_list
Definition: CNFDB_506.h:87
void read_const_eq(class CNFData *nfd, std::vector< cconst_eq > &list)
Definition: CNFDB_506.cpp:63
void read_const_item(class CNFData *nfd, std::vector< cconst_item > &list)
Definition: CNFDB_506.cpp:46
std::vector< cconst_eq > const_equations
Definition: CNFDB_506.h:85
std::vector< nf_int > num_co
Definition: CNFDB_506.h:83
void read_num_co(class CNFData *nfd, int eq_n, std::vector< nf_int > &list)
Definition: CNFDB_506.cpp:78
virtual void Read(class CNFData *nfd)
Definition: CNFDB_506.cpp:18
void read_num_co_list(class CNFData *nfd, int eq_n, std::vector< cnum_co_rec > &list)
Definition: CNFDB_506.cpp:90
virtual void WriteData(class CNFData *nfd, FILE *fp)
Definition: CNFDB_506.cpp:105
nf_char title[26]
Definition: CNFDB_506.h:73
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
void WriteData(FILE *fp, const char *fmt,...)
Definition: CNFData.cpp:486
void ReadRecord(char *buff, const char *fmt,...)
Definition: CNFData.cpp:308