Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshGeneratorService.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* MeshGeneratorService.cc (C) 2000-2020 */
9/* */
10/* Service de génération de maillage. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/PlatformUtils.h"
15#include "arcane/utils/ScopedPtr.h"
16
17#include "arcane/IMeshReader.h"
18#include "arcane/ISubDomain.h"
19#include "arcane/XmlNode.h"
20#include "arcane/Service.h"
21#include "arcane/IParallelMng.h"
22#include "arcane/IPrimaryMesh.h"
23#include "arcane/MeshVariable.h"
24#include "arcane/ItemPrinter.h"
25#include "arcane/FactoryService.h"
26#include "arcane/AbstractService.h"
27
28#include "arcane/std/SodMeshGenerator.h"
29#include "arcane/std/SimpleMeshGenerator.h"
30#include "arcane/std/CartesianMeshGenerator.h"
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35ARCANE_BEGIN_NAMESPACE
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
43: public AbstractService
44, public IMeshReader
45{
46 public:
48 public:
49 virtual void build() {}
50 public:
51 virtual bool allowExtension(const String& str)
52 {
53 return str.null();
54 }
55 virtual eReturnType readMeshFromFile(IPrimaryMesh* mesh,
56 const XmlNode& mesh_node,
57 const String& file_name,
58 const String& dirname,
60};
61
62/*---------------------------------------------------------------------------*/
63/*---------------------------------------------------------------------------*/
64
65MeshGeneratorService::
66MeshGeneratorService(const ServiceBuildInfo& sbi)
67: AbstractService(sbi)
68{
69}
70
71
72/*---------------------------------------------------------------------------*/
73/*---------------------------------------------------------------------------*/
74
77 const XmlNode& mesh_node,
78 const String& filename,
79 const String& dirname,
81{
82 ARCANE_UNUSED(filename);
83 ARCANE_UNUSED(dirname);
84 ARCANE_UNUSED(use_internal_partition);
85
86 String meshclass = platform::getEnvironmentVariable("ARCANE_MESHGENERATOR");
87 String meshgen_ustr("meshgenerator");
90
91 //msg->warning() << "USING MESHGENERATOR !!\n";
92 if (!meshclass.null()){
93 gen_node = mesh_node.childWithNameAttr(meshgen_ustr,meshclass);
94 info() << "Using ARCANE_MESHGENERATOR";
95 }else{
97 }
98 if (gen_node.null()) return RTIrrelevant;
99 XmlNode node;
100 // Recherche du 'cartesian' mesh generator
101 if (node.null()){
102 node = gen_node.child("cartesian");
103 if (!node.null())
104 generator = new CartesianMeshGenerator(mesh);
105 }
106 // Recherche du 'sod' mesh generator
107 if (node.null()){
108 node = gen_node.child("sod");
109 if (!node.null())
110 generator = new SodMeshGenerator(mesh, node.attr("zyx").valueAsBoolean());
111 }
112 // Recherche du 'simple' mesh generator
113 if (node.null()){
114 node = gen_node.child("simple");
115 if (!node.null())
116 generator = new SimpleMeshGenerator(mesh);
117 }
118 if (!generator.get()){
119 warning() << "Type de générateur de maillage inconnu.";
120 return RTIrrelevant;
121 }
122 if (generator->readOptions(node))
123 return RTError;
124 if (generator->generateMesh())
125 return RTError;
126 return RTOk;
127}
128
129/*---------------------------------------------------------------------------*/
130/*---------------------------------------------------------------------------*/
131
133
134/*---------------------------------------------------------------------------*/
135/*---------------------------------------------------------------------------*/
136
137ARCANE_END_NAMESPACE
138
139/*---------------------------------------------------------------------------*/
140/*---------------------------------------------------------------------------*/
#define ARCANE_REGISTER_SUB_DOMAIN_FACTORY(aclass, ainterface, aname)
Enregistre un service de fabrique pour la classe aclass.
Classe de base d'un service.
Interface du service gérant la lecture d'un maillage.
Definition IMeshReader.h:37
eReturnType
Types des codes de retour d'une lecture ou écriture.
Definition IMeshReader.h:42
@ RTIrrelevant
Non concerné par l'opération. Cela signifie que le format de fichier ne correspond pas à ce lecteur o...
Definition IMeshReader.h:50
@ RTError
Erreur lors de l'opération.
Definition IMeshReader.h:44
@ RTOk
Opération effectuée avec succès.
Definition IMeshReader.h:43
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Service de génération de maillages.
virtual eReturnType readMeshFromFile(IPrimaryMesh *mesh, const XmlNode &mesh_node, const String &file_name, const String &dirname, bool use_internal_partition)
Lit un maillage à partir d'un fichier.
virtual void build()
Construction de niveau build du service.
virtual bool allowExtension(const String &str)
Vérifie si le service supporte les fichiers avec l'extension str.
Structure contenant les informations pour créer un service.
Génèrateur simple de chaque type d'entité de maillage.
Génèrateur de maillage pour un tube à choc.
Noeud d'un arbre DOM.
Definition XmlNode.h:51
XmlNode attr(const String &name, bool throw_exception=false) const
Retourne l'attribut de nom name.
Definition XmlNode.cc:248
bool null() const
Vrai si le noeud est nul.
Definition XmlNode.h:294
bool valueAsBoolean(bool throw_exception=false) const
Valeur du noeud convertie en booléan.
Definition XmlNode.cc:412
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
Definition String.cc:304
TraceMessage warning() const
Flot pour un message d'avertissement.
TraceMessage info() const
Flot pour un message d'information.