FrontISTR  5.7.1
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 }
int nf_int
Definition: CNFDataBlock.h:19
double nf_float
Definition: CNFDataBlock.h:21
virtual ~CNFDB_402()
Definition: CNFDB_402.cpp:31
nf_int num_lam
Definition: CNFDB_402.h:40
nf_float * v
Definition: CNFDB_402.h:56
nf_int * lam_MID
Definition: CNFDB_402.h:43
nf_int num_outline_2
Definition: CNFDB_402.h:62
nf_int refCS
Definition: CNFDB_402.h:34
nf_int type
Definition: CNFDB_402.h:32
nf_int * draw_2
Definition: CNFDB_402.h:66
nf_int num_outline
Definition: CNFDB_402.h:53
nf_int color
Definition: CNFDB_402.h:30
virtual void Clear()
Definition: CNFDB_402.cpp:33
nf_float * Value
Definition: CNFDB_402.h:48
nf_int layer
Definition: CNFDB_402.h:33
nf_int num_val
Definition: CNFDB_402.h:45
virtual void Read(class CNFData *nfd)
Definition: CNFDB_402.cpp:56
nf_char title[26]
Definition: CNFDB_402.h:36
nf_int ID
Definition: CNFDB_402.h:29
nf_float * u_2
Definition: CNFDB_402.h:64
nf_float * v_2
Definition: CNFDB_402.h:65
nf_float * u
Definition: CNFDB_402.h:55
nf_int floag[4]
Definition: CNFDB_402.h:38
virtual void WriteData(class CNFData *nfd, FILE *fp)
Definition: CNFDB_402.cpp:119
nf_int * draw
Definition: CNFDB_402.h:57
nf_int matID
Definition: CNFDB_402.h:31
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
void ReadMultRec(char type, int n_in_rec, int val_n, void *val)
Definition: CNFData.cpp:394