FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
CNFDB_402.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_402 Ver.1.0
7  -----------------------------
8  402 Properties ( of element )
9 */
10 
11 #include "CNFData.h"
12 #include "CNFDB_402.h"
13 
14 // 402 Properties ( of element )
15 
17  num_lam = 0;
18  lam_MID = 0;
19  num_val = 0;
20  Value = 0;
21  num_outline = 0;
22  u = 0;
23  v = 0;
24  draw = 0;
25  num_outline_2 = 0;
26  u_2 = 0;
27  v_2 = 0;
28  draw_2 = 0;
29 }
30 
32 
34  delete[] lam_MID;
35  delete[] Value;
36  delete[] u;
37  delete[] v;
38  delete[] draw;
39  delete[] u_2;
40  delete[] v_2;
41  delete[] draw_2;
42  num_lam = 0;
43  lam_MID = 0;
44  num_val = 0;
45  Value = 0;
46  num_outline = 0;
47  u = 0;
48  v = 0;
49  draw = 0;
50  num_outline_2 = 0;
51  u_2 = 0;
52  v_2 = 0;
53  draw_2 = 0;
54 }
55 
57  char buff[256];
58  int i;
59  Clear();
60  // #1
61  nfd->ReadLineEx(buff);
62  nfd->ReadRecord(buff, "IIIIII", &ID, &color, &matID, &type, &layer, &refCS);
63  // #2
64  nfd->ReadLineEx(buff);
65  nfd->ReadStr(buff, title, sizeof(title));
66  // #3
67  nfd->ReadLineEx(buff);
68  nfd->ReadRecord(buff, "IIII", &floag[0], &floag[1], &floag[2], &floag[3]);
69  // #4
70  nfd->ReadLineEx(buff);
71  nfd->ReadRecord(buff, "I", &num_lam);
72  // # ----------------------
73  // 8 values par record;
74  lam_MID = new nf_int[num_lam];
75  nfd->ReadMultRec('I', 8, num_lam, lam_MID);
76  // # ----------------------
77  nfd->ReadLineEx(buff);
78  nfd->ReadRecord(buff, "I", &num_val);
79  // # ----------------------
80  // 5 values par record;
81  Value = new nf_float[num_val];
82  nfd->ReadMultRec('F', 5, num_val, Value);
83 
84  // ======= Ver.6.0 ========================
85  if (nfd->version < 6.0) return;
86 
87  // # ----------------------
88  nfd->ReadLineEx(buff);
89  nfd->ReadRecord(buff, "I", &num_outline);
90  // # ----------------------
91  u = new nf_float[num_outline];
92  v = new nf_float[num_outline];
93  draw = new nf_int[num_outline];
94 
95  for (i = 0; i < num_outline; i++) {
96  nfd->ReadLineEx(buff);
97  nfd->ReadRecord(buff, "FFI", &u[i], &v[i], &draw[i]);
98  }
99 
100  // ======= Ver.8.1 ========================
101  if (nfd->version < 8.1) return;
102 
103  // # ----------------------
104  nfd->ReadLineEx(buff);
105  nfd->ReadRecord(buff, "I", &num_outline_2);
106  // # ----------------------
107  u_2 = new nf_float[num_outline_2];
108  v_2 = new nf_float[num_outline_2];
109  draw_2 = new nf_int[num_outline_2];
110 
111  for (i = 0; i < num_outline_2; i++) {
112  nfd->ReadLineEx(buff);
113  nfd->ReadRecord(buff, "FFI", &u_2[i], &v_2[i], &draw_2[i]);
114  }
115 }
116 
117 //*****************************************************************************
118 
119 void CNFDB_402::WriteData(class CNFData *nfd, FILE *fp) {
120  int i;
121  // #1
122  nfd->WriteData(fp, "IIIIIIn", ID, color, matID, type, layer, refCS);
123  // #2
124  nfd->WriteStr(fp, title);
125  // #3
126  nfd->WriteData(fp, "IIIIn", floag[0], floag[1], floag[2], floag[3]);
127  // #4
128  nfd->WriteData(fp, "In", num_lam);
129 
130  // # ----------------------
131  // 8 values par record;
132  for (i = 0; i < num_lam; i++) {
133  nfd->WriteData(fp, "I", lam_MID[i]);
134 
135  if (i % 8 == 7) nfd->WriteData(fp, "n");
136  }
137 
138  if (i % 8 != 0) nfd->WriteData(fp, "n");
139 
140  // # ----------------------
141  nfd->WriteData(fp, "In", num_val);
142 
143  // # ----------------------
144  // 5 values par record;
145  for (i = 0; i < num_val; i++) {
146  nfd->WriteData(fp, "F", Value[i]);
147 
148  if (i % 5 == 4) nfd->WriteData(fp, "n");
149  }
150 
151  if (i % 5 != 0) nfd->WriteData(fp, "n");
152 
153  // ======= Ver.6.0 ========================
154  if (nfd->version < 6.0) return;
155 
156  // # ----------------------
157  nfd->WriteData(fp, "In", num_outline);
158 
159  // # ----------------------
160  for (i = 0; i < num_outline; i++) {
161  nfd->WriteData(fp, "FFIn", u[i], v[i], draw[i]);
162  }
163 
164  // ======= Ver.8.1 ========================
165  if (nfd->version < 8.1) return;
166 
167  // # ----------------------
168  nfd->WriteData(fp, "In", num_outline_2);
169 
170  // # ----------------------
171  for (i = 0; i < num_outline_2; i++) {
172  nfd->WriteData(fp, "FFIn", u_2[i], v_2[i], draw_2[i]);
173  }
174 }
CNFDB_402::layer
nf_int layer
Definition: CNFDB_402.h:36
CNFData::ReadRecord
void ReadRecord(char *buff, const char *fmt,...)
Definition: CNFData.cpp:308
CNFDB_402::v_2
nf_float * v_2
Definition: CNFDB_402.h:68
CNFDB_402::num_val
nf_int num_val
Definition: CNFDB_402.h:48
CNFDataBlock
Definition: CNFDataBlock.h:24
CNFData::WriteStr
void WriteStr(FILE *fp, const char *s)
Definition: CNFData.cpp:452
CNFDB_402::ID
nf_int ID
Definition: CNFDB_402.h:32
CNFDB_402::Read
virtual void Read(class CNFData *nfd)
Definition: CNFDB_402.cpp:56
CNFDB_402::u
nf_float * u
Definition: CNFDB_402.h:58
CNFData.h
CNFDB_402::v
nf_float * v
Definition: CNFDB_402.h:59
CNFDB_402::title
nf_char title[26]
Definition: CNFDB_402.h:39
CNFData::version
double version
Definition: CNFData.h:48
CNFDB_402::Clear
virtual void Clear()
Definition: CNFDB_402.cpp:33
CNFDB_402::u_2
nf_float * u_2
Definition: CNFDB_402.h:67
CNFDB_402::Value
nf_float * Value
Definition: CNFDB_402.h:51
CNFDB_402::draw
nf_int * draw
Definition: CNFDB_402.h:60
CNFDB_402.h
CNFDB_402::matID
nf_int matID
Definition: CNFDB_402.h:34
CNFData::ReadLineEx
void ReadLineEx(char *buff, int size=255)
Definition: CNFData.cpp:367
CNFData
Definition: CNFData.h:46
CNFData::ReadMultRec
void ReadMultRec(char type, int n_in_rec, int val_n, void *val)
Definition: CNFData.cpp:394
CNFDB_402::CNFDB_402
CNFDB_402()
Definition: CNFDB_402.cpp:16
CNFData::WriteData
void WriteData(FILE *fp, const char *fmt,...)
Definition: CNFData.cpp:486
CNFDB_402::color
nf_int color
Definition: CNFDB_402.h:33
CNFData::ReadStr
void ReadStr(char *buff, char *s, int size)
Definition: CNFData.cpp:373
CNFDB_402::refCS
nf_int refCS
Definition: CNFDB_402.h:37
CNFDB_402::num_lam
nf_int num_lam
Definition: CNFDB_402.h:43
CNFDB_402::floag
nf_int floag[4]
Definition: CNFDB_402.h:41
CNFDB_402::draw_2
nf_int * draw_2
Definition: CNFDB_402.h:69
CNFDB_402::type
nf_int type
Definition: CNFDB_402.h:35
CNFDB_402::num_outline
nf_int num_outline
Definition: CNFDB_402.h:56
CNFDB_402::WriteData
virtual void WriteData(class CNFData *nfd, FILE *fp)
Definition: CNFDB_402.cpp:119
CNFDB_402::lam_MID
nf_int * lam_MID
Definition: CNFDB_402.h:46
nf_int
int nf_int
Definition: CNFDataBlock.h:19
CNFDB_402::num_outline_2
nf_int num_outline_2
Definition: CNFDB_402.h:65
CNFDB_402::~CNFDB_402
virtual ~CNFDB_402()
Definition: CNFDB_402.cpp:31
nf_float
double nf_float
Definition: CNFDataBlock.h:21