16#include <IJK_One_Dimensional_Subproblems.h>
17#include <IJK_Field_vector.h>
18#include <Probleme_FTD_IJK.h>
19#include <IJK_switch_FT.h>
20#include <IJK_Bubble_tools.h>
21#include <IJK_Thermal_base.h>
22#include <IJK_Thermal_Subresolution.h>
36Sortie& IJK_One_Dimensional_Subproblems::printOn(
Sortie& os )
const
41Entree& IJK_One_Dimensional_Subproblems::readOn(
Entree& is )
48 const double& pre_factor_subproblems_number,
49 const int& remove_append_subproblems,
50 const int& use_sparse_matrix)
75 for (
int dir=0; dir<3; dir++)
104 if (!(ref_ijk_ft_->eq_ns().get_disable_convection_qdm() && ref_ijk_ft_->eq_ns().get_disable_diffusion_qdm()))
113 (*this).add(subproblem);
124 const int total_subproblems = (*this).size();
125 for (
int i=0; i<(total_subproblems - active_subproblems); i++)
126 (*this).suppr((*this).dernier());
133 for (
int i=0; i<n; i++)
136 (*this).add(subproblem);
146 ArrOfInt indices(proc_number);
149 mp_sum_for_each_item(indices);
150 ArrOfInt indices_ini(proc_number);
151 ArrOfInt indices_max(proc_number);
153 indices_max(0) = indices(0);
154 for (
int i=1; i<proc_number; i++)
156 indices_ini(i) = indices_ini(i-1) + indices(i-1);
157 indices_max(i) = indices_max(i-1) + indices(i);
170 (*this)[itr].set_global_index(index_counter);
252 const double& indicator,
253 double global_time_step,
256 const IJK_Field_vector3_double& velocity,
257 const IJK_Field_vector3_double& velocity_ft,
258 const IJK_Field_double& pressure)
269 ArrOfDouble bubble_rising_vector(3);
270 ArrOfDouble normal_vector(3);
271 ArrOfDouble facet_barycentre(3);
272 ArrOfDouble bubble_barycentre(3);
276 Cerr <<
"Mixed cell indices (i,j,k) : (" << i <<
";" << j <<
";" << k <<
")" << finl;
281 Cerr <<
"compo_connex : " << compo_connex << finl;
282 Cerr <<
"compo_connex_ghost : " << compo_connex_ghost << finl;
292 const double bubble_rising_velocity = (*ref_thermal_subresolution.
rising_velocities_)(compo_connex);
294 for (
int dir=0; dir < 3; dir++)
298 bubble_rising_vector(dir) = (*ref_thermal_subresolution.
rising_vectors_)(compo_connex, dir);
299 bubble_barycentre(dir) = (*ref_thermal_subresolution.
bubbles_barycentre_)(compo_connex_ghost, dir);
302 const int total_subproblems = (*this).size();
306 (*this).add(subproblem);
323 bubble_rising_velocity,
324 bubble_rising_vector,
354 const int nk_tot = ref_ijk_ft_->get_domaine().get_nb_elem_tot(2);
356 if (ref_ijk_ft_->schema_temps_ijk().get_tstep() == 0)
358 for (
int ij = 0; ij<2; ij++)
365 for (
int ij = 0; ij<2; ij++)
372 for (
int k=0; k<nk_tot; k++)
384 for (
int k=0; k<nk_tot; k++)
386 for (
int ij = 0; ij<2; ij++)
388 for (
int point=0; point<(*points_per_thermal_subproblem_); point++)
391 for (
int compo=0; compo<3; compo++)
397 for (
int ij = 0; ij<2; ij++)
399 for (
int point=0; point<(*points_per_thermal_subproblem_); point++)
402 for (
int compo=0; compo<3; compo++)
416 const int ni = ref_ijk_ft_->get_interface().I().ni();
417 const int nj = ref_ijk_ft_->get_interface().I().nj();
418 const int nk = ref_ijk_ft_->get_interface().I().nk();
420 const int offset_i = ref_ijk_ft_->get_domaine().get_offset_local(0);
421 const int offset_j = ref_ijk_ft_->get_domaine().get_offset_local(1);
422 const int offset_k = ref_ijk_ft_->get_domaine().get_offset_local(2);
427 (*this)[itr].get_ijk_indices(i, j, k);
428 if ((i==ni-1 || i==0) || (j==nj-1 || j==0) || (k==nk-1 || k==0))
430 const int i_global = i + offset_i;
431 const int j_global = j + offset_j;
432 const int k_global = k + offset_k;
438 for (
int point=0; point<(*points_per_thermal_subproblem_); point++)
441 for (
int compo=0; compo<3; compo++)
457 for (
int k=0; k<size_k_layers; k++)
460 int size_array_global = size_array;
462 ArrOfInt overall_numerotation(nb_procs);
463 ArrOfInt start_indices(nb_procs);
464 overall_numerotation(proc_num) = size_array;
465 mp_sum_for_each_item(overall_numerotation);
467 for (l=1; l<overall_numerotation.
size_array(); l++)
468 start_indices(l) = start_indices(l-1) + overall_numerotation(l-1);
479 global_indices_i_tmp.
resize(size_array_global);
480 global_indices_j_tmp.
resize(size_array_global);
481 global_indicator.
resize(size_array_global);
483 global_indices_i_tmp *= 0;
484 global_indices_j_tmp *= 0;
485 global_indicator *= 0.;
487 for (l=0; l<local_indices_i_tmp.
size_array(); l++)
489 global_indices_i_tmp(start_indices(proc_num) + l) = local_indices_i_tmp(l);
490 global_indices_j_tmp(start_indices(proc_num) + l) = local_indices_j_tmp(l);
491 global_indicator(start_indices(proc_num) + l) = local_indicator(l);
493 mp_sum_for_each_item(global_indices_i_tmp);
494 mp_sum_for_each_item(global_indices_j_tmp);
495 mp_sum_for_each_item(global_indicator);
497 for (
int point=0; point<(*points_per_thermal_subproblem_); point++)
501 global_temperature.
resize(size_array_global);
502 global_temperature *= 0.;
503 for (l=0; l<local_temperature.
size_array(); l++)
504 global_temperature(start_indices(proc_num) + l) = local_temperature(l);
505 mp_sum_for_each_item(global_temperature);
508 for (
int compo=0; compo<3; compo++)
514 global_velocity.
resize(size_array_global);
515 global_normal_compo.
resize(size_array_global);
516 global_velocity *= 0.;
517 global_normal_compo *= 0.;
520 global_velocity(start_indices(proc_num) + l) = local_velocity(l);
521 global_normal_compo(start_indices(proc_num) + l) = local_normal_compo(l);
523 mp_sum_for_each_item(global_velocity);
524 mp_sum_for_each_item(global_normal_compo);
532 const int ni = ref_ijk_ft_->get_interface().I().ni();
533 const int nj = ref_ijk_ft_->get_interface().I().nj();
534 const int nk = ref_ijk_ft_->get_interface().I().nk();
536 const int offset_i = ref_ijk_ft_->get_domaine().get_offset_local(0);
537 const int offset_j = ref_ijk_ft_->get_domaine().get_offset_local(1);
538 const int offset_k = ref_ijk_ft_->get_domaine().get_offset_local(2);
540 const int ni_tot = ref_ijk_ft_->get_domaine().get_nb_elem_tot(0);
541 const int nj_tot = ref_ijk_ft_->get_domaine().get_nb_elem_tot(1);
542 const int nk_tot = ref_ijk_ft_->get_domaine().get_nb_elem_tot(2);
549 for (
int k_global=0; k_global<size_k_layers; k_global++)
552 for (
int ival=0; ival<size_val; ival++)
559 int i = i_global - offset_i;
560 int j = j_global - offset_j;
561 int k = k_global - offset_k;
562 if (i_global == ni_tot-1 && offset_i==0)
564 if (i_global == 0 && (ni + offset_i==ni_tot))
566 if (j_global == nj_tot-1 && offset_j==0)
568 if (j_global == 0 && (nj + offset_j==nj_tot))
570 if (k_global == nk_tot-1 && offset_k==0)
572 if (k_global == 0 && (nk + offset_k==nk_tot))
577 const int i_dir = (i==-1 || i==ni) && (0 <= j && j < nj) && (0 <= k && k < nk);
578 const int j_dir = (0 <= i && i < ni) && (j==-1 || j==nj) && (0 <= k && k < nk);
579 const int k_dir = (0 <= i && i < ni) && (0 <= j && j < nj) && (k==-1 || k==nk);
580 if (i_dir || j_dir || k_dir)
585 DoubleVect temperature_prev;
587 for (
int point=0; point<(*points_per_thermal_subproblem_); point++)
595 for (
int compo=0; compo<3; compo++)
611 for (
int k_global=0; k_global<size_k_layers; k_global++)
614 for (
int ival=0; ival<size_val; ival++)
621 int k = k_global - offset_k;
634 const int i_dir = (i == ni-1 || i == 0);
635 const int j_dir = (j == nj-1 || j == 0);
636 const int k_dir = (k == nk-1 || k == 0);
637 if (i_dir || j_dir || k_dir)
642 DoubleVect temperature_prev;
644 for (
int point=0; point<(*points_per_thermal_subproblem_); point++)
652 for (
int compo=0; compo<3; compo++)
669 ArrOfDouble& thermal_flux_out,
670 IJK_Field_vector3_double& interfacial_heat_flux_current)
673 for (
int c=0; c<3; c++)
675 interfacial_heat_flux_dispatched[c].data() = 0.;
676 interfacial_heat_flux_current[c].data() = 0.;
678 for (
int l=0; l<4; l++)
679 ijk_indices_out[l].reset();
680 thermal_flux_out.
reset();
686 interfacial_heat_flux_current);
695 interfacial_heat_flux_current);
699 ArrOfDouble& thermal_flux_out)
705 const int size_array = thermal_flux_out.
size_array();
706 int size_array_global = size_array;
709 ArrOfInt overall_numerotation(nb_procs);
710 ArrOfInt start_indices(nb_procs);
711 overall_numerotation(proc_num) = size_array;
712 mp_sum_for_each_item(overall_numerotation);
714 for (l=1; l<overall_numerotation.
size_array(); l++)
715 start_indices(l) = start_indices(l-1) + overall_numerotation(l-1);
719 Cerr <<
"Size array" << size_array << finl;
720 Cerr <<
"Size array global" << size_array_global << finl;
721 Cerr <<
"Overall_numerotation" << overall_numerotation(0) <<
"-" << overall_numerotation(1) << finl;
724 ArrOfInt local_indices_i_tmp;
725 ArrOfInt local_indices_j_tmp;
726 ArrOfInt local_indices_k_tmp;
727 ArrOfInt local_indices_dir_tmp;
728 ArrOfDouble local_values_tmp;
730 ArrOfInt& global_indices_i_tmp = ijk_indices_out[0];
731 ArrOfInt& global_indices_j_tmp = ijk_indices_out[1];
732 ArrOfInt& global_indices_k_tmp = ijk_indices_out[2];
733 ArrOfInt& global_indices_dir_tmp = ijk_indices_out[3];
734 ArrOfDouble& global_values_tmp = thermal_flux_out;
736 local_indices_i_tmp = global_indices_i_tmp;
737 local_indices_j_tmp = global_indices_j_tmp;
738 local_indices_k_tmp = global_indices_k_tmp;
739 local_indices_dir_tmp = global_indices_dir_tmp;
740 local_values_tmp = global_values_tmp;
742 global_indices_i_tmp.
resize(size_array_global);
743 global_indices_j_tmp.
resize(size_array_global);
744 global_indices_k_tmp.
resize(size_array_global);
745 global_indices_dir_tmp.
resize(size_array_global);
746 global_values_tmp.
resize(size_array_global);
748 global_indices_i_tmp *= 0;
749 global_indices_j_tmp *= 0;
750 global_indices_k_tmp *= 0;
751 global_indices_dir_tmp *= 0;
752 global_values_tmp *= 0;
754 for (l=0; l<local_indices_i_tmp.
size_array(); l++)
756 global_indices_i_tmp(start_indices(proc_num) + l) = local_indices_i_tmp(l);
757 global_indices_j_tmp(start_indices(proc_num) + l) = local_indices_j_tmp(l);
758 global_indices_k_tmp(start_indices(proc_num) + l) = local_indices_k_tmp(l);
759 global_indices_dir_tmp(start_indices(proc_num) + l) = local_indices_dir_tmp(l);
760 global_values_tmp(start_indices(proc_num) + l) = local_values_tmp(l);
763 mp_sum_for_each_item(global_indices_i_tmp);
764 mp_sum_for_each_item(global_indices_j_tmp);
765 mp_sum_for_each_item(global_indices_k_tmp);
766 mp_sum_for_each_item(global_indices_dir_tmp);
767 mp_sum_for_each_item(global_values_tmp);
772 const ArrOfDouble& thermal_flux_out,
773 IJK_Field_vector3_double& interfacial_heat_flux_dispatched)
775 const int ni = ref_ijk_ft_->get_interface().I().ni();
776 const int nj = ref_ijk_ft_->get_interface().I().nj();
777 const int nk = ref_ijk_ft_->get_interface().I().nk();
779 const Domaine_IJK& splitting_ns = ref_ijk_ft_->get_interface().I().get_domaine();
784 const int size_array = thermal_flux_out.
size_array();
785 for (
int m=0; m<size_array; m++)
787 const int i_global = ijk_indices_out[0][m];
788 const int j_global = ijk_indices_out[1][m];
789 const int k_global = ijk_indices_out[2][m];
790 const int i = i_global - offset_i;
791 const int j = j_global - offset_j;
792 const int k = k_global - offset_k;
793 if ((0 <= i && i < ni) && (0 <= j && j < nj) && (0 <= k && k < nk))
795 const int dir = ijk_indices_out[3][m];
796 const double flux_val = thermal_flux_out[m];
797 interfacial_heat_flux_dispatched[dir](i,j,k) += flux_val;
806 for (
int c=0; c<3; c++)
808 interfacial_heat_flux_dispatched[c].data() = 0;
809 ijk_indices_out[c].reset();
810 thermal_flux_out[c].reset();
825 const int count_index_i = (int) subproblem_to_ijk_indices.count(index_i);
826 int count_index_j = 0;
827 int count_index_k = 0;
830 count_index_j = (int) subproblem_to_ijk_indices.at(index_i).count(index_j);
832 count_index_k = (int) subproblem_to_ijk_indices.at(index_i).at(index_j).count(index_k);
834 return (count_index_i && count_index_j && count_index_k);
839 if (!enable_probe_collision_detection)
851 (*
this)[itr].interpolate_indicator_on_probes();
860 int disable_probe_collision = 0;
861 int counter_enabled = 0;
864 disable_probe_collision = (*this)[itr].get_disable_probe_collision();
865 if (disable_probe_collision)
868 (*this)[itr].set_reference_gfm_on_probes(1);
872 (*this)[itr].set_subproblem_index(counter_enabled);
894 (*
this)[itr].interpolate_project_velocities_on_probes();
900 (*
this)[itr].reajust_probe_length();
906 (*
this)[itr].compute_modified_probe_length_condition(probe_length_condition);
911 if (probe_variations_priority)
919 int probe_variations_enabled = 0;
922 return probe_variations_enabled;
927 int probe_variations_enabled = 1;
930 return probe_variations_enabled;
936 (*
this)[itr].compute_modified_probe_length(probe_variations_enabled);
946 const double& interfacial_boundary_condition_value,
947 const int& impose_boundary_condition_interface_from_simulation,
948 const int& boundary_condition_end,
949 const double& end_boundary_condition_value,
950 const int& impose_user_boundary_condition_end_value)
954 interfacial_boundary_condition_value,
955 impose_boundary_condition_interface_from_simulation,
956 boundary_condition_end,
957 end_boundary_condition_value,
958 impose_user_boundary_condition_end_value);
1071 const int& flux_type)
1117 const int& temperature)
const
1164 const int flux_type,
1175 const std::vector<std::string>& key_results_double)
1179 probe_header = key_results_int[0];
1180 const int size_int = (int) key_results_int.size();
1181 const int size_double = (int) key_results_double.size();
1182 for (i=1; i<size_int; i++)
1183 probe_header += (
"\t" + key_results_int[i]);
1184 for (i=0; i<size_double; i++)
1185 probe_header += (
"\t" + key_results_double[i]);
1186 return probe_header;
1190 const std::vector<std::string>& key_results_double,
1191 std::map<std::string, ArrOfInt>& results_probes_int,
1192 std::map<std::string, ArrOfDouble>& results_probes_double)
1196 const int size_int = (int) key_results_int.size();
1197 const int size_double = (int) key_results_double.size();
1199 for (i=0; i<size_int; i++)
1200 results_probes_int[key_results_int[i]] = ArrOfInt(size_outputs);
1201 for (i=0; i<size_double; i++)
1202 results_probes_double[key_results_double[i]] = ArrOfDouble(size_outputs);
1206 const std::vector<std::string>& key_results_int,
1207 const std::vector<std::string>& key_results_double,
1208 std::map<std::string, ArrOfInt>& results_probes_int,
1209 std::map<std::string, ArrOfDouble>& results_probes_double)
1212 const int size_int = (int) results_probes_int.size();
1213 const int size_double = (int) results_probes_double.size();
1215 for (j=0; j<size_outputs; j++)
1217 for (i=0; i<size_int; i++)
1218 fic << results_probes_int[key_results_int[i]](j) <<
" ";
1219 for (i=0; i<size_double-1; i++)
1220 fic << results_probes_double[key_results_double[i]](j) <<
" ";
1221 fic << results_probes_double[key_results_double[size_double-1]](j) << finl;
1226 const Nom& interfacial_quantities_thermal_probes,
1227 const Nom& shell_quantities_thermal_probes,
1228 const Nom& overall_bubbles_quantities,
1229 const Nom& local_quantities_thermal_probes_time_index_folder)
1232 std::map<std::string, ArrOfDouble> results_probes_interf_double;
1233 std::map<std::string, ArrOfInt> results_probes_interf_int;
1234 std::map<std::string, ArrOfDouble> results_probes_shell_double;
1235 std::map<std::string, ArrOfInt> results_probes_shell_int;
1237 std::vector<std::string> key_results_int = {
"tstep",
"thermal_rank",
"post_pro_index",
"global_subproblem",
"local_subproblem"};
1238 std::vector<std::string> key_results_double = {
"time",
1241 "t1x",
"t1y",
"t1z",
"t2x",
"t2y",
"t2z",
1242 "s1x",
"s1y",
"s1z",
"s2x",
"s2y",
"s2z",
1243 "r_sph",
"theta_sph",
"phi_sph",
1244 "temperature_interp",
"temperature_sol",
"temperature_prev",
1245 "temperature_gradient",
"temperature_gradient_sol",
1246 "temperature_gradient_gfm",
1247 "temperature_double_deriv",
"temperature_double_deriv_sol",
1248 "temperature_gradient_tangential",
"temperature_gradient_tangential2",
1249 "temperature_gradient_tangential_rise",
"temperature_gradient_azymuthal",
1250 "temperature_diffusion_hessian_cartesian_trace",
1251 "temperature_diffusion_hessian_trace",
1252 "radial_temperature_diffusion",
1253 "radial_temperature_diffusion_sol",
1254 "tangential_temperature_diffusion",
1255 "radial_scale_factor_inerp",
"radial_scale_factor_sol",
1256 "radial_convection_interp",
"radial_convection_sol",
1257 "tangential_convection_first",
"tangential_convection_second",
1258 "surface",
"thermal_flux",
1259 "thermal_flux_gfm",
"thermal_flux_raw",
1260 "thermal_flux_lrs",
"thermal_flux_max",
1261 "lambda_liq",
"alpha_liq",
"prandtl_liq",
1262 "nusselt_number",
"nusselt_number_liquid_temperature",
1263 "nusselt_number_integrand",
"nusselt_number_liquid_temperature_integrand",
1267 "u_r",
"u_r_corr",
"u_r_static",
"u_r_advected",
1268 "u_theta",
"u_theta_corr",
"u_theta_static",
"u_theta_advected",
1269 "u_theta2",
"u_theta2_corr",
"u_theta2_static",
"u_theta2_advected",
1270 "u_theta_rise",
"u_theta_rise_corr",
"u_theta_rise_static",
"u_theta_rise_advected",
1271 "u_phi",
"u_phi_corr",
"u_phi_static",
"u_phi_advected",
1272 "du_r_dr",
"du_theta_dr",
"du_theta2_dr",
"du_theta_rise_dr",
"du_phi_dr",
1273 "total_surface",
"total_volume",
"radius_from_surface",
"radius_from_volume",
1274 "delta_temperature",
"mean_liquid_temperature",
1275 "rising_dir_x",
"rising_dir_y",
"rising_dir_z",
1276 "rising_vel_x",
"rising_vel_y",
"rising_vel_z",
1283 results_probes_interf_int,
1284 results_probes_interf_double);
1287 results_probes_shell_int,
1288 results_probes_shell_double);
1292 const int size_int = (int) key_results_int.size();
1293 const int size_double = (int) key_results_double.size();
1296 for (
int itr=0; itr < size_outputs; itr++)
1302 Cerr <<
"Post-process this probe on proc:" <<
Process::me() << finl;
1303 (*this)[itr -
index_ini_].retrieve_interfacial_quantities(rank,
1307 results_probes_interf_int,
1308 results_probes_interf_double);
1309 (*this)[itr -
index_ini_].retrieve_shell_quantities(rank,
1313 results_probes_shell_int,
1314 results_probes_shell_double);
1317 for (i=0; i<size_int; i++)
1319 ArrOfInt& array_int_interf_tmp = results_probes_interf_int[key_results_int[i]];
1320 mp_sum_for_each_item(array_int_interf_tmp);
1321 ArrOfInt& array_int_shell_tmp = results_probes_shell_int[key_results_int[i]];
1322 mp_sum_for_each_item(array_int_shell_tmp);
1324 for (i=0; i<size_double; i++)
1326 ArrOfDouble& array_double_interf_tmp = results_probes_interf_double[key_results_double[i]];
1327 mp_sum_for_each_item(array_double_interf_tmp);
1328 ArrOfDouble& array_double_shell_tmp = results_probes_shell_double[key_results_double[i]];
1329 mp_sum_for_each_item(array_double_shell_tmp);
1334 const int reset = 1;
1335 const int last_time_index = ref_ijk_ft_->schema_temps_ijk().get_tstep() + (*latastep_reprise_);
1336 const int max_digit = 3;
1337 const int max_digit_time = 8;
1338 const int max_rank_digit = rank < 1 ? 1 : (int) (log10(rank) + 1);
1339 const int nb_digit_tstep = last_time_index < 1 ? 1 : (int) (log10(last_time_index) + 1);
1342 Cerr <<
"Post-process interfacial quantities" << finl;
1343 Nom probe_interf_name =
Nom(
"_thermal_rank_") +
Nom(std::string(max_digit - max_rank_digit,
'0')) +
Nom(rank)
1344 +
Nom(
"_thermal_subproblems_interfacial_quantities_time_index_")
1345 +
Nom(std::string(max_digit_time - nb_digit_tstep,
'0')) +
Nom(last_time_index) +
Nom(
".out");
1346 Nom probe_shell_name =
Nom(
"_thermal_rank_") +
Nom(std::string(max_digit - max_rank_digit,
'0')) +
Nom(rank)
1347 +
Nom(
"_thermal_subproblems_shell_quantities_time_index_")
1348 +
Nom(std::string(max_digit_time - nb_digit_tstep,
'0')) +
Nom(last_time_index) +
Nom(
".out");
1352 SFichier fic_interf = Open_file_folder(interfacial_quantities_thermal_probes, probe_interf_name, probe_header, reset);
1356 results_probes_interf_int,
1357 results_probes_interf_double);
1359 SFichier fic_shell = Open_file_folder(shell_quantities_thermal_probes, probe_shell_name, probe_header, reset);
1363 results_probes_shell_int,
1364 results_probes_shell_double);
1369 Cerr <<
"Post-process local radial quantities" << finl;
1371 (*
this)[itr].thermal_subresolution_outputs_parallel(rank, local_quantities_thermal_probes_time_index_folder);
1374 Cerr <<
"Post-process overall bubble quantities" << finl;
1379 const Nom& interfacial_quantities_thermal_probes,
1380 const Nom& shell_quantities_thermal_probes,
1381 const Nom& overall_bubbles_quantities,
1382 const Nom& local_quantities_thermal_probes_time_index_folder)
1387 Cerr <<
"Post-processing on the probes" << finl;
1388 const int reset = 1;
1389 const int last_time_index = ref_ijk_ft_->schema_temps_ijk().get_tstep() + (*latastep_reprise_);
1390 Nom probe_header =
Nom(
"tstep\tthermal_rank\tpost_pro_index\tglobal_subproblem\tlocal_subproblem\ttime"
1391 "\tcoord\tnx\tny\tnz\tt1x\tt1y\tt2z\tt2x\tt2y\tt2z\ts1x\ts1y\ts1z\ts2x\ts2y\ts2z"
1392 "\tr_sph\ttheta_sph\tphi_sph"
1393 "\ttemperature_interp\ttemperature_sol\ttemperature_prev"
1394 "\ttemperature_gradient\ttemperature_gradient_sol"
1395 "\temperature_gradient_gfm"
1396 "\ttemperature_double_deriv\ttemperature_double_deriv_sol"
1397 "\ttemperature_gradient_tangential\ttemperature_gradient_tangential2"
1398 "\ttemperature_gradient_tangential_rise\ttemperature_gradient_azymuthal"
1399 "\ttemperature_diffusion_hessian_cartesian_trace"
1400 "\ttemperature_diffusion_hessian_trace"
1401 "\tradial_temperature_diffusion"
1402 "\tradial_temperature_diffusion_sol"
1403 "\ttangential_temperature_diffusion"
1404 "\tradial_scale_factor_interp\tradial_scale_factor_sol"
1405 "\tradial_convection_interp\tradial_convection_sol"
1406 "\ttangential_convection_first\ttangential_convection_second"
1407 "\tsurface\tthermal_flux\tlambda_liq\talpha_liq\tprandtl_liq"
1408 "\tnusselt_number\tnusselt_number_liquid_temperature"
1409 "\tnusselt_number_integrand\tnusselt_number_liquid_temperature_integrand"
1413 "\tu_r\tu_r_corr\tu_r_static\tu_r_advected"
1414 "\tu_theta\tu_theta_corr\tu_theta_static\tu_theta_advected"
1415 "\tu_theta2\tu_theta2_corr\tu_theta2_static\tu_theta2_advected"
1416 "\tu_theta_rise\tu_theta_rise_corr\tu_theta_rise_static\tu_theta_rise_advected"
1417 "\tu_phi\tu_phi_corr\tu_phi_static\tu_phi_advected"
1418 "\tdu_r_dr\tdu_theta_dr\tdu_theta2_dr\tdu_theta_rise_dr\tdu_phi_dr"
1419 "\ttotal_surface\ttotal_volume\tradius_from_surface\tradius_from_volume"
1420 "\tdelta_temperature\tmean_liquid_temperature"
1421 "\trising_dir_x\trising_dir_y\trising_dir_z"
1422 "\trising_vel_x\trising_vel_y\trising_vel_z"
1425 const int max_digit = 3;
1426 const int max_digit_time = 8;
1427 const int max_rank_digit = rank < 1 ? 1 : (int) (log10(rank) + 1);
1428 const int nb_digit_tstep = last_time_index < 1 ? 1 : (int) (log10(last_time_index) + 1);
1430 Nom interf_probe_name =
Nom(
"_thermal_rank_") +
Nom(std::string(max_digit - max_rank_digit,
'0')) +
Nom(rank)
1431 +
Nom(
"_thermal_subproblems_interfacial_quantities_time_index_")
1432 +
Nom(std::string(max_digit_time - nb_digit_tstep,
'0')) +
Nom(last_time_index) +
Nom(
".out");
1433 Nom shell_probe_name =
Nom(
"_thermal_rank_") +
Nom(std::string(max_digit - max_rank_digit,
'0')) +
Nom(rank)
1434 +
Nom(
"_thermal_subproblems_shell_quantities_time_index_")
1435 +
Nom(std::string(max_digit_time - nb_digit_tstep,
'0')) +
Nom(last_time_index) +
Nom(
".out");
1438 if (proc_number != 1)
1441 Nom my_process_string =
Nom(
".processor_") +
Nom(my_process_number);
1442 interf_probe_name += my_process_string;
1443 shell_probe_name += my_process_string;
1449 SFichier fic_interf = Open_file_folder(interfacial_quantities_thermal_probes, interf_probe_name, probe_header, reset);
1450 SFichier fic_shell = Open_file_folder(shell_quantities_thermal_probes, shell_probe_name, probe_header, reset);
1453 (*
this)[itr].thermal_subresolution_outputs(fic_interf,
1456 local_quantities_thermal_probes_time_index_folder);
1465 double min_temperature = 1e20;
1471 return min_temperature;
1476 double max_temperature = -1e20;
1482 return max_temperature;
1487 double min_temperature = -1e20;
1493 return min_temperature;
1498 double max_temperature = -1e20;
1504 return max_temperature;
1509 double min_euler_time_step = 1e20;
1510 nb_iter_explicit = 1;
1513 min_euler_time_step = std::min(min_euler_time_step, (*
this)[itr].get_local_time_step_round());
1514 nb_iter_explicit = std::max(nb_iter_explicit, (*
this)[itr].get_nb_iter_explicit());
1518 return min_euler_time_step;
1523 double max_local_fourier_time_step_probe_length = 0.;
1526 max_local_fourier_time_step_probe_length = std::max(max_local_fourier_time_step_probe_length,
1527 (*
this)[itr].get_local_fourier_time_step_probe_length());
1529 max_local_fourier_time_step_probe_length =
Process::mp_max(max_local_fourier_time_step_probe_length);
1530 return max_local_fourier_time_step_probe_length;
1536 double max_local_cfl_time_step_probe_length = 0.;
1539 max_local_cfl_time_step_probe_length = std::max(max_local_cfl_time_step_probe_length,
1540 (*
this)[itr].get_local_cfl_time_step_probe_length());
1542 max_local_cfl_time_step_probe_length =
Process::mp_max(max_local_cfl_time_step_probe_length);
1543 return max_local_cfl_time_step_probe_length;
1548 double min_local_fourier_time_step_probe_length = 1.e20;
1551 min_local_fourier_time_step_probe_length = std::min(min_local_fourier_time_step_probe_length,
1552 (*
this)[itr].get_local_fourier_time_step_probe_length());
1554 min_local_fourier_time_step_probe_length =
Process::mp_min(min_local_fourier_time_step_probe_length);
1555 return min_local_fourier_time_step_probe_length;
1561 double min_local_cfl_time_step_probe_length = 1.e20;
1564 min_local_cfl_time_step_probe_length = std::min(min_local_cfl_time_step_probe_length,
1565 (*
this)[itr].get_local_cfl_time_step_probe_length());
1567 min_local_cfl_time_step_probe_length =
Process::mp_min(min_local_cfl_time_step_probe_length);
1568 return min_local_cfl_time_step_probe_length;
1573 double min_local_dt_cfl = 1.e20;
1576 min_local_dt_cfl = std::min(min_local_dt_cfl, (*
this)[itr].
get_local_dt_cfl());
1579 return min_local_dt_cfl;
1584 double min_local_dt_cfl_min_delta_xyz = 1.e20;
1589 min_local_dt_cfl_min_delta_xyz =
Process::mp_min(min_local_dt_cfl_min_delta_xyz);
1590 return min_local_dt_cfl_min_delta_xyz;
1596 (*
this)[itr].set_local_time_step(local_time_step);
1602 (*
this)[itr].prepare_temporal_schemes();
1607 return (*
this)[index].get_end_index_subproblem();
1613 (*
this)[itr].set_post_processing_theta_phi_scope(0);
1617 const int& nb_theta,
const int& nb_phi,
1618 const int theta_diag_val,
const int phi_diag_val)
1620 if (post_process_all_probes)
1627 ArrOfDouble r_sph(nb_subproblems_total);
1628 ArrOfDouble theta_sph(nb_subproblems_total);
1629 ArrOfDouble phi_sph(nb_subproblems_total);
1630 ArrOfDouble theta_scope;
1631 ArrOfDouble phi_scope;
1632 int nb_theta_even = nb_theta;
1633 int nb_phi_even = nb_phi;
1634 if (nb_theta_even % 2)
1636 if (nb_phi_even % 2)
1641 r_sph(i +
index_ini_) = (*this)[i].get_radius_spherical_coords();
1642 theta_sph(i +
index_ini_) = (*this)[i].get_theta_spherical_coords();
1643 phi_sph(i +
index_ini_) = (*this)[i].get_phi_spherical_coords();
1646 mp_sum_for_each_item(r_sph);
1647 mp_sum_for_each_item(theta_sph);
1648 mp_sum_for_each_item(phi_sph);
1650 int nb_outputs = ((nb_phi_even * nb_theta_even) > nb_subproblems_total) ? nb_subproblems_total : (nb_phi_even * nb_theta_even);
1651 nb_theta_even = (nb_outputs == nb_subproblems_total) ? (
int) sqrt(2 * nb_subproblems_total) / 2 : nb_theta_even;
1652 nb_phi_even = (nb_outputs == nb_subproblems_total) ? (
int) sqrt(2 * nb_subproblems_total) : nb_phi_even;
1653 nb_outputs = nb_phi_even * nb_theta_even;
1654 double theta_incr, phi_incr;
1655 theta_incr = (double) (M_PI / (
double) nb_theta_even);
1656 phi_incr = (double) ((2 * M_PI) / (
double) nb_phi_even);
1657 const double atan_theta_incr_ini = M_PI / 2;
1658 const double atan_incr_factor = -1;
1659 const double atan_phi_incr_ini = M_PI;
1662 for (i=0; i<nb_theta_even; i++)
1663 theta_scope.
append_array((theta_incr * (i + 0.5) - atan_theta_incr_ini) * atan_incr_factor);
1665 for (i=0; i<nb_theta_even; i++)
1666 theta_scope.
append_array((theta_incr * i - atan_theta_incr_ini) * atan_incr_factor);
1668 for (i=0; i<nb_phi_even; i++)
1669 phi_scope.
append_array(phi_incr * (i + 0.5) - atan_phi_incr_ini);
1671 for (i=0; i<nb_phi_even; i++)
1672 phi_scope.
append_array(phi_incr * i - atan_phi_incr_ini);
1680 int phi_theta_counter = 0;
1681 for (j=0; j<nb_phi_even; j++)
1682 for (i=0; i<nb_theta_even; i++)
1684 ArrOfDouble theta_diff = theta_sph;
1685 ArrOfDouble phi_diff = phi_sph;
1686 std::vector<double> sum_errors_theta_phi_scope;
1687 theta_diff -= theta_scope(i);
1688 phi_diff -= phi_scope(j);
1689 for (k=0; k<nb_subproblems_total; k++)
1691 theta_diff(k) = abs(theta_diff(k));
1692 phi_diff(k) = abs(phi_diff(k));
1693 sum_errors_theta_phi_scope.push_back(theta_diff(k));
1694 sum_errors_theta_phi_scope[k] += phi_diff(k);
1698 const int theta_phi_scope_index = (int) std::distance(sum_errors_theta_phi_scope.begin(),
1699 std::min_element(sum_errors_theta_phi_scope.begin(),
1700 sum_errors_theta_phi_scope.end()));
1703 theta_outputs_(phi_theta_counter) = theta_sph(theta_phi_scope_index);
1704 phi_outputs_(phi_theta_counter) = phi_sph(theta_phi_scope_index);
1706 phi_theta_counter ++;
1723 std::vector<int> indices_theta_sorted = arg_sort_array(
theta_outputs_);
1724 for (ii=0; ii<nb_outputs; ii++)
1727 theta_outputs_(ii) = theta_outputs_tmp(indices_theta_sorted[ii]);
1728 phi_outputs_(ii) = phi_outputs_tmp(indices_theta_sorted[ii]);
1737 for (ii=0; ii<nb_outputs; ii++)
1741 phi_outputs_(ii) = phi_outputs_tmp(indices_phi_sorted[ii]);
1745 phi_theta_counter = 0;
1746 for (ii=0; ii<nb_outputs; ii++)
1750 (*this)[global_index -
index_ini_].set_post_processing_theta_phi_scope(phi_theta_counter);
1751 phi_theta_counter++;
1757 const double& delta_temperature,
1758 const double& lambda)
1760 std::vector<int> compo_found;
1764 local_compo = (*this)[itr].get_compo();
1765 if (std::find(compo_found.begin(), compo_found.end(), local_compo) == compo_found.end())
1766 compo_found.push_back(local_compo);
1769 nb_bubbles_ = (int) std::distance(compo_found.begin(), std::max_element(compo_found.begin(), compo_found.end()));
1935 for (
int dir=0; dir<3; dir++)
1943 assert((*bubbles_rising_velocities_).size_array() ==
nb_bubbles_);
1948 compo_found.clear();
1968 gravity_dir_ = ref_ijk_ft_->milieu_ijk().get_direction_gravite();
1973 for (
auto& itr : *
this)
1974 itr.compute_bubble_related_quantities();
1987 upstream_velocity_vector = 0.;
1991 for (
int i=0; i<(*bubbles_rising_vectors_per_bubble_).dimension(0); i++)
1996 rising_velocity_vector = 1.;
1997 for (
int dir=0; dir<3; dir++)
1999 rising_velocity_vector *= (*bubbles_rising_velocities_)(i);
2001 Vecteur3 rising_relative_velocity_vector = (*liquid_velocity_);
2002 rising_relative_velocity_vector *= (-1);
2003 rising_relative_velocity_vector += rising_velocity_vector;
2004 double rising_relative_velocity = rising_relative_velocity_vector.
length();
2005 rising_relative_velocity_vector *= (1 / (rising_relative_velocity + 1e-30));
2006 for (
int dir=0; dir<3; dir++)
2009 Vecteur3 rising_relative_velocity_vector_upstream = upstream_velocity_vector;
2010 rising_relative_velocity_vector_upstream *= (-1);
2011 rising_relative_velocity_vector_upstream += rising_velocity_vector;
2012 double rising_relative_velocity_upstream = rising_relative_velocity_vector_upstream.
length();
2013 rising_relative_velocity_vector_upstream *= (1 / (rising_relative_velocity_upstream + 1e-30));
2014 for (
int dir=0; dir<3; dir++)
2019 Vecteur3 rising_velocity_vector_barycentres;
2020 rising_velocity_vector_barycentres = 1.;
2021 for (
int dir=0; dir<3; dir++)
2023 rising_velocity_vector_barycentres *= (*bubbles_rising_velocities_from_barycentres_)(i);
2025 Vecteur3 rising_relative_velocity_vector_barycentres = (*liquid_velocity_);
2026 rising_relative_velocity_vector_barycentres *= (-1);
2027 rising_relative_velocity_vector += rising_velocity_vector_barycentres;
2028 double rising_relative_velocity_barycentres = rising_relative_velocity_vector_barycentres.
length();
2029 rising_relative_velocity_vector_barycentres *= (1 / (rising_relative_velocity_barycentres + 1e-30));
2030 for (
int dir=0; dir<3; dir++)
2033 Vecteur3 rising_relative_velocity_vector_barycentres_upstream = upstream_velocity_vector;
2034 rising_relative_velocity_vector_barycentres_upstream *= (-1);
2035 rising_relative_velocity_vector_barycentres_upstream += rising_velocity_vector_barycentres;
2036 double rising_relative_velocity_barycentres_upstream = rising_relative_velocity_vector_barycentres_upstream.
length();
2037 rising_relative_velocity_vector_barycentres_upstream *= (1 / (rising_relative_velocity_barycentres_upstream + 1e-30));
2038 for (
int dir=0; dir<3; dir++)
2043 const double reynolds_coeff = (
caracteristic_length_ * ref_ijk_ft_->milieu_ijk().get_rho_liquid()) / ref_ijk_ft_->milieu_ijk().get_mu_liquid();
2061 const double& delta_temperature,
2062 const double& lambda)
2161 local_compo = (*this)[itr].get_compo();
2344 local_compo = (*this)[itr].get_compo();
2621 for (
int dir=0; dir<3; dir++)
2860 const int reset = 1;
2861 const int last_time_index = (*latastep_reprise_) + ref_ijk_ft_->schema_temps_ijk().get_tstep();
2862 const int max_digit = 3;
2863 const int max_digit_time = 8;
2864 const int max_rank_digit = rank < 1 ? 1 : (int) (log10(rank) + 1);
2865 const int nb_digit_tstep = last_time_index < 1 ? 1 : (int) (log10(last_time_index) + 1);
2867 Nom probe_name =
Nom(
"_thermal_rank_") +
Nom(std::string(max_digit - max_rank_digit,
'0')) +
Nom(rank)
2868 +
Nom(
"_thermal_subproblems") + (
"_overall_bubbles_quantities_")
2869 +
Nom(std::string(max_digit_time - nb_digit_tstep,
'0')) +
Nom(last_time_index) +
Nom(
".out");
2870 Nom probe_header =
Nom(
"tstep\ttime\tthermal_rank\tbubble_index"
2871 "\ttime_dimensionless"
2872 "\tbubble_coord_x\tbubble_coord_y\tbubble_coord_z"
2873 "\tbubble_coord_x_old\tbubble_coord_y_old\tbubble_coord_z_old"
2874 "\tbubble_coord_x_new\tbubble_coord_y_new\tbubble_coord_z_new"
2875 "\tnusselt_overall\tnusselt_overall_raw\tnusselt_overall_gfm\tnusselt_overall_lrs"
2876 "\tnusselt_overall_max_raw\tnusselt_overall_max_gfm\tnusselt_overall_max"
2877 "\tnusselt_spherical\tnusselt_spherical_th"
2878 "\tnusselt_overall_liq\tnusselt_overall_raw_liq\tnusselt_overall_gfm_liq\tnusselt_overall_lrs_liq"
2879 "\tnusselt_overall_max_raw_liq\tnusselt_overall_max_gfm_liq\tnusselt_overall_max_liq"
2880 "\tnusselt_spherical_liq\tnusselt_spherical_th_liq"
2881 "\tnusselt_overall_error\tnusselt_overall_gfm_error\tnusselt_overall_liq_error\tnusselt_overall_gfm_liq_error"
2882 "\tnusselt_overall_error_rel\tnusselt_overall_gfm_error_rel\tnusselt_overall_liq_error_rel\tnusselt_overall_gfm_liq_error_rel"
2883 "\theat_flux\theat_flux_raw\theat_flux_gfm\theat_flux_lrs"
2884 "\theat_flux_max_raw\theat_flux_max_gfm\theat_flux_max"
2885 "\theat_flux_spherical"
2886 "\ttotal_surface\ttotal_volume"
2887 "\tradius_surface\tradius_volume"
2888 "\terror_temperature_ana\terror_temperature_ana_norm\terror_temperature_ana_rel"
2889 "\tdelta_temperature\tmean_liquid_temperature"
2891 "\tliquid_velocity_x\tliquid_velocity_y\tliquid_velocity_z"
2892 "\tgravity_dir\tupstream_velocity"
2893 "\trising_dir_x\trising_dir_y\trising_dir_z"
2894 "\trising_dir_bary_x\trising_dir_bary_y\trising_dir_bary_z"
2895 "\trelative_rising_dir_x\trelative_rising_dir_y\trelative_rising_dir_z"
2896 "\trelative_rising_dir_upstream_x\trelative_rising_dir_upstream_y\trelative_rising_dir_upstream_z"
2897 "\trelative_rising_dir_bary_x\trelative_rising_dir_bary_y\trelative_rising_dir_bary_z"
2898 "\trelative_rising_dir_bary_upstream_x\trelative_rising_dir_bary_upstream_y\trelative_rising_dir_bary_upstream_z"
2899 "\trising_velocity\trising_relative_velocity\trising_relative_velocity_upstream"
2900 "\trising_velocity_bary\trising_relative_velocity_bary\trising_relative_velocity_bary_upstream"
2901 "\treynolds_number\treynolds_number_surface\treynolds_number_volume"
2902 "\treynolds_number_upstream\treynolds_number_surface_upstream\treynolds_number_volume_upstream"
2903 "\treynolds_number_bary\treynolds_number_surface_bary\treynolds_number_volume_bary"
2904 "\treynolds_number_bary_upstream\treynolds_number_surface_bary_upstream\treynolds_number_volume_bary_upstream"
2906 "\tpeclet_number\tpeclet_number_surface\tpeclet_number_volume"
2907 "\tpeclet_number_upstream\tpeclet_number_surface_upstream\tpeclet_number_volume_upstream"
2908 "\tpeclet_number_bary\tpeclet_number_surface_bary\tpeclet_number_volume_bary"
2909 "\tpeclet_number_bary_upstream\tpeclet_number_surface_bary_upstream\tpeclet_number_volume_bary_upstream"
2910 "\tsum_conv_flux_liq\tsum_conv_flux_vap\tsum_conv_flux_mixed"
2911 "\tsum_conv_flux_liq_normal"
2912 "\tsum_conv_flux_liq_leaving\tsum_conv_flux_liq_entering"
2913 "\tsum_conv_flux_lrs"
2914 "\tsum_conv_flux_lrs_leaving\tsum_conv_flux_lrs_entering"
2915 "\tsum_diff_flux_liq\tsum_diff_flux_vap\tsum_diff_flux_mixed"
2916 "\tsum_diff_flux_liq_normal"
2917 "\tsum_diff_flux_liq_leaving\tsum_diff_flux_liq_entering"
2918 "\tsum_diff_flux_lrs"
2919 "\tsum_diff_flux_lrs_leaving\tsum_diff_flux_lrs_entering"
2920 "\tsum_fluxes_liq\tsum_fluxes_vap\tsum_fluxes_mixed"
2921 "\tsum_fluxes_liq_normal"
2922 "\tsum_fluxes_liq_leaving\tsum_fluxes_liq_entering"
2924 "\tsum_fluxes_lrs_leaving\tsum_fluxes_lrs_entering"
2925 "\tnusselt_number_face_fluxes\tnusselt_number_face_fluxes_liquid"
2926 "\tnusselt_number_leaving_face_fluxes\tnusselt_number_leaving_face_fluxes_liquid"
2927 "\tnusselt_number_entering_face_fluxes\tnusselt_number_entering_face_fluxes_liquid"
2928 "\tnusselt_number_lrs_face_fluxes\tnusselt_number_lrs_face_fluxes_liquid"
2929 "\tnusselt_number_lrs_leaving_face_fluxes\tnusselt_number_lrs_leaving_face_fluxes_liquid"
2930 "\tnusselt_number_lrs_entering_face_fluxes\tnusselt_number_lrs_entering_face_fluxes_liquid");
2931 SFichier fic = Open_file_folder(overall_bubbles_quantities, probe_name, probe_header, reset);
2933 const double last_time = ref_ijk_ft_->schema_temps_ijk().get_current_time() - ref_ijk_ft_->schema_temps_ijk().get_timestep();
2938 for (
int i=0; i<max_counter; i++)
2940 fic << last_time_index <<
" " << last_time <<
" ";
2943 fic << dimensionless_time <<
" ";
2945 fic << (*bubbles_barycentres_)(i, 0) <<
" ";
2946 fic << (*bubbles_barycentres_)(i, 1) <<
" ";
2947 fic << (*bubbles_barycentres_)(i, 2) <<
" ";
2948 fic << (*bubbles_barycentres_old_)(i, 0) <<
" ";
2949 fic << (*bubbles_barycentres_old_)(i, 1) <<
" ";
2950 fic << (*bubbles_barycentres_old_)(i, 2) <<
" ";
2951 fic << (*bubbles_barycentres_new_)(i, 0) <<
" ";
2952 fic << (*bubbles_barycentres_new_)(i, 1) <<
" ";
2953 fic << (*bubbles_barycentres_new_)(i, 2) <<
" ";
2992 fic << (*bubbles_volume_)(i) <<
" ";
3003 fic << (*liquid_velocity_).length() <<
" ";
3004 fic << (*liquid_velocity_)[0] <<
" ";
3005 fic << (*liquid_velocity_)[1] <<
" ";
3006 fic << (*liquid_velocity_)[2] <<
" ";
3011 fic << (*bubbles_rising_vectors_per_bubble_)(i, 0) <<
" ";
3012 fic << (*bubbles_rising_vectors_per_bubble_)(i, 1) <<
" ";
3013 fic << (*bubbles_rising_vectors_per_bubble_)(i, 2) <<
" ";
3014 fic << (*bubbles_rising_vectors_from_barycentres_)(i, 0) <<
" ";
3015 fic << (*bubbles_rising_vectors_from_barycentres_)(i, 1) <<
" ";
3016 fic << (*bubbles_rising_vectors_from_barycentres_)(i, 2) <<
" ";
3032 fic << (*bubbles_rising_velocities_)(i) <<
" ";
3036 fic << (*bubbles_rising_velocities_from_barycentres_)(i) <<
" ";
3054 fic << (*prandtl_number_) <<
" ";
3128 fic << last_time_index <<
" " << last_time <<
" ";
3131 fic << dimensionless_time <<
" ";
3133 fic << (*bubbles_barycentres_)(0, 0) <<
" ";
3134 fic << (*bubbles_barycentres_)(0, 1) <<
" ";
3135 fic << (*bubbles_barycentres_)(0, 2) <<
" ";
3136 fic << (*bubbles_barycentres_old_)(0, 0) <<
" ";
3137 fic << (*bubbles_barycentres_old_)(0, 1) <<
" ";
3138 fic << (*bubbles_barycentres_old_)(0, 2) <<
" ";
3139 fic << (*bubbles_barycentres_new_)(0, 0) <<
" ";
3140 fic << (*bubbles_barycentres_new_)(0, 1) <<
" ";
3141 fic << (*bubbles_barycentres_new_)(0, 2) <<
" ";
3192 fic << (*liquid_velocity_).length() <<
" ";
3193 fic << (*liquid_velocity_)[0] <<
" ";
3194 fic << (*liquid_velocity_)[1] <<
" ";
3195 fic << (*liquid_velocity_)[2] <<
" ";
3243 fic << (*prandtl_number_) << finl;
3321 const int& val_index)
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
int get_offset_local(int direction) const
Returns the local offset in requested direction.
Class defining operators and methods for all reading operation in an input flow (file,...
void share_previous_temperature_indicator_velocities()
DoubleVect get_temperature_profile_discrete_integral_at_point(const int &i, const double &dist, const int &level, const int &dir)
ArrOfInt collision_indices_
ArrOfDouble sum_diffusive_fluxes_lrs_leaving_faces_per_bubble_
double overall_nusselt_number_
ArrOfDouble overall_nusselt_number_lrs_leaving_face_fluxes_per_bubble_
ArrOfDouble bubbles_reynolds_numbers_from_volume_per_bubble_
const int & get_dxyz_over_two_increment_bool(const int &subproblem_index) const
double bubbles_total_reynolds_numbers_from_surface_per_bubble_barycentres_upstream_
void add_subproblems(int n)
double bubbles_total_rising_velocities_
double bubbles_total_reynolds_numbers_from_surface_per_bubble_barycentres_
const DoubleTab * bubbles_barycentres_
double bubbles_total_reynolds_numbers_from_surface_per_bubble_upstream_
ArrOfDouble interfacial_thermal_flux_per_bubble_lrs_
void shorten_subproblems()
double caracteristic_length_from_volumes_
double overall_shear_stress_
ArrOfDouble bubbles_reynolds_numbers_from_volume_per_bubble_upstream_
double sum_convective_fluxes_liquid_entering_faces_
DoubleVect get_temperature_gradient_times_conductivity_profile_discrete_integral_at_point(const int &i, const double &dist, const int &level, const int &dir)
double sum_convective_fluxes_vapour_faces_
std::vector< IJK_One_Dimensional_Subproblem * > one_dimensional_disabled_subproblems_
void initialise_thermal_subproblems_list_params(const int &pre_initialise_thermal_subproblems_list, const double &pre_factor_subproblems_number, const int &remove_append_subproblems, const int &use_sparse_matrix)
ArrOfDouble interfacial_thermal_flux_per_bubble_
ArrOfDouble sum_diffusive_fluxes_mixed_faces_per_bubble_
std::vector< std::vector< ArrOfDouble > > normal_vector_compo_probes_previous_local_perio_
const FixedVector< double, 6 > & get_dist_faces_interface(const int &i) const
void interpolate_project_velocities_on_probes()
ArrOfDouble sum_convective_fluxes_liquid_leaving_faces_per_bubble_
ArrOfDouble overall_shear_stress_per_bubble_
double bubbles_total_rising_relative_velocities_upstream_
double sum_fluxes_mixed_faces_
double overall_nusselt_number_face_fluxes_
ArrOfDouble bubbles_reynolds_numbers_from_surface_per_bubble_barycentres_
void complete_boundary_previous_values()
ArrOfDouble overall_nusselt_number_face_fluxes_per_bubble_
void post_processed_all_probes()
ArrOfDouble overall_nusselt_number_per_bubble_gfm_liquid_error_
IJK_One_Dimensional_Subproblems(const Probleme_FTD_IJK_base &ijk_ft)
double overall_nusselt_number_lrs_face_fluxes_liquid_
void share_interfacial_heat_flux_correction_on_procs(FixedVector< ArrOfInt, 4 > &ijk_indices_out, ArrOfDouble &thermal_flux_out)
void compute_overall_quantities()
void compute_radial_convection_diffusion_operators()
Vecteur3 total_relative_rising_dir_compo_
void thermal_subresolution_outputs(const int &rank, const Nom &interfacial_quantities_thermal_probes, const Nom &shell_quantities_thermal_probes, const Nom &overall_bubbles_quantities, const Nom &local_quantities_thermal_probes_time_index_folder)
ArrOfDouble interfacial_thermal_flux_per_bubble_max_raw_
int effective_subproblems_counter_
ArrOfDouble overall_nusselt_number_face_entering_fluxes_per_bubble_
double error_temperature_ana_rel_total_
void compute_modified_probe_length(const int &probe_variations_enabled)
void compute_error_flux_interface()
ArrOfDouble bubbles_peclet_numbers_per_bubble_barycentres_
double caracteristic_length_
void set_local_time_step(const double &local_time_step)
void dispatch_interfacial_heat_flux(IJK_Field_vector3_double &interfacial_heat_flux_dispatched, FixedVector< ArrOfInt, 3 > &ijk_indices_out, FixedVector< ArrOfDouble, 3 > &thermal_flux_out)
double sum_diffusive_fluxes_lrs_faces_
double interfacial_thermal_flux_raw_
double overall_nusselt_number_gfm_error_rel_
ArrOfDouble overall_nusselt_number_per_bubble_max_
void retrieve_boundary_previous_values()
double sum_fluxes_lrs_faces_
FixedVector< ArrOfDouble, 3 > relative_rising_dir_compo_barycentres_upstream_
double get_temperature_gradient_times_conductivity_profile_at_point(const int &i, const double &dist, const int &dir, bool &valid_val)
std::vector< std::vector< ArrOfDouble > > temperature_probes_previous_global_
double overall_nusselt_number_raw_liquid_
const DoubleTab * bubbles_rising_vectors_per_bubble_
double sum_convective_fluxes_lrs_entering_faces_
int disabled_subproblems_counter_
ArrOfDouble bubbles_rising_relative_velocities_
double overall_nusselt_number_face_leaving_fluxes_
ArrOfDouble sum_diffusive_fluxes_lrs_entering_faces_per_bubble_
int get_probe_variations_enabled_priority()
double pre_factor_subproblems_number_
int is_in_map_index_ijk(const std::map< int, std::map< int, std::map< int, int > > > &subproblem_to_ijk_indices, const int &index_i, const int &index_j, const int &index_k)
int pre_initialise_thermal_subproblems_list_
ArrOfDouble overall_nusselt_number_per_bubble_lrs_liquid_
double bubbles_total_reynolds_numbers_from_volume_per_bubble_upstream_
const ArrOfDouble * bubbles_volume_
ArrOfDouble overall_nusselt_number_per_bubble_error_
double overall_nusselt_number_face_leaving_fluxes_liquid_
double overall_shear_force_
ArrOfDouble total_surface_per_bubble_
double spherical_nusselt_
double sum_convective_fluxes_lrs_faces_
const FixedVector< int, 3 > & get_pure_neighbours_corrected_sign(const int &subproblem_index) const
double spherical_nusselt_liquid_
ArrOfDouble interfacial_thermal_flux_per_bubble_raw_
Vecteur3 total_relative_rising_dir_compo_barycentres_upstream_
const std::vector< std::vector< std::vector< std::vector< bool > > > > get_pure_neighbours_last_faces_to_correct(const int &subproblem_index) const
double sum_convective_fluxes_liquid_faces_
double delta_temperature_
double sum_fluxes_lrs_entering_faces_
ArrOfInt global_indices_post_processed_
std::vector< ArrOfDouble > indicator_probes_previous_global_
std::vector< ArrOfDouble > indicator_probes_previous_local_perio_
double sum_convective_fluxes_liquid_normal_faces_
double overall_nusselt_number_gfm_error_
double overall_nusselt_number_gfm_liquid_error_rel_
double bubbles_total_rising_velocities_barycentres_
ArrOfDouble overall_nusselt_number_per_bubble_spherical_
void share_boundary_previous_values()
double sum_fluxes_lrs_leaving_faces_
double get_min_euler_time_step(int &nb_iter_explicit)
FixedVector< ArrOfInt, 3 > ijk_indices_to_subproblem_
double overall_nusselt_number_gfm_
void approximate_temperature_increment_material_derivative()
void associate_variables_for_post_processing(IJK_Thermal_Subresolution &ref_thermal_subresolution)
ArrOfDouble bubbles_reynolds_numbers_per_bubble_upstream_
const int & get_end_index_subproblem(const int index) const
std::vector< Vecteur3 > normal_vector_compo_probes_previous_
double sum_diffusive_fluxes_liquid_normal_faces_
double mean_liquid_temperature_
void compare_fluxes_thermal_subproblems(const IJK_Field_vector3_double &convective_diffusive_fluxes_raw, const int flux_type, const int inv_sign=0)
int get_probe_variations_enabled(const int &probe_variations_priority)
int remove_append_subproblems_
ArrOfDouble sum_fluxes_liquid_faces_per_bubble_
double overall_nusselt_number_raw_
double get_local_min_fourier_time_step_probe_length()
double sum_diffusive_fluxes_lrs_entering_faces_
double bubbles_total_peclet_numbers_barycentres_
ArrOfDouble sum_convective_fluxes_lrs_faces_per_bubble_
const ArrOfDouble * bubbles_rising_velocities_
FixedVector< std::vector< ArrOfInt >, 2 > index_ij_subproblems_global_
double bubbles_total_peclet_numbers_from_volume_per_bubble_upstream_
const std::vector< std::vector< std::vector< std::vector< double > > > > get_pure_neighbours_last_faces_corrected_distance(const int &subproblem_index) const
ArrOfDouble overall_nusselt_number_per_bubble_liquid_error_
double overall_nusselt_number_spherical_liquid_
double overall_nusselt_number_max_gfm_
ArrOfDouble overall_nusselt_number_face_fluxes_per_bubble_liquid_
std::vector< std::vector< ArrOfDouble > > temperature_probes_previous_local_perio_
void compute_source_terms_impose_boundary_conditions(const int &boundary_condition_interface, const double &interfacial_boundary_condition_value, const int &impose_boundary_condition_interface_from_simulation, const int &boundary_condition_end, const double &end_boundary_condition_value, const int &impose_user_boundary_condition_end_value)
ArrOfDouble overall_nusselt_number_face_entering_fluxes_per_bubble_liquid_
const std::vector< std::vector< std::vector< double > > > & get_pure_neighbours_corrected_colinearity(const int &subproblem_index) const
ArrOfDouble interfacial_thermal_flux_per_bubble_max_
double heat_flux_spherical_
ArrOfDouble overall_nusselt_number_per_bubble_gfm_liquid_
ArrOfDouble radius_from_volumes_per_bubble_
double error_temperature_ana_squared_total_
ArrOfDouble bubbles_peclet_numbers_per_bubble_upstream_
void compute_local_temperature_gradient_solutions()
ArrOfDouble sum_diffusive_fluxes_vapour_faces_per_bubble_
ArrOfDouble bubbles_rising_relative_velocities_barycentres_upstream_
ArrOfDouble bubbles_reynolds_numbers_per_bubble_barycentres_upstream_
ArrOfDouble bubbles_reynolds_numbers_per_bubble_
void store_previous_temperature_indicator_velocities()
double get_local_min_cfl_time_step_probe_length()
double overall_nusselt_number_lrs_
double error_temperature_ana_total_
std::vector< std::vector< ArrOfDouble > > normal_vector_compo_probes_previous_global_
Vecteur3 total_rising_dir_compo_barycentres_
double bubbles_total_peclet_numbers_from_surface_per_bubble_upstream_
ArrOfDouble sum_diffusive_fluxes_liquid_faces_per_bubble_
double overall_nusselt_number_lrs_entering_face_fluxes_
const std::vector< std::vector< std::vector< std::vector< double > > > > get_pure_neighbours_last_faces_corrected_colinearity(const int &subproblem_index) const
const ArrOfDouble * bubbles_rising_velocities_from_barycentres_
double overall_nusselt_number_max_liquid_
ArrOfDouble sum_diffusive_fluxes_liquid_leaving_faces_per_bubble_
double overall_nusselt_number_face_fluxes_liquid_
void set_results_probes_size(const std::vector< std::string > &key_results_int, const std::vector< std::string > &key_results_double, std::map< std::string, ArrOfInt > &results_probes_int, std::map< std::string, ArrOfDouble > &results_probes_double)
double overall_nusselt_number_lrs_face_fluxes_
double sum_convective_fluxes_lrs_leaving_faces_
const std::vector< std::vector< std::vector< double > > > & get_pure_neighbours_corrected_distance(const int &subproblem_index) const
ArrOfDouble sum_fluxes_vapour_faces_per_bubble_
double bubbles_total_peclet_numbers_from_surface_per_bubble_barycentres_
double bubbles_total_reynolds_numbers_from_volume_per_bubble_barycentres_upstream_
double interfacial_thermal_flux_lrs_
std::vector< IJK_One_Dimensional_Subproblem * > one_dimensional_effective_subproblems_
double overall_nusselt_number_error_rel_
void compute_shear_per_bubbles()
ArrOfDouble sum_fluxes_liquid_normal_faces_per_bubble_
double sum_diffusive_fluxes_mixed_faces_
double overall_nusselt_number_max_raw_liquid_
void complete_frame_of_reference_lrs_fluxes_eval()
const DoubleTab * bubbles_barycentres_old_
double bubbles_total_reynolds_numbers_from_volume_per_bubble_
double interfacial_thermal_flux_max_raw_
double overall_nusselt_number_face_entering_fluxes_liquid_
ArrOfDouble overall_nusselt_number_per_bubble_spherical_liquid_
ArrOfDouble sum_fluxes_mixed_faces_per_bubble_
void compute_global_indices()
double get_local_dt_cfl_min_delta_xyz()
void complete_subproblems()
ArrOfDouble sum_convective_fluxes_lrs_entering_faces_per_bubble_
ArrOfDouble bubbles_reynolds_numbers_from_volume_per_bubble_barycentres_upstream_
Vecteur3 total_rising_dir_compo_
double overall_nusselt_number_gfm_liquid_
double overall_nusselt_number_liquid_error_
ArrOfDouble bubbles_peclet_numbers_from_volume_per_bubble_upstream_
double velocity_upstream_
void retrieve_temperature_solutions()
void compute_overall_quantities_per_bubbles(const IJK_Field_double &temperature_ghost, const double &delta_temperature, const double &lambda)
double overall_nusselt_number_lrs_leaving_face_fluxes_
int get_subproblem_index_from_ijk_indices(const int &i, const int &j, const int &k) const
void clear_sort_problems_colliding_bubbles()
ArrOfDouble overall_nusselt_number_lrs_leaving_face_fluxes_per_bubble_liquid_
double get_corrective_flux_from_current(const int &i, const int &l)
double bubbles_total_rising_relative_velocities_barycentres_
std::vector< DoubleVect > temperature_probes_previous_
ArrOfDouble bubbles_peclet_numbers_from_volume_per_bubble_barycentres_upstream_
ArrOfDouble caracteristic_length_from_volumes_per_bubble_
friend class IJK_One_Dimensional_Subproblem
void reajust_probes_length()
ArrOfDouble caracteristic_length_from_surfaces_per_bubble_
double bubbles_total_rising_relative_velocities_
ArrOfDouble overall_nusselt_number_per_bubble_max_gfm_
void retrieve_interfacial_heat_flux_correction_on_procs(const FixedVector< ArrOfInt, 4 > &ijk_indices_out, const ArrOfDouble &thermal_flux_out, IJK_Field_vector3_double &interfacial_heat_flux_dispatched)
void set_effective_subproblems(const int &enable_probe_collision_detection)
ArrOfDouble overall_nusselt_number_per_bubble_max_raw_
double get_max_temperature_domain_ends() const
std::vector< double > indicator_probes_previous_
std::map< int, std::map< int, std::map< int, int > > > subproblem_to_ijk_indices_previous_
double sum_diffusive_fluxes_vapour_faces_
double interfacial_thermal_flux_max_
FixedVector< std::vector< ArrOfInt >, 2 > index_ij_subproblems_local_perio_
double bubbles_total_peclet_numbers_barycentres_upstream_
double get_min_temperature_domain_ends() const
double bubbles_total_peclet_numbers_from_volume_per_bubble_barycentres_
ArrOfDouble sum_diffusive_fluxes_lrs_faces_per_bubble_
void compare_flux_interface(const int &i, std::vector< double > &radial_flux_error)
ArrOfDouble sum_fluxes_lrs_entering_faces_per_bubble_
double overall_nusselt_number_lrs_liquid_
ArrOfDouble sum_fluxes_lrs_faces_per_bubble_
void associate_subproblem_to_ijk_indices(const int &i, const int &j, const int &k)
double overall_nusselt_number_gfm_liquid_error_
void retrieve_radial_quantities()
ArrOfDouble bubbles_peclet_numbers_per_bubble_barycentres_upstream_
ArrOfDouble bubbles_peclet_numbers_from_volume_per_bubble_barycentres_
double get_local_dt_cfl()
ArrOfDouble bubbles_peclet_numbers_from_surface_per_bubble_upstream_
double sum_diffusive_fluxes_liquid_leaving_faces_
double sum_fluxes_liquid_leaving_faces_
const std::vector< std::vector< std::vector< bool > > > & get_pure_neighbours_to_correct(const int &subproblem_index) const
ArrOfDouble bubbles_reynolds_numbers_from_surface_per_bubble_upstream_
const int & get_dxyz_increment_bool(const int &subproblem_index) const
ArrOfDouble overall_nusselt_number_face_leaving_fluxes_per_bubble_
ArrOfDouble sum_convective_fluxes_liquid_entering_faces_per_bubble_
ArrOfDouble bubbles_peclet_numbers_per_bubble_
std::vector< std::vector< ArrOfDouble > > velocities_probes_previous_local_perio_
ArrOfDouble overall_nusselt_number_per_bubble_max_raw_liquid_
double get_min_temperature() const
DoubleVect get_temperature_gradient_profile_discrete_integral_at_point(const int &i, const double &dist, const int &level, const int &dir)
ArrOfDouble theta_outputs_
DoubleVect get_temperature_times_velocity_profile_discrete_integral_at_point(const int &i, const double &dist, const int &level, const int &dir, const int &l)
int * points_per_thermal_subproblem_
void compute_overall_bubbles_quantities(IJK_Thermal_Subresolution &ref_thermal_subresolution)
ArrOfDouble interfacial_thermal_flux_per_bubble_gfm_
const Vecteur3 * liquid_velocity_
void interpolate_indicator_on_probes()
double bubbles_total_peclet_numbers_from_volume_per_bubble_barycentres_upstream_
double sum_fluxes_liquid_normal_faces_
ArrOfDouble overall_nusselt_number_per_bubble_raw_liquid_
ArrOfDouble overall_nusselt_number_face_leaving_fluxes_per_bubble_liquid_
ArrOfDouble overall_nusselt_number_lrs_entering_face_fluxes_per_bubble_
void get_ijk_indices_from_subproblems(const int &rank, int &i, int &j, int &k)
double sum_diffusive_fluxes_liquid_entering_faces_
std::map< int, std::map< int, std::map< int, int > > > subproblem_to_ijk_indices_
ArrOfDouble bubbles_peclet_numbers_from_surface_per_bubble_
void associate_ijk_indices_to_subproblem(const int &rank, const int &i, const int &j, const int &k)
double overall_nusselt_number_liquid_
ArrOfDouble bubbles_reynolds_numbers_from_surface_per_bubble_
Vecteur3 total_relative_rising_dir_compo_upstream_
ArrOfDouble bubbles_peclet_numbers_from_surface_per_bubble_barycentres_upstream_
double get_temperature_gradient_profile_at_point(const int &i, const double &dist, const int &dir)
std::vector< std::vector< ArrOfDouble > > velocities_probes_previous_global_
double interfacial_thermal_flux_max_gfm_
ArrOfDouble sum_convective_fluxes_vapour_faces_per_bubble_
ArrOfDouble bubbles_reynolds_numbers_from_surface_per_bubble_barycentres_upstream_
ArrOfDouble sum_convective_fluxes_mixed_faces_per_bubble_
double get_corrective_flux_from_neighbours(const int &i, const int &l)
ArrOfDouble overall_nusselt_number_per_bubble_gfm_error_rel_
double sum_convective_fluxes_liquid_leaving_faces_
double get_temperature_times_velocity_profile_at_point(const int &i, const double &dist, const int &dir, bool &valid_val, const int &l, const int &index_i, const int &index_j, const int &index_k, const int &temperature=0) const
ArrOfDouble sum_convective_fluxes_lrs_leaving_faces_per_bubble_
ArrOfDouble overall_nusselt_number_per_bubble_liquid_error_rel_
int effective_and_disabled_subproblems_counter_
ArrOfDouble sum_diffusive_fluxes_liquid_normal_faces_per_bubble_
ArrOfDouble interfacial_thermal_flux_per_bubble_max_gfm_
double overall_nusselt_number_max_
void dispatch_interfacial_heat_flux_correction(IJK_Field_vector3_double &interfacial_heat_flux_dispatched, FixedVector< ArrOfInt, 4 > &ijk_indices_out, ArrOfDouble &thermal_flux_out, IJK_Field_vector3_double &interfacial_heat_flux_current)
ArrOfDouble overall_nusselt_number_per_bubble_lrs_
ArrOfDouble sum_fluxes_liquid_leaving_faces_per_bubble_
double bubbles_total_reynolds_numbers_barycentres_
double caracteristic_length_from_surfaces_
ArrOfDouble bubbles_rising_relative_velocities_barycentres_
double bubbles_total_reynolds_numbers_upstream_
const Vecteur3 & get_bary_facet(const int &i) const
void compute_dynamics_per_bubbles()
double get_temperature_profile_at_point(const int &i, const double &dist) const
double overall_nusselt_number_face_entering_fluxes_
void set_results_probes_fic(SFichier &fic, const std::vector< std::string > &key_results_int, const std::vector< std::string > &key_results_double, std::map< std::string, ArrOfInt > &results_probes_int, std::map< std::string, ArrOfDouble > &results_probes_double)
double bubbles_total_peclet_numbers_from_surface_per_bubble_barycentres_upstream_
double bubbles_total_peclet_numbers_from_volume_per_bubble_
void compute_nusselt_numbers_per_bubbles(const IJK_Field_double &temperature_gradient_ghost, const double &delta_temperature, const double &lambda)
ArrOfDouble radius_outputs_
double sum_convective_fluxes_mixed_faces_
double sum_diffusive_fluxes_liquid_faces_
ArrOfDouble overall_nusselt_number_per_bubble_gfm_error_
ArrOfDouble sum_diffusive_fluxes_liquid_entering_faces_per_bubble_
double overall_nusselt_number_error_
double get_thermal_subproblem_value_at_ijk_index(const int &m, int &index_i, int &index_j, int &index_k, const int &val_index)
double bubbles_total_reynolds_numbers_
ArrOfDouble overall_nusselt_number_per_bubble_max_liquid_
double bubbles_total_reynolds_numbers_from_surface_per_bubble_
ArrOfDouble bubbles_reynolds_numbers_per_bubble_barycentres_
double sum_diffusive_fluxes_lrs_leaving_faces_
ArrOfDouble overall_nusselt_number_lrs_face_fluxes_per_bubble_liquid_
FixedVector< ArrOfDouble, 3 > relative_rising_dir_compo_barycentres_
std::vector< Vecteur3 > velocities_probes_previous_
ArrOfDouble bubbles_peclet_numbers_from_surface_per_bubble_barycentres_
ArrOfDouble overall_nusselt_number_per_bubble_max_gfm_liquid_
void sort_limited_probes_spherical_coords_post_processing(const int &post_process_all_probes, const int &nb_theta, const int &nb_phi, const int theta_diag_val, const int phi_diag_val)
double bubbles_total_peclet_numbers_upstream_
Vecteur3 total_relative_rising_dir_compo_barycentres_
const DoubleTab * bubbles_barycentres_new_
ArrOfDouble radius_from_surfaces_per_bubble_
void thermal_subresolution_outputs_parallel(const int &rank, const Nom &interfacial_quantities_thermal_probes, const Nom &shell_quantities_thermal_probes, const Nom &overall_bubbles_quantities, const Nom &local_quantities_thermal_probes_time_index_folder)
const DoubleTab * bubbles_rising_vectors_from_barycentres_
void associate_sub_problem_to_inputs(IJK_Thermal_Subresolution &ref_thermal_subresolution, int i, int j, int k, const double &indicator, double global_time_step, double current_time, const IJK_Interfaces &interfaces, const IJK_Field_vector3_double &velocity, const IJK_Field_vector3_double &velocity_ft, const IJK_Field_double &pressure)
double sum_fluxes_liquid_entering_faces_
ArrOfDouble sum_fluxes_liquid_entering_faces_per_bubble_
int get_probe_variations_enabled_non_priority()
ArrOfDouble sum_convective_fluxes_liquid_normal_faces_per_bubble_
double bubbles_total_peclet_numbers_from_surface_per_bubble_
double radius_from_volumes_
double interfacial_thermal_flux_
ArrOfDouble bubbles_reynolds_numbers_from_volume_per_bubble_barycentres_
double bubbles_total_reynolds_numbers_barycentres_upstream_
double overall_nusselt_number_max_gfm_liquid_
ArrOfDouble overall_nusselt_number_per_bubble_
FixedVector< ArrOfDouble, 3 > relative_rising_dir_compo_upstream_
double overall_nusselt_number_lrs_entering_face_fluxes_liquid_
ArrOfDouble bubbles_rising_relative_velocities_upstream_
double overall_nusselt_number_liquid_error_rel_
double overall_nusselt_number_max_raw_
void get_subproblem_ijk_indices(int &i, int &j, int &k, int &subproblem_index) const
Nom get_header_from_string_lists(const std::vector< std::string > &key_results_int, const std::vector< std::string > &key_results_double)
ArrOfDouble sum_convective_fluxes_liquid_faces_per_bubble_
ArrOfDouble overall_nusselt_number_per_bubble_error_rel_
double interfacial_thermal_flux_gfm_
double overall_nusselt_number_lrs_leaving_face_fluxes_liquid_
ArrOfDouble overall_nusselt_number_per_bubble_gfm_
double radius_from_surfaces_
ArrOfDouble overall_nusselt_number_per_bubble_gfm_liquid_error_rel_
double overall_nusselt_number_spherical_
ArrOfDouble overall_nusselt_number_lrs_face_fluxes_per_bubble_
ArrOfDouble overall_nusselt_number_per_bubble_raw_
void compute_local_velocity_gradient()
void set_pure_flux_corrected(const double &flux_face, const int &i, const int &l, const int &flux_type)
double sum_fluxes_vapour_faces_
ArrOfDouble sum_fluxes_lrs_leaving_faces_per_bubble_
double bubbles_total_rising_relative_velocities_barycentres_upstream_
double get_interfacial_gradient_corrected(int i)
ArrOfDouble overall_nusselt_number_per_bubble_liquid_
double sum_fluxes_liquid_faces_
const double & get_dist_cell_interface(const int &i) const
void post_process_overall_bubbles_quantities(const int rank, const Nom &overall_bubbles_quantities)
ArrOfDouble overall_nusselt_number_lrs_entering_face_fluxes_per_bubble_liquid_
double bubbles_total_peclet_numbers_
double bubbles_total_reynolds_numbers_from_volume_per_bubble_barycentres_
ArrOfDouble bubbles_peclet_numbers_from_volume_per_bubble_
double get_max_temperature() const
double get_local_max_cfl_time_step_probe_length()
int global_subproblems_counter_
double get_local_max_fourier_time_step_probe_length()
FixedVector< ArrOfDouble, 3 > relative_rising_dir_compo_
ArrOfDouble interfacial_thermal_flux_per_bubble_spherical_
void prepare_temporal_schemes()
ArrOfDouble overall_shear_force_per_bubble_
int reference_gfm_on_probes_
double heat_flux_spherical_
bool reference_gfm_on_probes_
double nusselt_spherical_diffusion_
double error_temperature_ana_rel_total_
double error_temperature_ana_squared_total_
double single_centred_bubble_radius_ini_
int points_per_thermal_subproblem_
double delta_T_subcooled_overheated_
double mean_liquid_temperature_
double error_temperature_ana_total_
double nusselt_spherical_diffusion_liquid_
const IJK_Field_double * eulerian_interfacial_area_ns_
const DoubleTab * bubbles_barycentres_old_
const IJK_Field_double * eulerian_curvature_ns_
const IJK_Field_int * eulerian_compo_connex_from_interface_int_ns_
const Vecteur3 * liquid_velocity_
const DoubleTab * bubbles_barycentres_new_
const IJK_Field_double * eulerian_distance_ns_
const DoubleTab * rising_vectors_from_barycentres_
const IJK_Field_vector3_double * eulerian_facets_barycentre_ns_
int latastep_reprise_ini_
const DoubleTab * rising_vectors_
const DoubleTab * bubbles_barycentre_
IJK_Field_double eulerian_grad_T_interface_ns_
const ArrOfDouble * bubbles_volume_
const ArrOfDouble * rising_velocities_
const IJK_Field_vector3_double * eulerian_normal_vectors_ns_
const ArrOfDouble * rising_velocities_from_barycentres_
class Nom Une chaine de caractere pour nommer les objets de TRUST
static double mp_min(double)
static int check_int_overflow(trustIdType)
static double mp_max(double)
static int nproc()
renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::curren...
static double mp_sum(double)
Calcule la somme de x sur tous les processeurs du groupe courant.
static int me()
renvoie mon rang dans le groupe de communication courant.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
static int je_suis_maitre()
renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0),...
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
Classe de base des flux de sortie.
void append_array(_TYPE_ valeur)
_SIZE_ size_array() const
void resize(_SIZE_ new_size, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)