TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
Format_Post_base.h
1/****************************************************************************
2* Copyright (c) 2026, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Format_Post_base_included
17#define Format_Post_base_included
18
19#include <TRUSTTabs_forward.h>
20#include <TRUST_Deriv.h>
21#include <Champ_base.h>
22#include <TRUST_Ref.h>
23#include <Domaine.h>
24
26class Motcle;
27class Param;
28
29/*! @brief Classe de base des formats de postraitements pour les champs (lata, med, cgns, lml, single_lata).
30 *
31 * Utilisation de la classe par l'interface generique:
32 * -typer un objet format de postraitement
33 * -initialiser l objet format de postraitement
34 * -proceder a des operations de complement et verification
35 * -ecrire un domaine
36 * -ecrire_temps
37 * -ecrire_champ (un type de champ supporte: aux elements ou aux sommets,
38 * ou encore aux faces si on a ecrit les faces du domaine
39 * et si les faces sont supportees par le postraitement)
40 *
41 */
42
43// Les parametres intervenant (eventuellement) dans une operation de postraitement
44////////////////////////////////////////////////////////////////////////////////////////////////////////////////
45// Nom nom_fichier : nom du fichier sur lequel on ecrit
46// int champ : 1 si postraitement de champ, 0 sinon
47// int stat : 1 si postraitement de statistiques, 0 sinon
48// double dt_ch : periode de postraitement des champs
49// double dt_stat : periode de postraitement des statistiques
50// int reprise : 1 si reprise effectuee, 0 sinon
51// int axi : 1 si calcul axi, 0 sinon
52// int est_le_premier_post : 1 si premier postraitement pour un fichier d ecriture donne, 0 sinon
53// int est_le_dernier_post : 1 si dernier postraitement pour un fichier d ecriture donne, 0 sinon
54// Domaine dom : domaine de calcul
55// Nom id_domaine : nom du domaine
56// IntVect faces_som : connectivites faces-sommets
57// IntVect elem_faces : connectivites elements-faces
58// int nb_som : nombre de sommets du domaine dom
59// int nb_faces : nombre de faces du domaine
60
61// double t_init : temps initial du calcul
62// double temps_courant : temps courant du calcul
63// double temps_champ : temps du champ cible
64// double temps_post : temps de l objet postraitement (ecriture si temps_post<temps_courant)
65
66// Nom id_champ_post : identifiant du champ generique (nom ou composante)
67// Nature_du_champ nature_champ : scalaire, multi_scalaire, vectoriel
68// int nb_compo : nombre de composantes du champ
69// Noms nom_compos : vecteur contenant le nom des composantes du champ
70// Noms unites : vecteur contenant les unites du champ a ecrire
71// Motcle loc_post : localisation : ELEM, SOM, FACES
72// int ncomp : numero de composante (-1 si ce n est pas une composante)
73// DoubleTab data : tableau de valeurs a ecrire sur fichier
74//////////////////////////////////////////////////////////////////////////////////////////////////////////////
75
76// Rq: data
77// Si on postraite le champ et non pas une composante d un champ
78// Si le tableau de valeurs du champ est a une seule entree, data doit etre dimensionne en data(nb_ddl,1)
79// Si on postraite une composante d un champ
80// Si le tableau de valeurs fourni est a plusieurs entrees, data doit etre dimensionne en data(nb_ddl)
81
82
83// l utilisation de l interface generique pour realiser une operation de postraitement
84// L enchainement d appel des methodes de l interface pour postraiter un tableau de valeurs d un champ discret a un instant donne
85// est presente ci-dessous (toute methode n est pas forcement necessaire en fonction du format utilise)
86///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
87// format_post.initialize_by_default(nom_fichier)
88// format_post.ecrire_entete(temps_courant,reprise,est_le_premier_post)
89// format_post.preparer_post(id_domaine,est_le_premier_post,reprise,t_init)
90// format_post.completer_post(dom,axi,nature_champ,nb_compo,noms_compo,loc_post,id_champ_post)
91// format_post.ecrire_domaine(dom,est_le_premier_post)
92// format_post.ecrire_item_int("FACES",id_domaine,id_domaine,"FACES","SOMMETS",faces_som,nb_som);
93// format_post.ecrire_item_int("ELEM_FACES",id_domaine,id_domaine,"ELEMENTS","FACES",elem_faces,nb_faces);
94// format_post.ecrire_temps(temps_courant)
95// format_post.init_ecriture(temps_courant,temps_post,est_le_premier_post,dom)
96// format_post.ecrire_champ(dom,unites,noms_compo,ncomp,temps_champ,temps_courant,id_champ_post,id_domaine,loc_post,data)
97// format_post.finir_ecriture(temps_courant)
98// format_post.finir(est_le_dernier_post)
99///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
101{
102 Declare_base(Format_Post_base);
103public:
104 // Remet l'objet dans l'etat initial obtenu apres constructeur par defaut
105 virtual void reset() = 0;
106 virtual void resetTime(double t, const std::string dirname);
107 virtual void set_param(Param& param) const override=0;
108 int lire_motcle_non_standard(const Motcle&, Entree&) override;
109 virtual int initialize_by_default(const Nom& file_basename);
110 virtual int initialize(const Nom& file_basename, const int format, const Nom& option_para);
111 virtual int modify_file_basename(const Nom file_basename, bool for_restart, const double tinit);
112 virtual int ecrire_entete(const double temps_courant, const int reprise, const int est_le_premier_post);
113 virtual int completer_post(const Domaine& dom, const int axi, const Nature_du_champ& nature, const int nb_compo, const Noms& noms_compo, const Motcle& loc_post, const Nom& le_nom_champ_post);
114
115 virtual int preparer_post(const Nom& id_du_domaine, const int est_le_premier_post, const int reprise, const double t_init);
116
117 virtual int init_ecriture(double temps_courant, double temps_post, int est_le_premier_postraitement_pour_nom_fich_, const Domaine& domaine);
118
119 virtual int finir_ecriture(double temps_courant);
120 virtual int finir(const int est_le_dernier_post);
121
122 virtual int ecrire_domaine(const Domaine& domaine,const int est_le_premier_post);
123 virtual void ecrire_domaine_dual(const Domaine& domaine,const int est_le_premier_post);
124 virtual int ecrire_domaine_dis(const Domaine& domaine,const OBS_PTR(Domaine_dis_base)& domaine_dis_base,const int est_le_premier_post);
125 virtual int ecrire_temps(const double temps);
126
127 virtual int ecrire_champ(const Domaine& domaine, const Noms& unite_, const Noms& noms_compo, int ncomp, double temps_, const Nom& id_du_champ, const Nom& id_du_domaine,
128 const Nom& localisation, const Nom& nature, const DoubleTab& data);
129
130 virtual int ecrire_item_int(const Nom& id_item, const Nom& id_du_domaine, const Nom& id_domaine, const Nom& localisation, const Nom& reference, const IntVect& data, const int reference_size);
131
132 virtual void set_single_lata_option(const bool ) { /* Do nothing */ }
133 virtual void set_postraiter_domain() { /* Do nothing */ }
134 virtual void set_deformable_domain() { /* Do nothing */ }
135 virtual void set_lagrangian_domain() { /* Do nothing */ }
136 virtual void set_discr_type(const Nom&) { /* Do nothing */ }
137 virtual void set_loc_vector(const std::vector<std::string>&) { /* Do nothing */ }
138
139protected:
140 OBS_PTR(Domaine_dis_base) domaine_dis_; ///< Reference to the discretized domain - used for face fields.
141};
142
143#endif /* Format_Post_base_included */
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Classe de base des formats de postraitements pour les champs (lata, med, cgns, lml,...
virtual void set_single_lata_option(const bool)
virtual int initialize(const Nom &file_basename, const int format, const Nom &option_para)
virtual void reset()=0
virtual int finir(const int est_le_dernier_post)
virtual void set_loc_vector(const std::vector< std::string > &)
virtual void set_postraiter_domain()
virtual int modify_file_basename(const Nom file_basename, bool for_restart, const double tinit)
Modification of the post processing file name. For save/restart this might also move and rename files...
virtual void set_lagrangian_domain()
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
virtual void ecrire_domaine_dual(const Domaine &domaine, const int est_le_premier_post)
virtual int completer_post(const Domaine &dom, const int axi, const Nature_du_champ &nature, const int nb_compo, const Noms &noms_compo, const Motcle &loc_post, const Nom &le_nom_champ_post)
virtual int init_ecriture(double temps_courant, double temps_post, int est_le_premier_postraitement_pour_nom_fich_, const Domaine &domaine)
virtual int ecrire_champ(const Domaine &domaine, const Noms &unite_, const Noms &noms_compo, int ncomp, double temps_, const Nom &id_du_champ, const Nom &id_du_domaine, const Nom &localisation, const Nom &nature, const DoubleTab &data)
Ecriture d'un champ dans le fichier de postraitement.
virtual int initialize_by_default(const Nom &file_basename)
Initialise le fichier avec des parametres appropries pour son format (exemple: format ascii,...
virtual int ecrire_temps(const double temps)
Commence l'ecriture d'un pas de temps.
virtual void set_deformable_domain()
virtual int ecrire_entete(const double temps_courant, const int reprise, const int est_le_premier_post)
virtual int ecrire_domaine_dis(const Domaine &domaine, const OBS_PTR(Domaine_dis_base)&domaine_dis_base, const int est_le_premier_post)
virtual int ecrire_domaine(const Domaine &domaine, const int est_le_premier_post)
Ecriture d'un maillage.
virtual int ecrire_item_int(const Nom &id_item, const Nom &id_du_domaine, const Nom &id_domaine, const Nom &localisation, const Nom &reference, const IntVect &data, const int reference_size)
Ecriture d'un tableau d'entiers dans le fichier de postraitement.
virtual void set_discr_type(const Nom &)
virtual int preparer_post(const Nom &id_du_domaine, const int est_le_premier_post, const int reprise, const double t_init)
OBS_PTR(Domaine_dis_base) domaine_dis_
Reference to the discretized domain - used for face fields.
virtual void set_param(Param &param) const override=0
virtual void resetTime(double t, const std::string dirname)
virtual int finir_ecriture(double temps_courant)
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
Un tableau de chaine de caracteres (VECT(Nom)).
Definition Noms.h:26
friend class Entree
Definition Objet_U.h:76
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55
static int axi
Definition Objet_U.h:101
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112