1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 /*
6         CNFDB_507 Ver. 3.6
7 */
8 
9 #ifndef CNFDB_507H
10 #define CNFDB_507H
11 
12 #include <vector>
13 #include "CNFDataBlock.h"
14 
15 // 507 Loads
16 
17 class CNFDB_507 : public CNFDataBlock {
18  public:
19   CNFDB_507();
~CNFDB_507()20   virtual ~CNFDB_507() {}
21 
22   virtual void Read(CNFData* nfd);
23   virtual void WriteData(class CNFData* nfd, FILE* fp);
24 
25  public:
26   class cstructural_load_rec {
27    public:
28     // ##1
29     nf_int loadID;
30     nf_int loadtype;
31     nf_int color;
32     nf_int layer;
33     nf_int define_sys;
34     nf_int subtype;
35     nf_bool is_expanded;
36     // ##2
37     nf_int dof_face[3];
38     // ##3
39     nf_float value[5];
40     // ##4
41     nf_int functions[5];
42     // ##5
43     nf_bool Enclosure;
44     nf_bool can_shade;
45     nf_bool can_be_shaded;
46     nf_int add1_id[2];
47     // ##6
48     nf_int dir_func[3];
49     // ##7
50     nf_float direction[3];
cstructural_load_rec()51     cstructural_load_rec() {}
52     cstructural_load_rec(const cstructural_load_rec& r);
53     cstructural_load_rec& operator=(const cstructural_load_rec& r);
54     void copy_from(const cstructural_load_rec& r);
55   };
56   // -----------------------------
57   class cgeometric_load_rec {
58    public:
59     // ##1
60     nf_int loadID;
61     nf_int loadtype;
62     nf_int color;
63     nf_int layer;
64     nf_int define_sys;
65     nf_int subtype;
66     nf_bool is_expanded;
67     // ##2
68     nf_int dof_face[3];
69     // ##3
70     nf_float value[5];
71     // ##4
72     nf_int functions[5];
73     // ##5
74     nf_bool Enclosure;
75     nf_bool can_shade;
76     nf_bool can_be_shaded;
77     nf_int addl_id[2];
78     // ##6
79     nf_int dir_func[3];
80     // ##7
81     nf_float direction[3];
82     // ##8
83     nf_int dir_mode;
84     nf_int dir_id;
85     // ##9
86     nf_float dir_base[3];
87     // ##10
88     nf_float dir_vector[3];
89     // ##11
90     nf_int var_mode;
91     nf_int var_funcID;
92     // ##12
93     nf_char var_name[256];
94     // ##13
95     nf_char var_equation[256];
96     // ##14-17
97     nf_float var_locate[4][3];
98     // ##18
99     nf_float var_value[4];
100     // ##19
101     nf_bool adjust_midside;
102     nf_bool is_expanded2;
cgeometric_load_rec()103     cgeometric_load_rec() {}
104     cgeometric_load_rec(const cgeometric_load_rec& r);
105     cgeometric_load_rec& operator=(const cgeometric_load_rec& r);
106     void copy_from(const cgeometric_load_rec& r);
107   };
108   // -----------------------------
109   class ctemp_load_rec {
110    public:
111     // ##1
112     nf_int ID;
113     nf_int color;
114     nf_int layer;
115     nf_float temp;
116     nf_float temp_co;
117     nf_int funcID;
118     nf_bool is_extended;
119   };
120   // -----------------------------
121 
122   // #1
123   nf_int setID;
124   // #2
125   nf_char title[26];
126   // #3
127   nf_int CSys;
128   nf_float Def_temp;
129   nf_bool temp_on;
130   nf_bool grav_on;
131   nf_bool omega_on;
132   nf_bool Ref_temp_on;
133   nf_float Ref_temp;
134   // #4,5
135   nf_float grav[6];
136   // #6
137   nf_float origin[3];
138   // #7
139   nf_float omega[3];
140   // #8
141   nf_float stef_boltz;
142   nf_float abs_temp;
143   nf_float free_cnv_exp;
144   nf_int rad_space_element;
145   // #9
146   nf_float fc_flu_cond;
147   nf_float fc_flu_cp;
148   nf_float fc_flu_vis;
149   nf_float fc_flu_dens;
150   // #10
151   nf_float fc_cons_coeff;
152   nf_float fc_reynolds;
153   nf_float fc_pran_in;
154   nf_float fc_pran_out;
155   // #11
156   nf_int tfc_flu_cond;
157   nf_int tfc_flu_cp;
158   nf_int tfc_flu_vis;
159   // #12
160   nf_bool alt_free_conv;
161   nf_bool fc_flu_flag;
162   nf_bool fc_conv_flow;
163   // #13
164   nf_float nl_arc_scale;
165   nf_float nl_arcmaxadj;
166   nf_float nl_arcminadj;
167   nf_float nl_bounds_rb;
168   // #14
169   nf_float nl_conv[3];
170   // #15
171   nf_float nl_fstress;
172   nf_float nl_lseach_tol;
173   nf_float nl_mxadj_init;
174   nf_float nl_max_rot;
175   nf_float nl_stab_tol;
176   nf_float nl_time_inc;
177   // #16
178   nf_float dyn_damp_ov;
179   nf_float dyn_dampW3;
180   nf_float dyn_dampW4;
181   nf_float dyn_keep_freq[2];
182   nf_float dyn_trans_dt;
183   nf_float dyn_min_freq;
184   nf_float dyn_max_freq;
185   nf_float dyn_cluster_freq;
186   // #17
187   nf_int nl_arc_const;
188   nf_int nl_arc_iter;
189   nf_int nl_arc_maxst;
190   nf_int nl_div_limit;
191   nf_int nl_dom_pdstp;
192   nf_int nl_increment;
193   nf_int nl_inter_out;
194   nf_int nl_kstep;
195   nf_int nl_mx_bisect;
196   // #18
197   nf_int nl_max_iter;
198   nf_int nl_max_lsrch;
199   nf_int nl_out_iter;
200   nf_int nl_quasi_newt;
201   nf_int nl_sol_strat;
202   nf_int nl_stiff_meth;
203   nf_int nl_skip_adj;
204   nf_int nl_sol_over;
205   // #19
206   nf_int dyn_freq_tab;
207   nf_int dyn_damptab;
208   nf_int dyn_keep_md;
209   nf_int dyn_tran_ts;
210   nf_int dyn_out_int;
211   nf_int dyn_rand_psd;
212   nf_int dyn_on_freq;
213   // #20
214   nf_bool nl_on;
215   nf_bool nl_conv_flag[3];
216   nf_bool nl_mnewt_ls;
217   nf_bool nl_mnewt_qn;
218   nf_bool nl_mnewt_bs;
219   // #21
220   nf_bool dyn_on;
221   nf_bool dyn_type;
222   nf_bool dyn_damp_method;
223   nf_bool dyn_massfrm;
224   nf_bool dyn_datarec;
225   nf_bool dyn_log_inter;
226   nf_int dyn_freq_type;
227   nf_int dyn_psd_type;
228   nf_int dyn_psd_interpol;
229   // -----------------------------------------
230   std::vector<cstructural_load_rec> structural_load_list;
231   std::vector<cgeometric_load_rec> geometric_load_list;
232   std::vector<ctemp_load_rec> ndtemp_load_list;
233   std::vector<ctemp_load_rec> eltemp_load_list;
234 
235  protected:
236   void read_structural_load(class CNFData* nfd,
237                             std::vector<cstructural_load_rec>& list);
238   void read_geometric_load(class CNFData* nfd,
239                            std::vector<cgeometric_load_rec>& list);
240   void read_temp_load(class CNFData* nfd, std::vector<ctemp_load_rec>& list);
241   void write_structural_load(class CNFData* nfd, FILE* fp,
242                              std::vector<cstructural_load_rec>& list);
243   void write_geometric_load(class CNFData* nfd, FILE* fp,
244                             std::vector<cgeometric_load_rec>& list);
245   void write_temp_load(class CNFData* nfd, FILE* fp,
246                        std::vector<ctemp_load_rec>& list);
247 };
248 
249 #endif
250