14#include "arcane/utils/ArcanePrecomp.h"
16#include "arcane/utils/ScopedPtr.h"
17#include "arcane/utils/StringBuilder.h"
18#include "arcane/utils/FatalErrorException.h"
20#include "arcane/ItemGroup.h"
21#include "arcane/Item.h"
22#include "arcane/IXmlDocumentHolder.h"
23#include "arcane/XmlNode.h"
24#include "arcane/XmlNodeList.h"
25#include "arcane/IParallelMng.h"
26#include "arcane/IIOMng.h"
27#include "arcane/Timer.h"
28#include "arcane/IMesh.h"
30#include "arcane/cea/LimaCutInfosReader.h"
48, m_parallel_mng(parallel_mng)
64 std::istringstream istr(buf);
118 if ((!is_parallel) || (is_parallel && nb_rank==1)){
128 if (!dir_name.
empty()){
129 correspondance_filename += dir_name;
130 correspondance_filename +=
"/";
132 correspondance_filename +=
"Correspondances";
140 if (!doc_holder.
get())
141 ARCANE_FATAL(
"Invalid correspondance file '{0}'",correspondance_filename);
143 info() <<
"Time to read (unit: second) 'Correspondances' file: "
146 XmlNode root_element = doc_holder->documentNode().documentElement();
157 for(
Int32 i=1; i<nb_rank; ++i ){
158 pm->
recv(other_sizes,i);
159 other_nodes_id.
resize(other_sizes[0]);
160 other_cells_id.
resize(other_sizes[1]);
162 pm->send(other_nodes_id,i);
163 pm->send(other_cells_id,i);
166 info() <<
"Time to transfert values: "
173 mesh_element_size[0] = nodes_id.
size();
174 mesh_element_size[1] = cells_id.
size();
175 pm->send(mesh_element_size,0);
176 pm->
recv(nodes_id,0);
177 pm->
recv(cells_id,0);
201 String ustr_buf(String::fromNumber(comm_rank));
204 for(
Integer i=0, s=cpu_list.size(); i<s; ++i ){
205 String id_str = cpu_list[i].attrValue(us_id);
208 if (id_str==ustr_buf){
209 cpu_elem = cpu_list[i];
214 ARCANE_FATAL(
"No element <cpu[@id=\"{0}\"]>",comm_rank);
216 if (node_elem.
null())
219 if (cell_elem.
null())
227 if (nb_read!=expected_size)
228 ARCANE_FATAL(
"Bad number of nodes rank={0} nb_read={1} expected={2}",
229 comm_rank,nb_read,expected_size);
237 if (nb_read!=expected_size)
238 ARCANE_FATAL(
"Bad number of cells rank={0} nb_read={1} expected={2}",
239 comm_rank,nb_read,expected_size);
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
virtual IXmlDocumentHolder * parseXmlFile(const String &filename, const String &schemaname=String())=0
Lit et analyse le fichier XML filename.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual void recv(ArrayView< char > values, Int32 rank)=0
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual IIOMng * ioMng() const =0
Gestionnaire des entrées/sorties.
virtual bool isParallel() const =0
Retourne true si l'exécution est parallèle.
virtual void barrier()=0
Effectue une barière.
Gestionnaire d'un document DOM.
void _readUniqueIndex(Int64ArrayView nodes_id, Int64ArrayView cells_id, const String &dir_name)
Récupération des indices uniques des entités.
void readItemsUniqueId(Int64ArrayView nodes_id, Int64ArrayView cells_id, const String &dir_name)
Construit les structures internes du maillage.
void _readUniqueIndexFromXml(Int64ArrayView nodes_id, Int64ArrayView cells_id, XmlNode root_element, Int32 rank)
Lecture des indices uniques à partir d'un fichier de correspondance XML.
T * get() const
Retourne l'objet référé par l'instance.
Encapsulation d'un pointeur qui se détruit automatiquement.
Constructeur de chaîne de caractère unicode.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
bool empty() const
Vrai si la chaîne est vide (nulle ou "")
Sentinelle pour le timer. La sentinelle associée à un timer permet de déclancher celui-ci au moment d...
@ TimerReal
Timer utilisant le temps réel.
Real lastActivationTime() const
Retourne le temps (en secondes) passé lors de la dernière activation du timer.
Classe d'accès aux traces.
TraceMessage info() const
Flot pour un message d'information.
Vecteur 1D de données avec sémantique par valeur (style STL).
Liste de noeuds d'un arbre DOM.
XmlNode child(const String &name) const
Noeud fils de celui-ci de nom name.
String value() const
Valeur du noeud.
XmlNodeList children(const String &name) const
Ensemble des noeuds fils de ce noeud ayant pour nom name.
bool null() const
Vrai si le noeud est nul.
ArrayView< Int64 > Int64ArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
UniqueArray< Int64 > Int64UniqueArray
Tableau dynamique à une dimension d'entiers 64 bits.
Int32 Integer
Type représentant un entier.
ArrayView< Integer > IntegerArrayView
Equivalent C d'un tableau à une dimension d'entiers.
std::int32_t Int32
Type entier signé sur 32 bits.