TrioCFD 1.9.9_beta
TrioCFD documentation
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 : Post-processing class for Eulerian fields in MED format.
23 *
24 */
25
26///////////////////////////////////////////////////////////////////////
27// To create a valid file, the following steps are needed:
28// (initialization) initialize("base_nom_fichier",...);
29// //base_nom_fichier is the file name without the ".med" extension
30// ecrire_entete(temps_courant,reprise,est_le_premier_post)
31// [ preparer_post(...) ]
32// [ completer_post(...) ]
33// //The two methods above generate three files that
34// //are concatenated at the end of the computation and allow exporting
35// //the .med file to another format (lml)
36// ecrire_domaine(domaine,est_le_premier_post)
37//
38// (for each 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// (finalize) finir(est_le_dernier_post)
48// //In addition to the final write, concatenates the three files
49// //created by preparer_pot() and completer_post()
50//////////////////////////////////////////////////////////////////////
51
53{
54 Declare_instanciable_sans_constructeur(Format_Post_Med);
55public:
56 // Methods declared in the base class (common interface for all
57 // field post-processing formats):
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 // Methods specific to this 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
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
Format_Post_Med()
Default constructor:
void reset() override
Resets the object to the state obtained by the default constructor.
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
Writing a mesh.
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
Writing an integer array to the post-processing file.
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
Initializes the class with default parameters.
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
Starts writing a new time step.
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)
Base class for post-processing output formats for fields (lata, med, cgns, lml, single_lata).
OBS_PTR(Domaine_dis_base) domaine_dis_
Reference to the discretized domain - used for face fields.
A character string (Nom) in uppercase.
Definition Motcle.h:26
class Nom: a character string for naming TRUST objects.
Definition Nom.h:31
An array of character strings (VECT(Nom)).
Definition Noms.h:26
static int axi
Definition Objet_U.h:96
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112