16#ifndef Probleme_FTD_IJK_base_included
17#define Probleme_FTD_IJK_base_included
19#include <Fluide_Diphasique_IJK.h>
20#include <Schema_Temps_IJK_base.h>
21#include <Navier_Stokes_FTD_IJK.h>
22#include <Probleme_FT_Disc_gen.h>
23#include <IJK_Interfaces.h>
24#include <IJK_Thermals.h>
25#include <Domaine_IJK.h>
26#include <Postprocessing_IJK.h>
27#include <Champs_compris_IJK.h>
28#include <Champs_compris_IJK_interface.h>
74 void sauver()
const override;
126 virtual void deplacer_interfaces(
const double timestep,
const int rk_step, ArrOfDouble& var_volume_par_bulle,
const int first_step_interface_smoothing);
127 virtual void deplacer_interfaces_rk3(
const double timestep,
const int rk_step, ArrOfDouble& var_volume_par_bulle);
141 return refprobleme_ft_disc_.valeur();
236 void rk3_sub_step(
const int rk_step,
const double total_timestep,
const double fractionnal_timestep,
const double time);
class Champ_base This class is the base of the fields hierarchy.
Similar to Champs_compris_interface but for IJK scalar and vector fields.
std::tuple< Motcle, Entity, Nature_du_champ, bool > FieldInfo_t
class Discretisation_base This class represents a spatial discretization scheme, which
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
Class defining operators and methods for all reading operation in an input flow (file,...
const Remaillage_FT_IJK & remaillage_ft_ijk() const
const Maillage_FT_IJK & maillage_ft_ijk() const
A character string (Nom) in uppercase.
class Nom: a character string for naming TRUST objects.
An array of character strings (VECT(Nom)).
Base class for TRUST objects (Objet_U).
Helper class to factorize the readOn method of Objet_U classes.
double t_debut_statistiques() const
const Probleme_base & probleme(const Domaine_IJK &dom) const
static void Fill_postprocessable_fields()
void get_noms_champs_postraitables(Noms &noms, Option opt) const override
void initialise_ijk_fields()
Fluide_Diphasique_IJK & milieu_ijk()
Domaine_IJK & domaine_ijk()
void calculer_rho_mu_indicatrice(const bool parcourir=true)
const Domaine_IJK & domaine_ijk() const
IJK_Thermals & get_ijk_thermals()
Postprocessing_IJK & get_post()
void completer() override
Completes the equations associated with the problem.
void typer_lire_milieu(Entree &is) override
int new_treatment() const
void update_pre_remeshing_indicator_field()
int thermal_probes_ghost_cells_
friend class Statistiques_dns_ijk_FT
bool has_champ_vectoriel(const Motcle &nom) const override
virtual void set_param(Param ¶m) const override
int get_thermal_probes_ghost_cells() const
void mettre_a_jour(double temps) override
Performs a time update of the problem.
void reprendre_probleme(const char *fichier_reprise)
const ArrOfDouble_with_ghost & get_delta_z_local() const
void terminate() override
This method is called once at the end, after any other one.
const IJK_Interfaces & get_interface() const
void sauver() const override
Writes to file for restart (backup).
const Maillage_FT_IJK & get_maillage_ft_ijk() const
const IJK_Field_double & get_IJK_field(const Motcle &nom) override
Champs_compris_IJK_interface::FieldInfo_t FieldInfo_t
virtual Cut_cell_FT_Disc * get_cut_cell_disc()
virtual void create_forced_dilation()
void parcourir_maillage()
void initialise_interfaces()
const Nom & nom_sauvegarde() const
bool has_interface() const
int associer_(Objet_U &) override
override Objet_U::associer_(Objet_U& ob) Associates different objects with the problem by checking
double presentTime() const override
Returns the present time.
IJK_Interfaces interface_to_remove_later_when_clean_
void update_thermal_properties()
OBS_PTR(Probleme_base) refprobleme_ns_
void resetTime(double time) override
Reset the current time of the Problem to a given value.
friend class Postprocessing_IJK
Domaine_IJK & get_domaine_ft()
const Schema_Temps_IJK_base & schema_temps_ijk() const
const Fluide_Diphasique_IJK & milieu_ijk() const
void euler_time_step(ArrOfDouble &var_volume_par_bulle)
void rk3_sub_step(const int rk_step, const double total_timestep, const double fractionnal_timestep, const double time)
void setStationary(bool flag) override
Tells to the Problem that stationary is reached or not.
OBS_PTR(Domaine_IJK) domaine_ijk_
OBS_PTR(Probleme_base) refprobleme_ft_disc_
const Postprocessing_IJK & get_post() const
void sauvegarder_probleme(const char *fichier_sauvegarde, const int &stop)
void preparer_calcul() override
Prepares the computation: initializes the medium parameters and prepares the computation of each equa...
friend class IJK_Thermique_cut_cell
void lire_solved_equations(Entree &is) override
IJK_Field_int treatment_count_
void solveTimeStep_Euler(DoubleTrav &)
virtual void update_twice_indicator_field()
virtual void deplacer_interfaces_rk3(const double timestep, const int rk_step, ArrOfDouble &var_volume_par_bulle)
Entree & lire_equations(Entree &is, Motcle &dernier_mot) override
Reading of the equations of the problem.
const IJK_Field_int & treatment_count() const
ArrOfDouble_with_ghost delta_z_local_
bool iterateTimeStep(bool &converged) override
In the case solveTimeStep uses an iterative process, this method executes a single iteration.
IJK_Field_int & treatment_count()
virtual void update_indicator_field()
bool solveTimeStep() override
For possible re-implementation and unified call from python.
void update_post_remeshing_indicator_field()
const IJK_Field_vector3_double & get_IJK_field_vector(const Motcle &nom) override
Navier_Stokes_FTD_IJK & eq_ns()
virtual bool updateGivenFields() override
WARNING:
void initialize() override
This method is called once at the beginning, before any other one of the interface Problem.
bool initTimeStep(double dt) override
This method allocates and initializes the unknown and given fields for the future time step.
ArrOfDouble_with_ghost & get_delta_z_local()
const Navier_Stokes_FTD_IJK & eq_ns() const
const Domaine_IJK & get_domaine_ft() const
void abortTimeStep() override
Aborts the resolution of the current time step.
const Nom & get_lata_name() const
Schema_Temps_IJK_base & schema_temps_ijk()
const Domaine_IJK & get_domaine() const
void discretiser(Discretisation_base &dis) override
bool has_champ(const Motcle &nom) const override
void validateTimeStep() override
Validates the calculated unknown by moving the present time at the end of the time step.
virtual void deplacer_interfaces(const double timestep, const int rk_step, ArrOfDouble &var_volume_par_bulle, const int first_step_interface_smoothing)
void update_old_intersections()
void solveTimeStep_RK3(DoubleTrav &)
const Remaillage_FT_IJK & get_remaillage_ft_ijk() const
IJK_Interfaces & get_interface()
bool has_thermals() const
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base)&ref_champ) const override
const IJK_Thermals & get_ijk_thermals() const
bool run() override
This method is a sort of main() for the Problem. It can be used if the problem is not coupled with an...
double computeTimeStep(bool &stop) const override
Compute the value the Problem would like for the next time step.
double t_debut_statistiques() const
bool iterateTimeStep_impl(Probleme_base &pb, bool &converged)
class Probleme_base It is a Probleme_U that is not a coupling.
Postraitements les_postraitements_
std::vector< OWN_PTR(Milieu_base)> le_milieu_
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.