64 void cgns_set_postraiter_domain() { postraiter_domaine_ =
true; }
65 void cgns_set_is_dual_domain() { is_dual_ =
true; }
66 void cgns_set_is_deformable_domain() { is_deformable_ =
true; }
67 void cgns_set_lagrangian_domain() { is_lagrangian_ =
true, is_deformable_ =
true; }
68 void cgns_set_loc_vector(
const std::vector<std::string>& vec) { loc_vect_ = vec; }
69 void cgns_set_base_name(
const Nom& );
70 void cgns_set_discr_type(
const Nom& type) { discr_type_ = type.
getString(); }
71 void cgns_open_file();
73 void cgns_add_time(
const double );
74 void cgns_write_domaine_dual(
const Nom& ,
const int ,
const Nom& nom_dom =
"??");
75 void cgns_write_domaine(
const Domaine * ,
const Nom& ,
const DoubleTab& ,
const IntTab& ,
const Motcle& );
76 void cgns_write_field(
const Domaine&,
const Noms&,
double,
const Nom&,
const Nom&,
const Nom&,
const DoubleTab&);
77 void cgns_resetTime(
const double t,
const std::string& dirname,
const Nom& basefile);
78 void finir_ecriture(
double);
82 void fill_infos_loc();
83 void update_grid_name();
84 inline bool is_comm_group_mode()
const
90 inline bool is_linked_files_comm_group_mode()
const
96 inline bool is_single_file_comm_group_mode()
const
102 Ecrire_CGNS_helper cgns_helper_;
104 OBS_PTR(std::vector<std::string>) loc_vect_;
105 std::vector<TRUST_2_CGNS> T2CGNS_;
107 std::map<std::string, Nom> fld_loc_map_;
108 std::vector<Nom> doms_written_;
109 std::vector<std::string> baseFile_name_vect_;
110 std::unordered_set<std::string> fieldName_dumped_;
111 std::string solname_elem_ =
"", solname_som_ =
"", solname_faces_ =
"", baseFile_name_ =
"";
112 std::string grid_name_ =
"", grid_name_loc_ =
"";
113 std::string discr_type_ =
"";
114 std::vector<double> time_post_;
115 std::vector<int> baseId_, zoneId_;
117 bool need_post_field_ =
true;
118 bool has_elem_field_ =
false, has_faces_field_ =
false, has_som_field_ =
false;
119 bool solname_elem_written_ =
false, solname_som_written_ =
false, solname_faces_written_ =
false, grid_name_written_ =
false;
120 bool postraiter_domaine_ =
false;
121 bool first_time_post_ =
true;
124 int flowId_elem_ = 0, fieldId_elem_ = 0;
125 int flowId_som_ = 0, fieldId_som_ = 0;
126 int flowId_faces_ = 0, fieldId_faces_ = 0;
129 bool grid_file_opened_ =
false, solution_file_opened_ =
false;
130 std::vector<std::string> baseZone_name_;
131 std::vector<std::vector<std::string>> connectname_;
132 std::vector<std::vector<cgsize_t>> sizeId_;
133 std::vector<int> cellDim_;
136 std::vector<std::vector<int>> zoneId_par_;
139 void gather_local_sizeId_for_comm_group();
140 int proc_maitre_local_comm_ = -123;
141 std::vector<int> vec_proc_maitre_local_comm_, unique_vec_proc_maitre_local_comm_;
142 std::vector<std::vector<cgsize_t>> sizeId_som_local_comm_, sizeId_elem_local_comm_;
145 IntTab fs_dual_, ef_dual_;
146 bool is_dual_ =
false;
147 inline IntTab& get_fs_dual() {
return fs_dual_;}
148 inline const IntTab& get_fs_dual()
const {
return fs_dual_;}
149 inline IntTab& get_ef_dual() {
return ef_dual_;}
150 inline const IntTab& get_ef_dual()
const {
return ef_dual_;}
153 void cgns_fill_field_loc_map(
const Nom&);
156 bool is_lagrangian_ =
false;
157 void cgns_write_final_link_file_lagrangian();
158 void link_multi_loc_support_lagrangian();
161 void link_multi_loc_support_pb_deformable();
162 void init_proc_maitre_local_comm();
163 bool is_deformable_ =
false, multi_loc_deformable_support_linked_ =
false;
166 void cgns_fill_info_grid_link_file(
const char*,
const CGNS_TYPE&,
const int,
const int,
const int,
const bool);
167 void cgns_open_grid_base_link_file();
168 void cgns_init_solution_link_file(
const std::string& ,
const Nom&);
169 void cgns_open_solution_link_file(
const double);
170 void cgns_write_final_link_file();
171 void cgns_write_final_link_file_comm_group();
172 void cgns_write_final_link_file_for_single_file_comm_group();
173 void cgns_close_grid_or_solution_link_file(
const double,
const TYPE_LINK_CGNS,
bool is_cerr =
true);
174 void add_new_linked_base(
const std::string&,
const Nom&);
177 void cgns_write_domaine_seq(
const Domaine * ,
const Nom& ,
const DoubleTab& ,
const IntTab& ,
const Motcle& );
178 void cgns_write_domaine_deformable_seq(
const Domaine * ,
const Nom& ,
const DoubleTab& ,
const IntTab& ,
const Motcle& );
179 void cgns_write_field_seq(
const int,
const double,
const Nom&,
const Nom&,
const Nom&,
const Nom&,
const DoubleTab&);
182 void cgns_write_domaine_par_over_zone(
const Domaine * ,
const Nom& ,
const DoubleTab& ,
const IntTab& ,
const Motcle& );
183 void cgns_write_field_par_over_zone(
const int,
const double,
const Nom&,
const Nom&,
const Nom&,
const Nom&,
const DoubleTab&);
186 void cgns_write_domaine_par_in_zone(
const Domaine * ,
const Nom& ,
const DoubleTab& ,
const IntTab& ,
const Motcle& );
187 void cgns_write_domaine_deformable_par_in_zone(
const Domaine * ,
const Nom& ,
const DoubleTab& ,
const IntTab& ,
const Motcle& );
188 void cgns_write_field_par_in_zone(
const int,
const double,
const Nom&,
const Nom&,
const Nom&,
const Nom&,
const DoubleTab&);
189 void cgns_build_connectivity_sections_par_in_zone(
const CGNS_TYPE cgns_type_elem,
const bool is_polyedre,
190 const TRUST_2_CGNS& TRUST2CGNS,
const int ind_base_zone,
191 const int ne_tot,
int& sectionId,
int& sectionId2 )
const;
192 void cgns_write_connectivity_par_in_zone(
const CGNS_TYPE cgns_type_elem,
const bool is_polyedre,
193 const TRUST_2_CGNS& TRUST2CGNS,
const int ind_base_zone,
194 const int sectionId,
const int sectionId2)
const;
197 void cgns_write_iters();
198 void ensure_modify_open_singlefile();
199 void cgns_flush_to_disk()
const;
200 bool ensure_modify_done_ =
false;
201 bool singlefile_open_ =
false;
202 size_t step_single_file_counter_ = 0;
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.