TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
Format_Post_Med.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#ifndef Format_Post_Med_included
16#define Format_Post_Med_included
17
18#include <TRUSTTabs_forward.h>
19#include <Format_Post_base.h>
20#include <Ecrire_MED.h>
21
22/*! @brief : Classe de postraitement des champs euleriens au format med.
23 *
24 */
25
26///////////////////////////////////////////////////////////////////////
27// Pour creer un fichier valide, il faut faire:
28// (initialisation) initialize("base_nom_fichier",...);
29// //base_nom_fichier indique le nom du fichier sans extension ".med"
30// ecrire_entete(temps_courant,reprise,est_le_premier_post)
31// [ preparer_post(...) ]
32// [ completer_post(...) ]
33// //Les deux methodes ci-dessus permettent de generer trois fichiers qui
34// //seront concatenes en fin de calcul et permettent d exploiter le fichier .med
35// //a un autre format (lml)
36// ecrire_domaine(domaine,est_le_premier_post)
37//
38// (pour chaque dt) ecrire_temps(temps_courant)
39// ecrire_champ(const Domaine& domaine, const Noms& unite_, const Noms& noms_compo,
40// int ncomp,double temps_,double temps_courant
41// const Nom & id_du_champ,
42// const Nom & id_du_domaine,
43// const Nom & localisation,
44// const DoubleTab & data)
45// [ecrire_champ(...,data)]
46//
47// (finir) finir(est_le_dernier_post)
48// //En plus de l ecriture de fin, concatenation des trois fichiers
49// //crees par preparer_pot() et completer_post()
50//////////////////////////////////////////////////////////////////////
51
53{
54 Declare_instanciable_sans_constructeur(Format_Post_Med);
55public:
56 // Methodes declarees dans la classe de base (interface commune a tous
57 // les formats de postraitment de champs):
58 void reset() override;
59 void set_param(Param& param) const override;
60 int initialize_by_default(const Nom& file_basename) override;
61 int initialize(const Nom& file_basename, const int format, const Nom& option_para) override;
62 int ecrire_entete(const double temps_courant,const int reprise,const int est_le_premier_post) override;
63 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) override;
64 int preparer_post(const Nom& id_du_domaine, const int est_le_premier_post, const int reprise, const double t_init) override;
65 int finir(const int est_le_dernier_post) override;
66 int ecrire_domaine(const Domaine& domaine, const int est_le_premier_post) override;
67 void ecrire_domaine_dual(const Domaine& domaine, const int est_le_premier_post) override;
68 int ecrire_domaine_dis(const Domaine& domaine,const OBS_PTR(Domaine_dis_base)& domaine_dis_base,const int est_le_premier_post) override;
69 int ecrire_temps(const double temps) override;
70
71 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,
72 const Nom& localisation, const Nom& nature, const DoubleTab& data) override;
73
74 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) override;
75
77
78protected:
80
81 // Methodes specifiques a ce format:
82 virtual int ecrire_domaine_med(const Domaine& domaine, const Nom& nom_fic,const int est_le_premier_post,Nom& nom_fich);
83 virtual int ecrire_temps_med(const double temps,Nom& nom_fich);
84 virtual int ecrire_champ_med(const Domaine& domaine, const Noms& unite_, const Noms& noms_compo, int ncomp, double temps_, const Nom& nom_pdb, const Nom& id_du_champ, const Nom& id_du_domaine,
85 const Nom& localisation, const DoubleTab& data, Nom& nom_fich);
86
87 virtual int ecrire_entete_med(Nom& nom_fic, const int est_le_premier_post);
88 virtual int finir_med(Nom& nom_fic, int& est_le_dernier_post);
89 virtual int completer_post_med(const Nom& nom_fich2, const Nom& nom1, const Nom& nom2);
90 virtual int preparer_post_med(const Nom& nom_fich1, const Nom& nom_fich2, const Nom& nom_fich3, const Nom& id_du_domaine, const int est_le_premier_post);
91
92 Ecrire_MED ecr_med_;
93};
94
95#endif
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Format_Post_Med()
Constructeur par defaut:
void reset() override
Remet l'objet dans l'etat obtenu par le constructeur par defaut.
int ecrire_domaine_dis(const Domaine &domaine, const OBS_PTR(Domaine_dis_base)&domaine_dis_base, const int est_le_premier_post) override
voir Format_Post_base::ecrire_domaine
Ecrire_MED ecr_med_
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) override
Nom med_basename_
int ecrire_domaine(const Domaine &domaine, const int est_le_premier_post) override
Ecriture d'un maillage.
virtual int preparer_post_med(const Nom &nom_fich1, const Nom &nom_fich2, const Nom &nom_fich3, const Nom &id_du_domaine, const int est_le_premier_post)
virtual int finir_med(Nom &nom_fic, int &est_le_dernier_post)
virtual int completer_post_med(const Nom &nom_fich2, const Nom &nom1, const Nom &nom2)
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) override
Ecriture d'un tableau d'entiers dans le fichier de postraitement.
virtual int ecrire_champ_med(const Domaine &domaine, const Noms &unite_, const Noms &noms_compo, int ncomp, double temps_, const Nom &nom_pdb, const Nom &id_du_champ, const Nom &id_du_domaine, const Nom &localisation, const DoubleTab &data, Nom &nom_fich)
int initialize_by_default(const Nom &file_basename) override
Initialisation de la classe avec des parametres par defaut.
virtual int ecrire_temps_med(const double temps, Nom &nom_fich)
virtual int ecrire_entete_med(Nom &nom_fic, const int est_le_premier_post)
void ecrire_domaine_dual(const Domaine &domaine, const int est_le_premier_post) override
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) override
voir Format_Post_base::ecrire_champ
void set_param(Param &param) const override
int ecrire_temps(const double temps) override
commence l'ecriture d'un nouveau pas de temps
int preparer_post(const Nom &id_du_domaine, const int est_le_premier_post, const int reprise, const double t_init) override
int ecrire_entete(const double temps_courant, const int reprise, const int est_le_premier_post) override
int initialize(const Nom &file_basename, const int format, const Nom &option_para) override
int finir(const int est_le_dernier_post) override
virtual int ecrire_domaine_med(const Domaine &domaine, const Nom &nom_fic, const int est_le_premier_post, Nom &nom_fich)
Classe de base des formats de postraitements pour les champs (lata, med, cgns, lml,...
OBS_PTR(Domaine_dis_base) domaine_dis_
Reference to the discretized domain - used for face fields.
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
static int axi
Definition Objet_U.h:101
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112