14#include "arcane/utils/String.h"
15#include "arcane/utils/Enumerator.h"
16#include "arcane/utils/Iterator.h"
17#include "arcane/utils/List.h"
18#include "arcane/utils/PlatformUtils.h"
19#include "arcane/utils/Iostream.h"
20#include "arcane/utils/OStringStream.h"
21#include "arcane/utils/ArcanePrecomp.h"
23#include "arcane/Item.h"
24#include "arcane/ItemEnumerator.h"
25#include "arcane/IVariable.h"
26#include "arcane/ISubDomain.h"
27#include "arcane/IMesh.h"
28#include "arcane/IMeshSubMeshTransition.h"
29#include "arcane/StdNum.h"
30#include "arcane/ItemGroup.h"
31#include "arcane/IParallelMng.h"
32#include "arcane/Directory.h"
33#include "arcane/PostProcessorWriterBase.h"
34#include "arcane/Service.h"
35#include "arcane/SimpleProperty.h"
36#include "arcane/FactoryService.h"
37#include "arcane/VariableCollection.h"
39#include "arcane/std/DumpW.h"
55Integer code_hex[8] = { 0, 3, 2, 1, 4, 7, 6, 5 };
56Integer code_prism[6] = { 2, 1, 0, 5, 4, 3 };
57Integer code_pyr[5] = { 4, 1, 2, 3, 0 };
58Integer code_tet[4] = { 0, 1, 3, 2 };
85 void writeVal(IVariable&,ConstArrayView<Real3>)
override;
86 void writeVal(IVariable&,ConstArrayView<Int64>)
override {}
87 void writeVal(IVariable&,ConstArrayView<Int32>)
override {}
88 void writeVal(IVariable&,ConstArrayView<Real2x2>)
override {}
89 void writeVal(IVariable&,ConstArrayView<Real3x3>)
override {}
90 void writeVal(IVariable&,ConstArrayView<String>)
override {}
92 void writeVal(IVariable&,ConstArray2View<Byte>)
override {}
93 void writeVal(IVariable&,ConstArray2View<Real>)
override {}
94 void writeVal(IVariable&,ConstArray2View<Int64>)
override {}
95 void writeVal(IVariable&,ConstArray2View<Int32>)
override {}
96 void writeVal(IVariable&,ConstArray2View<Real2>)
override {}
97 void writeVal(IVariable&,ConstArray2View<Real3>)
override {}
98 void writeVal(IVariable&,ConstArray2View<Real2x2>)
override {}
99 void writeVal(IVariable&,ConstArray2View<Real3x3>)
override {}
101 void writeVal(IVariable&,ConstMultiArray2View<Byte>)
override {}
102 void writeVal(IVariable&,ConstMultiArray2View<Real>)
override {}
103 void writeVal(IVariable&,ConstMultiArray2View<Int64>)
override {}
104 void writeVal(IVariable&,ConstMultiArray2View<Int32>)
override {}
105 void writeVal(IVariable&,ConstMultiArray2View<Real2>)
override {}
106 void writeVal(IVariable&,ConstMultiArray2View<Real3>)
override {}
107 void writeVal(IVariable&,ConstMultiArray2View<Real2x2>)
override {}
108 void writeVal(IVariable&,ConstMultiArray2View<Real3x3>)
override {}
115 static constexpr Integer m_max_digit = 5;
117 static constexpr Integer MAX_FLOAT_DIGIT = FloatInfo<Real>::maxDigit()+1;
119 ISubDomain* m_sub_domain;
139, m_base_directory(filename)
141, m_save_variables(variables.clone())
149 const int type = cell.
type();
150 if (type==IT_Vertex || type==IT_Line2 || type==IT_Triangle3
151 || type== IT_Quad4 || type==IT_Hexaedron8 || type==IT_Pyramid5
152 || type==IT_Pentagon5 || type==IT_Tetraedron4)
156 <<
" is unknown in UCD format. Cell will be ignored.";
163 for( Integer i=0; i<nb_cell_var; ++i ){
168 for( Integer i=0; i<nb_node_var; ++i ){
174 debug() <<
"DumpWUCD::DumpWUCD - "
197 info() <<
"** HERE dump Real variable " << v.
name();
204 for( Integer i=0 ; i<size ; i++)
209 for( Integer i=0 ; i<size ; i++){
215 info() <<
"Variable not managed by UCD writer: " << v.
name();
229 info() <<
"** HERE dump Real3 variable " << v.
name();
236 for( Integer i=0 ; i<size ; i++) {
244 for( Integer i=0 ; i<size ; i++){
253 info() <<
"Variable not managed by UCD writer: " << v.
name();
272 info() <<
"** Entering method DumpWUCD::writeBegin";
284 info() <<
"** Entering method DumpWUCD::writeEnd";
290 ostr().width(m_max_digit);
323 if (
var->dimension() == 1){
329 debug() <<
" Variable " << name
330 <<
" kind = IK_Node, type = DT_Real";
337 debug() <<
" Variable " << name
338 <<
" kind = IK_Cell, type = DT_Real";
347 debug() <<
" Variable " << name
348 <<
" kind = IK_Node, type = DT_Real3";
355 debug() <<
" Variable " << name
356 <<
" kind = IK_Cell, type = DT_Real3";
375 for( Integer i=0 ; i<
nb_node ; i++){
388 Integer nb_cell_node=cell.
nbNode();
396 for( Integer i=0 ; i<nb_cell_node ; i++)
401 for( Integer i=0 ; i<nb_cell_node ; i++)
406 for( Integer i=0 ; i<nb_cell_node ; i++)
411 for( Integer i=0 ; i<nb_cell_node ; i++)
416 for( Integer i=0 ; i<nb_cell_node ; i++)
421 for( Integer i=0 ; i<nb_cell_node ; i++)
424 case(IT_Tetraedron4):
426 for( Integer i=0 ; i<nb_cell_node ; i++)
444 for( Integer i=0 ; i<
nb_node ; i++)
470 <<
"3" <<
'\n' <<
"1" <<
'\n'
471 <<
"7" <<
'\n' <<
"Unknown" <<
'\n'
507 m_writer =
new DumpWUCD(subDomain(),subDomain()->defaultMesh(),
#define ARCANE_REGISTER_SUB_DOMAIN_FACTORY(aclass, ainterface, aname)
Enregistre un service de fabrique pour la classe aclass.
#define ARCANE_REGISTER_CASE_OPTIONS_NOAXL_FACTORY(aclass, ainterface, aname)
Enregistre un service de fabrique pour la classe aclass.
Classe gérant un répertoire.
virtual String file(const String &file_name) const
Retourne le chemin complet du fichier file_name dans le répertoire.
virtual bool createDirectory() const
Créé le répertoire.
VariableList m_save_variables
Liste des variables a exporter.
UniqueArray< Ref< OStringStream > > m_cell_streams
Valeur des var. aux mailles.
UniqueArray< Ref< OStringStream > > m_node_streams
Valeur des var. aux noeuds.
void writeVal(IVariable &, ConstArrayView< Byte >) override
Ecriture pour la variable v du tableau a.
RealUniqueArray m_times
Liste des instants de temps.
Directory m_base_directory
Nom du répertoire de stockage.
UniqueArray< Cell > m_managed_cells
Liste des mailles gerees.
void beginWrite() override
Creation du fichier UCD (nomme UCD_<no_iteration>) et de son entete. Cette entete contient :
void endWrite() override
Concatenation du flux contenant les donnees des mailles au fichier principal.
void setMetaData(const String &meta_data) override
Positionne les infos des méta-données.
wrapper transformant des appels à l'interface IDataWriter en ex IDumpW
Interface d'écriture des données d'une variable.
virtual Integer nbCell()=0
Nombre de mailles du maillage.
virtual Integer nbNode()=0
Nombre de noeuds du maillage.
virtual CellGroup allCells()=0
Groupe de toutes les mailles.
virtual IPrimaryMesh * toPrimaryMesh()=0
Retourne l'instance sous la forme d'un IPrimaryMesh.
Interface d'un écrivain pour les informations de post-traitement.
Interface du gestionnaire d'un sous-domaine.
virtual const CommonVariables & commonVariables() const =0
Informations sur les variables standards.
Interface d'une variable.
virtual eItemKind itemKind() const =0
Type des entités du maillage sur lequel repose la variable.
virtual String name() const =0
Nom de la variable.
Node node(Int32 i) const
i-ème noeud de l'entité
Int32 nbNode() const
Nombre de noeuds de l'entité
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
ItemUniqueId uniqueId() const
Identifiant unique sur tous les domaines.
Int16 type() const
Type de l'entité
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Flot de sortie lié à une String.
Classe de base d'un écrivain pour les informations de post-traitement.
virtual RealConstArrayView times()
Liste des temps sauvés.
virtual const String & baseDirectoryName()
Nom du répertoire de sortie des fichiers.
virtual VariableCollection variables()
Liste des variables à sauver.
Classe gérant un vecteur de réel de dimension 3.
Structure contenant les informations pour créer un service.
Post-traitement au format UCD.
void notifyBeginWrite() override
Notifie qu'une sortie va être effectuée avec les paramètres courants.
IDataWriter * dataWriter() override
Retourne l'écrivain associé à ce post-processeur.
void close() override
Ferme l'écrivain. Après fermeture, il ne peut plus être utilisé
void notifyEndWrite() override
Notifie qu'une sortie vient d'être effectuée.
Integer size() const
Nombre d'éléments du vecteur.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
Classe d'accès aux traces.
TraceMessageDbg debug(Trace::eDebugLevel=Trace::Medium) const
Flot pour un message de debug.
TraceMessage info() const
Flot pour un message d'information.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
eDataType
Type d'une donnée.
@ DT_Real3
Donnée de type vecteur 3.
@ DT_Real
Donnée de type réel.
Int32 Integer
Type représentant un entier.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.