14#include "arcane/lima/LimaCutInfosReader.h"
16#include "arcane/utils/ArcanePrecomp.h"
18#include "arcane/utils/ScopedPtr.h"
19#include "arcane/utils/StringBuilder.h"
20#include "arcane/utils/FatalErrorException.h"
22#include "arcane/core/ItemGroup.h"
23#include "arcane/core/Item.h"
24#include "arcane/core/IXmlDocumentHolder.h"
25#include "arcane/core/XmlNode.h"
26#include "arcane/core/XmlNodeList.h"
27#include "arcane/core/IParallelMng.h"
28#include "arcane/core/IIOMng.h"
29#include "arcane/core/Timer.h"
30#include "arcane/core/IMesh.h"
52, m_parallel_mng(parallel_mng)
68 std::istringstream istr(buf);
122 if ((!is_parallel) || (is_parallel && nb_rank==1)){
132 if (!dir_name.
empty()){
133 correspondance_filename += dir_name;
134 correspondance_filename +=
"/";
136 correspondance_filename +=
"Correspondances";
144 if (!doc_holder.
get())
145 ARCANE_FATAL(
"Invalid correspondance file '{0}'",correspondance_filename);
147 info() <<
"Time to read (unit: second) 'Correspondances' file: "
150 XmlNode root_element = doc_holder->documentNode().documentElement();
161 for(
Int32 i=1; i<nb_rank; ++i ){
162 pm->
recv(other_sizes,i);
163 other_nodes_id.
resize(other_sizes[0]);
164 other_cells_id.
resize(other_sizes[1]);
166 pm->send(other_nodes_id,i);
167 pm->send(other_cells_id,i);
170 info() <<
"Time to transfert values: "
177 mesh_element_size[0] = nodes_id.
size();
178 mesh_element_size[1] = cells_id.
size();
179 pm->send(mesh_element_size,0);
180 pm->
recv(nodes_id,0);
181 pm->
recv(cells_id,0);
205 String ustr_buf(String::fromNumber(comm_rank));
208 for(
Integer i=0, s=cpu_list.size(); i<s; ++i ){
209 String id_str = cpu_list[i].attrValue(us_id);
212 if (id_str==ustr_buf){
213 cpu_elem = cpu_list[i];
218 ARCANE_FATAL(
"No element <cpu[@id=\"{0}\"]>",comm_rank);
220 if (node_elem.
null())
223 if (cell_elem.
null())
231 if (nb_read!=expected_size)
232 ARCANE_FATAL(
"Bad number of nodes rank={0} nb_read={1} expected={2}",
233 comm_rank,nb_read,expected_size);
241 if (nb_read!=expected_size)
242 ARCANE_FATAL(
"Bad number of cells rank={0} nb_read={1} expected={2}",
243 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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
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.