16#include <IJK_Lata_writer.h>
19void dumplata_newtime(
const char *filename,
double time)
26 const int default_prec = (int)std::cout.precision();
27 constexpr int max_prec = std::numeric_limits<double>::digits10 + 1;
28 std::ostringstream oss;
29 oss <<
"TEMPS " << std::setprecision(max_prec) << time << std::setprecision(default_prec);
31 master_file.
ouvrir(filename, ios::app);
32 master_file << oss.str() << finl;
36void dumplata_header(
const char *filename)
43 master_file.
ouvrir(filename);
44 master_file <<
"LATA_V2.1" << finl;
45 master_file <<
"IJK_specific_format" << finl;
46 master_file <<
"TRUST" << finl;
47 Nom format = (
sizeof(int)==8 ?
"INT64" :
"INT32");
48 master_file <<
"Format LITTLE_ENDIAN,C_INDEXING,C_ORDERING,F_MARKERS_NO,"<<format<<
",REAL32" << finl;
56void dumplata_add_geometry(
const char *filename,
const Domaine_IJK& splitting)
68 Nom basename(filename);
70 master_file.
ouvrir(basename, ios::app);
75 Cerr <<
"Error in dumplata_header: geometry has no name" << finl;
78 for (
int dir = 0; dir < 3; dir++)
80 fname[dir] = prefix + geomname +
Nom(
".coord") +
Nom((
char)(
'x'+dir));
82 binary_file.
ouvrir(fname[dir]);
86 for (i = 0; i < n; i++)
87 tmp[i] = (
float)coord[i];
88 binary_file.
put(tmp.
addr(), n, 1);
91 master_file <<
"Geom " << geomname <<
" type_elem=HEXAEDRE" << finl;
92 master_file <<
"Champ SOMMETS_IJK_I " << fname[0] <<
" geometrie=" << geomname <<
" size=" << splitting.
get_nb_elem_tot(0)+1 <<
" composantes=1" << finl;
93 master_file <<
"Champ SOMMETS_IJK_J " << fname[1] <<
" geometrie=" << geomname <<
" size=" << splitting.
get_nb_elem_tot(1)+1 <<
" composantes=1" << finl;
94 master_file <<
"Champ SOMMETS_IJK_K " << fname[2] <<
" geometrie=" << geomname <<
" size=" << splitting.
get_nb_elem_tot(2)+1 <<
" composantes=1" << finl;
99void dumplata_ft_field(
const char *filename,
const char *meshname,
100 const char *field_name,
const char *localisation,
101 const ArrOfInt& field,
int step)
104 Nom fdfield = prefix + field_name;
116 master_file.
ouvrir(filename, ios::app);
119 Nom format =
"INT32";
120 master_file <<
"Champ " << field_name <<
" " << basename(fdfield) <<
" geometrie=" << meshname ;
122 master_file <<
" size=" << nvaltot <<
" composantes=1 format="<<format<<
",NO_INDEXING localisation="
123 << localisation << finl;
128void dumplata_ft_field(
const char *filename,
const char *meshname,
129 const char *field_name,
const char *localisation,
130 const ArrOfDouble& field,
int step)
133 Nom fdfield = prefix + field_name;
141 for (
int i = 0; i < n; i++)
142 tmp[i] = (
float)field[i];
150 master_file.
ouvrir(filename, ios::app);
153 const DoubleTab* zfld =
dynamic_cast<const DoubleTab*
>(&field);
162 master_file <<
"Champ " << field_name <<
" " << basename(fdfield) <<
" geometrie=" << meshname;
164 master_file <<
" size=" << nvaltot/nb_compo <<
" composantes=" << nb_compo <<
" localisation="
165 << localisation << finl;
170void dumplata_finish(
const char *filename)
175 master_file.
ouvrir(filename, ios::app);
176 master_file <<
"FIN" << finl;
180Nom dirname(
const Nom& filename)
183 split_path_filename(filename, path, name);
186Nom basename(
const Nom& filename)
189 split_path_filename(filename, path, name);
193bool lata_has_field(
const char *filename_with_path,
int tstep,
const char *geometryname,
const char *fieldname)
196 split_path_filename(filename_with_path, path, dbname);
199 db.read_master_file(path, filename_with_path);
202 return db.field_exists(tstep, geometryname, fieldname);
virtual void set_64b(bool is_64b)
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
int get_nb_elem_tot(int direction) const
Returns the total (global) number of mesh cells in requested direction.
const ArrOfDouble & get_node_coordinates(int direction) const
Returns an array with the coordinates of all nodes in the mesh in requested direction.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
Ecriture dans un fichier partage Cette classe derive de Ecr_Fic_Par, en utilisant une sortie en binai...
int put(const unsigned *ob, std::streamsize n, std::streamsize pas) override
int ouvrir(const char *name, IOS_OPEN_MODE mode=ios::out) override
Ouvre le fichier avec les parametres mode et prot donnes Ces parametres sont les parametres de la met...
Sortie & syncfile() override
Provoque l'ecriture sur disque des donnees accumulees sur les differents processeurs depuis le dernie...
void set_64b(bool is64) override
class Nom Une chaine de caractere pour nommer les objets de TRUST
Un tableau de chaine de caracteres (VECT(Nom)).
static double mp_sum(double)
Calcule la somme de x sur tous les processeurs du groupe 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...
virtual int ouvrir(const char *name, IOS_OPEN_MODE mode=ios::out)
virtual int put(const unsigned *ob, std::streamsize n, std::streamsize nb_colonnes=1)
void set_bin(bool bin) override
Change le mode d'ecriture du fichier.
_SIZE_ size_array() const
void resize_array(_SIZE_ new_size, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension(int d) const