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