14#include "arcane/utils/StdHeader.h"
15#include "arcane/utils/PlatformUtils.h"
16#include "arcane/utils/Iostream.h"
17#include "arcane/utils/ScopedPtr.h"
18#include "arcane/utils/VersionInfo.h"
19#include "arcane/utils/StringBuilder.h"
20#include "arcane/utils/ITraceMng.h"
21#include "arcane/utils/TraceAccessor.h"
22#include "arcane/utils/MemoryInfo.h"
23#include "arcane/utils/List.h"
24#include "arcane/utils/Property.h"
25#include "arcane/utils/TraceAccessor2.h"
26#include "arcane/utils/ValueConvert.h"
27#include "arcane/utils/IProcessorAffinityService.h"
28#include "arcane/utils/IProfilingService.h"
30#include "arcane/core/ISubDomain.h"
31#include "arcane/core/IVariableMng.h"
32#include "arcane/core/IModuleMng.h"
33#include "arcane/core/IServiceMng.h"
34#include "arcane/core/IModule.h"
35#include "arcane/core/IModuleMaster.h"
36#include "arcane/core/IEntryPointMng.h"
37#include "arcane/core/IEntryPoint.h"
38#include "arcane/core/IMeshReader.h"
39#include "arcane/core/ITimerMng.h"
40#include "arcane/core/IApplication.h"
41#include "arcane/core/IGhostLayerMng.h"
42#include "arcane/core/ArcaneException.h"
43#include "arcane/core/CaseOptionsMain.h"
44#include "arcane/core/IMesh.h"
45#include "arcane/core/IMeshModifier.h"
46#include "arcane/core/IMeshSubMeshTransition.h"
47#include "arcane/core/Properties.h"
48#include "arcane/core/IParallelMng.h"
49#include "arcane/core/Directory.h"
50#include "arcane/core/ITimeHistoryMng.h"
51#include "arcane/core/ICaseMng.h"
52#include "arcane/core/ICheckpointMng.h"
53#include "arcane/core/IPropertyMng.h"
54#include "arcane/core/ITimeStats.h"
55#include "arcane/core/ITimeLoop.h"
56#include "arcane/core/ITimeLoopMng.h"
57#include "arcane/core/IIOMng.h"
58#include "arcane/core/IMainFactory.h"
59#include "arcane/core/Timer.h"
60#include "arcane/core/CommonVariables.h"
61#include "arcane/core/XmlNode.h"
62#include "arcane/core/ICaseDocument.h"
63#include "arcane/core/IPhysicalUnitSystem.h"
64#include "arcane/core/IPhysicalUnitSystemService.h"
65#include "arcane/core/IService.h"
66#include "arcane/core/IServiceInfo.h"
67#include "arcane/core/ServiceUtils.h"
68#include "arcane/core/IRessourceMng.h"
69#include "arcane/core/ISession.h"
70#include "arcane/core/IMeshStats.h"
71#include "arcane/core/IParallelSuperMng.h"
72#include "arcane/core/IParallelReplication.h"
73#include "arcane/core/IServiceLoader.h"
74#include "arcane/core/ICheckpointReader.h"
75#include "arcane/core/IMeshPartitioner.h"
76#include "arcane/core/ICaseMeshMasterService.h"
77#include "arcane/core/ILoadBalanceMng.h"
78#include "arcane/core/CaseNodeNames.h"
79#include "arcane/core/ModuleBuildInfo.h"
80#include "arcane/core/Observable.h"
81#include "arcane/core/VariableCollection.h"
82#include "arcane/core/SubDomainBuildInfo.h"
83#include "arcane/core/ServiceBuilder.h"
84#include "arcane/core/IMeshUtilities.h"
85#include "arcane/core/IMeshMng.h"
86#include "arcane/core/MeshHandle.h"
87#include "arcane/core/ObserverPool.h"
88#include "arcane/core/ConfigurationPropertyReader.h"
89#include "arcane/core/parallel/IStat.h"
91#include "arcane/core/internal/IDataInternal.h"
92#include "arcane/core/internal/ICaseMngInternal.h"
93#include "arcane/core/internal/IParallelMngInternal.h"
94#include "arcane/core/internal/IVariableMngInternal.h"
96#include "arcane/impl/ConfigurationReader.h"
97#include "arcane/impl/internal/MeshMng.h"
98#include "arcane/impl/internal/LegacyMeshBuilder.h"
100#include "arcane/CaseOptionService.h"
101#include "arcane/CaseOptionBuildInfo.h"
103#include "arcane/accelerator/core/IAcceleratorMng.h"
104#include "arcane/accelerator/core/DeviceInfo.h"
105#include "arcane/accelerator/core/Runner.h"
106#include "arcane/accelerator/core/AcceleratorRuntimeInitialisationInfo.h"
107#include "arcane/accelerator/core/IDeviceInfoList.h"
125 m_mesh_service.addAlternativeNodeName(
"fr",
"maillages");
130 return m_case_options->configList();
133 ICaseOptions* options()
const {
return m_case_options.get(); }
137 m_mesh_service.instance()->createMeshes();
155 ARCANE_DECLARE_PROPERTY_CLASS(
SubDomain);
174 &PropertyMngCheckpoint::_notifyWrite,
177 &PropertyMngCheckpoint::_notifyRead,
183 info(4) <<
"PropertyMngCheckpoint: READ";
184 m_sub_domain->
propertyMng()->readFrom(m_property_values);
188 info(4) <<
"PropertyMngCheckpoint: WRITE";
204 void build()
override;
206 void destroy()
override;
245 void dumpInfo(std::ostream&)
override;
250 IMesh* mesh()
override {
return m_default_mesh_handle.
mesh(); }
251 IMesh* findMesh(
const String& name,
bool throw_exception)
override;
265 m_legacy_mesh_builder->m_initial_partitioner = partitioner;
272 void addMesh(
IMesh* mesh)
override;
295 void _setLegacyMeshCreation(
bool v){ m_is_create_default_mesh_v2 = !v; }
296 bool isLegacyMeshCreation()
const {
return !m_is_create_default_mesh_v2; }
302 const char* _msgClassName()
const {
return "Init"; }
342 bool m_is_create_default_mesh_v2;
353 void _doInitialPartition();
355 void _notifyWriteCheckpoint();
363static ISubDomain* global_sub_domain =
nullptr;
367extern "C" ARCANE_IMPL_EXPORT
ISubDomain* _arcaneGetDefaultSubDomain()
369 return global_sub_domain;
375extern "C++" ISubDomain*
376arcaneCreateSubDomain(ISession* session,
const SubDomainBuildInfo& sdbi)
378 Ref<IParallelMng> pm = sdbi.parallelMng();
379 Ref<IParallelMng> all_replica_pm = sdbi.allReplicaParallelMng();
380 String case_file_name = sdbi.caseFileName();
384 StringBuilder trace_id;
385 trace_id += String::fromNumber(pm->
commRank());
386 if (all_replica_pm!=pm){
391 trace_id += platform::getHostName();
392 tm->setTraceId(trace_id.toString());
394 auto* sd =
new SubDomain(session,pm,all_replica_pm,case_file_name,bytes);
398 global_sub_domain = sd;
406SubDomain(ISession* session,Ref<IParallelMng> pm,Ref<IParallelMng> all_replica_pm,
408: TraceAccessor2(pm->traceMng())
410, m_application(session->application())
412, m_all_replica_parallel_mng(all_replica_pm)
413, m_timer_mng(nullptr)
414, m_time_stats(nullptr)
415, m_namespace_uri(arcaneNamespaceURI())
416, m_module_master(nullptr)
417, m_time_history_mng(nullptr)
418, m_is_initialized(false)
419, m_case_full_file_name(case_file_name)
420, m_case_name(
"unknown")
422, m_case_config(nullptr)
423, m_storage_directory(
".")
424, m_is_continue(false)
425, m_direct_execution(nullptr)
426, m_is_create_default_mesh_v2(false)
428 m_local_name =
"SubDomain";
442 m_accelerator_mng =
mf->createAcceleratorMngRef(
traceMng());
447 m_default_mesh_handle = m_mesh_mng->createDefaultMeshHandle(
"Mesh0");
475 _setDefaultAcceleratorDevice(
config);
477 m_accelerator_mng->initialize(
config);
478 Runner* runner = m_accelerator_mng->defaultRunner();
483 if (Accelerator::impl::isAcceleratorPolicy(runner->
executionPolicy())){
487 m_variable_mng->_internalApi()->setAcceleratorMng(m_accelerator_mng);
511 cr.addValuesFromXmlNode(
case_document->configurationElement(),ConfigurationReader::P_CaseDocument);
522 info() <<
"Using mesh service to create and allocate meshes";
530 if (!m_is_create_default_mesh_v2)
531 m_legacy_mesh_builder->createDefaultMesh();
547 &SubDomain::_notifyWriteCheckpoint,
579 if (
auto v = Convert::Type<Int32>::tryParseFromEnvironment(
"ARCANE_ACCELERATOR_PARALLELMNG_RANK_FOR_DEVICE",
true)){
580 Int32 modulo = v.value();
583 modulo_device = modulo;
584 info() <<
"Use commRank() to choose accelerator device with modulo=" << modulo;
586 if (modulo_device!=0){
588 info() <<
"Using device number=" << device_rank;
589 config.
setDeviceId(Accelerator::DeviceId(device_rank));
599 m_case_mesh_master_service.reset();
601 m_property_mng_checkpoint =
nullptr;
618 bool do_return =
true;
619 String x = platform::getEnvironmentVariable(
"ARCANE_DOTNET_USE_LEGACY_DESTROY");
633 m_mesh_mng->destroyMeshes();
676 info() <<
"SubDomain: Allocating meshes";
683 info() <<
"** Reading mesh from mesh service";
691 m_case_mesh_master_service =
mbm;
692 m_case_mng->_internalImpl()->internalReadOneOption(
mbm->_options(),
true);
696 if (m_is_create_default_mesh_v2)
697 m_legacy_mesh_builder->createDefaultMesh();
699 m_legacy_mesh_builder->allocateMeshes();
709 info() <<
"SubDomain: read or reload meshes";
711 logdate() <<
"Initialisation du code.";
713 Integer
nb_mesh = m_mesh_mng->meshes().size();
715 <<
" is_continue?=" << m_is_continue;
717 A_INFO(
"Test: {1}",A_TR2(
"nb_mesh_created",
nb_mesh),A_TR(m_is_continue));
733 for( Integer z=0; z<
nb_mesh; ++z ){
740 m_case_mesh_master_service->allocateMeshes();
743 m_legacy_mesh_builder->readMeshes();
753 for( Integer z=0; z<
nb_mesh; ++z ){
754 IMesh* mesh = m_mesh_mng->getMesh(z);
766 m_mesh_mng->addMesh(mesh);
775 return m_mesh_mng->meshes();
785 m_legacy_mesh_builder->initializeMeshVariablesFromCaseFile();
797 info() <<
"Using custom initial partitioner";
798 init_part->partitionAndDistributeMeshes(m_mesh_mng->meshes());
801 if (m_case_mesh_master_service.get()){
802 m_case_mesh_master_service->partitionMeshes();
803 m_case_mesh_master_service->applyAdditionalOperationsOnMeshes();
806 if (m_legacy_mesh_builder->m_use_internal_mesh_partitioner)
807 _doInitialPartition();
812 for(
IMesh* mesh : m_mesh_mng->meshes() ){
849 if (m_legacy_mesh_builder->m_use_partitioner_tester) {
859 info() <<
"No basic partition first needed";
860 _doInitialPartitionForMesh(mesh, m_legacy_mesh_builder->m_internal_partitioner_name);
868_doInitialPartitionForMesh(IMesh* mesh,
const String& service_name)
870 info() <<
"DoInitialPartition. mesh=" << mesh->name() <<
" service=" << service_name;
872 String lib_name = service_name;
873 IMeshPartitionerBase* mesh_partitioner_base =
nullptr;
874 Ref<IMeshPartitionerBase> mesh_partitioner_base_ref;
875 Ref<IMeshPartitioner> mesh_partitioner_ref;
877 ServiceBuilder<IMeshPartitionerBase> sbuilder(
this);
878 mesh_partitioner_base_ref = sbuilder.createReference(service_name,mesh,
SB_AllowNull);
879 mesh_partitioner_base = mesh_partitioner_base_ref.get();
881 if (!mesh_partitioner_base){
884 pwarning() <<
"No implementation for 'IMeshPartitionerBase' interface found. "
885 <<
"Searching implementation for legacy 'IMeshPartitioner' interface";
886 ServiceBuilder<IMeshPartitioner> sbuilder_legacy(
this);
887 mesh_partitioner_ref = sbuilder_legacy.createReference(service_name,mesh,
SB_AllowNull);
888 if (mesh_partitioner_ref.get())
889 mesh_partitioner_base = mesh_partitioner_ref.get();
892 if (!mesh_partitioner_base){
895 sbuilder.getServicesNames(valid_names);
896 String valid_values = String::join(
", ",valid_names);
897 String msg = String::format(
"The specified service for the initial mesh partitionment ({0}) "
898 "is not available (valid_values={1}). This service has to implement "
899 "interface Arcane::IMeshPartitionerBase",
900 lib_name,valid_values);
904 bool is_dynamic = mesh->isDynamic();
905 mesh->modifier()->setDynamic(
true);
906 mesh->utilities()->partitionAndExchangeMeshWithReplication(mesh_partitioner_base,
true);
907 mesh->modifier()->setDynamic(is_dynamic);
919 logdate() <<
"Execution of the end of compute entry points";
938 Int64 len =
id.length();
939 const char* str =
id.localstr();
945 for( Int64 i=1; i<len; ++i )
946 if (!
isalpha(str[i]) && !
isdigit(str[i]) && str[i]!=
'_' && str[i]!=
'.')
964 m_legacy_mesh_builder->readCaseMeshes();
1069findMesh(
const String& name,
bool throw_exception)
1071 return m_mesh_mng->findMesh(name,throw_exception);
1078_notifyWriteCheckpoint()
1080 info(4) <<
"SubDomain::_notifyWriteCheckpoint()";
1082 Properties time_stats_properties(
propertyMng(),
"TimeStats");
1083 timeStats()->saveTimeValues(&time_stats_properties);
1086 Properties p(
propertyMng(),
"MessagePassingStats");
1098 info(4) <<
"SubDomain::setIsInitialized()";
1124 info() <<
"PrintCPUAffinity";
1140 const Int32 nb_rank = pm->
commSize();
1148 for( Int32 i=0; i<nb_rank; ++i ){
1159template<
typename V>
void SubDomain::
1160_applyPropertyVisitor(
V&
p)
1162 auto b =
p.builder();
1164 p <<
b.addBool(
"LegacyMeshCreation")
1165 .addDescription(
"Using legacy mesh creation")
1166 .addGetter([](
auto a) {
return a.x.isLegacyMeshCreation(); })
1167 .addSetter([](
auto a) { a.x._setLegacyMeshCreation(a.v); });
1173ARCANE_REGISTER_PROPERTY_CLASS(SubDomain,());
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Informations pour l'initialisation des accélérateurs.
void setDeviceId(DeviceId name)
Positionne le device associé au Runner associé.
Interface du gestionnaire des accélérateurs.
Gestionnaire d'exécution pour accélérateur.
static const IDeviceInfoList * deviceInfoList(eExecutionPolicy policy)
Liste des devices pour la politique d'exécution policy.
const DeviceInfo & deviceInfo() const
Information sur le device associé à cette instance.
eExecutionPolicy executionPolicy() const
Politique d'exécution associée.
Informations sur une application.
Tableau d'items de types quelconques.
Exception sur un identifiant non valide.
Exception lorsqu'on essaie de déréférencer un pointer nul.
Noms des noeuds XML d'un jeu de données Arcane.
Informations pour construire une option de jeu de données.
Classe de base d'une liste d'options du jeu de données.
Variables communes d'un cas.
Lecteurs de fichiers de configuration.
Classe gérant un répertoire.
Interface de l'application.
virtual IMainFactory * mainFactory() const =0
Manufacture principale.
virtual IPhysicalUnitSystemService * getPhysicalUnitSystemService()=0
Service gérant les systèmes d'unités physiques.
virtual IConfigurationMng * configurationMng() const =0
Gestionnaire des configurations d'exécution.
virtual bool hasGarbageCollector() const =0
Indique que certains objets sont gérés via un ramasse miette.
virtual const ApplicationInfo & applicationInfo() const =0
Informations sur l'exécutable.
Interface de la classe de base des objets principaux arcane.
virtual IRessourceMng * ressourceMng() const =0
Gestionnaire de ressources.
Interface d'une classe gérant un document XML du jeu de données.
Interface du gestionnaire de cas.
virtual ICaseDocument * caseDocument()=0
Document XML du jeu de données (peut être nul si pas de jeu de donneés)
Interface d'une liste d'options du jeu de données.
Interface d'une liste d'options du jeu de données.
virtual IModule * caseModule() const =0
Retourne le module associé ou nullptr s'il n'y en a pas.
virtual String rootTagName() const =0
Nom de l'élément dans le langage du jeu de données.
Interface du gestionnaire des informations des protections.
Interface d'une configuration.
Interface d'un service d'exécution direct.
Interface d'une classe gérant un répertoire.
Interface du gestionnaire de point d'entrée.
Interface du gestionnaire des entrées sorties.
Interface d'un partitionneur initial.
Interface d'enregistrement des variables pour l'equilibrage de charge.
Manufacture des classes d'Arcane.
Interface d'un collecteur d'informations sur l'usage mémoire.
virtual String name() const =0
Nom du maillage.
virtual Integer nbCell()=0
Nombre de mailles du maillage.
virtual Integer dimension()=0
Dimension du maillage (1D, 2D ou 3D).
Interface du gestionnaire des maillages.
static IMeshStats * create(ITraceMng *trace, IMesh *mesh, IParallelMng *pm)
Création d'une instance par défaut.
virtual VariableNodeReal3 & nodesCoordinates()=0
Coordonnées des noeuds.
virtual bool isAllocated()=0
Vrai si le maillage est allouée.
virtual void checkValidMesh()=0
Vérification de la validité des structues internes de maillage (interne)
Interface du module principal.
virtual CommonVariables * commonVariables()=0
Accès aux variables 'communes' partagés entre tout service et module.
virtual CaseOptionsMain * caseoptions()=0
Retourne les options de ce module.
Interface du gestionnaire de modules.
Interface d'un observable.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual ITraceMng * traceMng() const =0
Gestionnaire de traces.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual IParallelReplication * replication() const =0
Informations sur la réplication.
virtual IStat * stat()=0
Gestionnaire des statistiques.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual void gather(ConstArrayView< char > send_buf, ArrayView< char > recv_buf, Int32 rank)=0
Effectue un regroupement sur un processeurs. Il s'agit d'une opération collective....
virtual Integer masterIORank() const =0
Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
Interface d'un système d'unité.
virtual void reloadMesh()=0
Recharge le maillage à partir des variables protégées.
Interface d'un service de de trace des appels de fonctions.
Interface d'un service de profiling.
Interface du gestionnaire des propriétés.
Interface d'un gestionnaire de ressource.
Interface du gestionnaire de services.
Interface d'une session d'exécution d'un cas.
Interface du gestionnaire d'un sous-domaine.
virtual IPropertyMng * propertyMng() const =0
Gestionnaire de propriétés.
Interface d'un gestionnaire de thread.
Classe gérant un historique de valeurs.
Interface du gestionnaire de la boucle en temps.
Interface d'une boucle en temps.
Interface gérant les statistiques sur les temps d'exécution.
Interface d'un gestionnaire de timer.
Interface du gestionnaire de variables.
virtual void variables(VariableRefCollection v, IModule *i)=0
Donne l'ensemble des variables du module i.
Interface d'une variable.
virtual void syncReferences()=0
Synchronise les références.
virtual IObservable * readObservable()=0
Observable en lecture.
virtual IObservable * writeObservable()=0
Observable en écriture.
@ PPrivate
Indique que la variable est privée.
Construction du maillage via la méthode "historique".
Lecteur des fichiers de maillage via la bibliothèque LIMA.
IMesh * mesh() const
Maillage associé.
Classe de base d'un observable.
void detachAllObservers() override
Détache tous les observeurs associés à cette instance.
void notifyAllObservers() override
Notifie tous les observateurs.
void addObserver(T *obj, void(T::*func)(const IObservable &), IObservable *oba)
Ajoute un observateur.
Classe permettant de démarrer et arrêter automatiquement un service.
Classe pour gérer la lecture/écriture des propriétés dans les protections/reprises.
Implémentation d'un gestionnaire de sous-domaine.
void readOrReloadMeshes() override
Lit ou relit les maillages.
IParallelMng * allReplicaParallelMng() const override
Retourne le gestionnaire de parallélisme pour tous les réplicats.
String objectLocalName() const override
Nom local de l'objet.
IPhysicalUnitSystem * physicalUnitSystem() override
Système d'unité du sous-domaine.
String m_case_name
Nom du cas.
IModuleMng * moduleMng() override
Retourne le gestionnaire de modules.
IThreadMng * threadMng() override
Retourne le gestionnaire de thread.
IParallelMng * parallelMng() override
Retourne le gestionnaire de parallélisme.
Observable m_on_destroy_observable
Observable lors d'une destruction.
const String & caseName() const override
Nom du cas.
void setListingDirectory(const IDirectory &dir) override
Positionne le chemin de sortie des infos listing.
Ref< ICaseMng > m_case_mng
Gestionnaire du jeu de données.
IEntryPointMng * entryPointMng() override
Retourne le gestionnaire de points d'entrée.
ILoadBalanceMng * loadBalanceMng() override
Retourne le gestionnaire d'équilibrage de charge.
ISession * m_session
Session.
IBase * objectParent() const override
Parent de cet objet.
void setIsContinue() override
Positionne un flag indiquant qu'on effectue une reprise.
const String & caseFullFileName() const override
Chemin complet du fichier contenant le jeu de données.
void doInitModules() override
Appelle les points d'entrée d'initialisation du module.
IConfiguration * configuration() override
Configuration associée.
ICaseDocument * caseDocument() override
Document XML du cas.
IServiceMng * serviceMng() const override
Gestionnaire de services.
Ref< IParallelMng > m_all_replica_parallel_mng
Gestionnaire du parallélisme pour tous les réplicats.
IIOMng * ioMng() override
Retourne le gestionnaire des entrées/sorties.
void setInitialPartitioner(IInitialPartitioner *partitioner) override
Positionne le partitionneur initial.
const CommonVariables & commonVariables() const override
Informations sur les variables standards.
void setStorageDirectory(const IDirectory &dir) override
Positionne le chemin de sortie des exportations nécessitant un archivage.
void build() override
Construit les membres de l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas é...
bool m_has_mesh_service
Indique si on utilise le mécanisme de service pour lire le maillage.
ITimeHistoryMng * timeHistoryMng() override
Retourne le gestionnaire d'historique.
IMemoryInfo * memoryInfo() const override
Gestionnaire d'informations mémoire.
bool m_is_initialized
true si initialisé
String m_case_full_file_name
Chemin d'accès du cas.
const IDirectory & exportDirectory() const override
Répertoire de base des exportations.
void dumpInfo(std::ostream &) override
Affiche des informations sur l'instance.
void fillCaseBytes(ByteArray &bytes) const override
Remplit bytes avec le contenue du jeu de données.
IModuleMaster * moduleMaster() const override
Interface du module maître.
ScopedPtrT< ILoadBalanceMng > m_lb_mng
Gestionnaire de caracteristiques pour l'equilibrage.
IVariableMng * variableMng() override
Retourne le gestionnaire de variables.
ScopedPtrT< IModuleMng > m_module_mng
Gestionnaire des modules.
const IDirectory & storageDirectory() const override
Répertoire de base des exportations nécessitant un archivage.
Int32 subDomainId() const override
Numéro du sous-domaine associé à ce gestionnaire.
Ref< IPropertyMng > m_property_mng
Gestionnaire de propriétés.
IMeshMng * meshMng() const override
Retourne le gestionnaire de maillage.
void _printCPUAffinity()
Affiche l'affinité CPU de tous les rangs.
CaseOptionsMain * m_case_config
Config du cas.
void dumpInternalInfos(XmlNode &root) override
Sort les informations internes de l'architecture. Les informations sont stockées dans un arbre XML ay...
IApplication * m_application
Gestionnaire principal.
void allocateMeshes() override
Allocation des maillages.
IObservable * onDestroyObservable() override
Notification avant destruction du sous-domaine.
ByteUniqueArray m_case_bytes
Données du cas.
void doInitMeshPartition() override
Applique le partitionnement de maillage de l'initialisation.
ITimerMng * timerMng() const override
Retourne le gestionnaire de timers.
VersionInfo objectVersion() const override
Numéro de version du service.
ICaseMng * caseMng() override
Retourne le gestionnaire du jeu de données.
Ref< IParallelMng > m_parallel_mng
Gestionnaire du parallélisme.
ConstArrayView< IMesh * > meshes() const override
Listes des maillages du sous-domaine.
ScopedPtrT< IPhysicalUnitSystem > m_physical_unit_system
Système d'unité physique.
const IDirectory & listingDirectory() const override
Répertoire de base des listings (logs, info exécution).
void setExportDirectory(const IDirectory &dir) override
Positionne le chemin de sortie des exportations (protections et reprises)
void setIsInitialized() override
Indique que le sous-domaine est initialié.
ScopedPtrT< IEntryPointMng > m_entry_point_mng
Gestionnaire des points d'entrée.
const IConfiguration * configuration() const override
Configuration associée.
ScopedPtrT< IServiceMng > m_service_mng
Gestionnaire des services.
IModuleMaster * m_module_master
Module maitre.
ScopedPtrT< ITimeHistoryMng > m_time_history_mng
Gestionnaire d'historique.
IDirectExecution * directExecution() const override
Service d'exécution directe (ou null)
const MeshHandle & defaultMeshHandle() override
Handle sur le maillage par défaut.
ScopedPtrT< IVariableMng > m_variable_mng
Gestionnaire des variables.
void readCaseMeshes() override
Lit les informations de maillage du jeu de données.
ScopedPtrT< ICheckpointMng > m_checkpoint_mng
Gestionnaire de protections.
Integer meshDimension() const override
Dimension du maillage (1D, 2D ou 3D).
void initialize() override
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
void doExitModules() override
Exécution des modules de fin d'exécution.
Directory m_export_directory
Répertoire d'exportation.
const CaseOptionsMain * caseOptionsMain() const override
Options générales du jeu de donnée.
ITimeStats * m_time_stats
Statistiques sur les temps d'exécution.
ISession * session() const override
Session.
String objectNamespaceURI() const override
Namespace de l'objet.
ScopedPtrT< IMemoryInfo > m_memory_info
Informations sur l'utilisation mémoire.
void setCaseName(const String &case_name) override
Positionne le nom du cas.
bool isContinue() const override
Vrai si on effectue une reprise, faux sinon.
IMainFactory * mainFactory() override
Manufacture principale.
ICheckpointMng * checkpointMng() const override
Gestionnaire de protections.
IRessourceMng * ressourceMng() const override
Gestionnaire de ressources.
IPropertyMng * propertyMng() const override
Gestionnaire de propriétés.
ScopedPtrT< IConfiguration > m_configuration
Configuration.
ITimeLoopMng * timeLoopMng() override
Retourne le gestionnaire de la boucle en temps.
void checkId(const String &where, const String &id) override
Vérifie qu'un identifiant est valide.
Directory m_listing_directory
Répertoire des listings.
IApplication * application() override
Application.
ScopedPtrT< ITimeLoopMng > m_time_loop_mng
Gestionnaire de la boucle en temps.
Directory m_storage_directory
Répertoire d'archivage.
ITimerMng * m_timer_mng
Gestionnaire des timers.
ITraceMng * traceMng() const override
Gestionnaire de traces.
ITimeStats * timeStats() const override
Statistiques des temps d'exécution.
IMesh * defaultMesh() override
Maillage par défaut.
void initializeMeshVariablesFromCaseFile() override
Initialise les variables dont les valeurs sont spécifiées dans le jeu de données.
void setDirectExecution(IDirectExecution *v) override
Positionne le service d'exécution directe.
bool isInitialized() const override
Indique si la session a été initialisée.
Int32 nbSubDomain() const override
Nombre total de sous-domaines.
IAcceleratorMng * acceleratorMng() override
Gestionnaire de l'accélérateur associé
const ApplicationInfo & applicationInfo() const override
Informations sur l'exécutable.
ScopedPtrT< IIOMng > m_io_mng
Gestionnaire des entrées/sorties.
Postionne le nom de l'action en cours d'exécution.
Paramètres nécessaires à la construction d'une variable.
IArrayDataInternalT< T > * _internalTrueData()
IVariable * variable() const
Variable associée.
Informations sur une version.
API EN COURS DE CONCEPTION. NE PAS UTILISER.
bool empty() const
Capacité (nombre d'éléments alloués) du vecteur.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
virtual void flush()=0
Flush tous les flots.
Chaîne de caractères unicode.
Classe d'accès aux traces.
TraceMessage pwarning() const
ITraceMng * traceMng() const
Gestionnaire de trace.
TraceMessage info() const
Flot pour un message d'information.
TraceMessage logdate() const
Flot pour un message de log précédé de la date.
Positionne une classe de message.
Formattage du flot en longueur.
Vecteur 1D de données avec sémantique par valeur (style STL).
Espace de nom pour l'utilisation des accélérateurs.
void dumpDateAndMemoryUsage(IParallelMng *pm, ITraceMng *tm)
Écrit dans tm la date et la mémoire consommée.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
@ SB_AllowNull
Autorise l'absence du service.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
const char * itemKindName(eItemKind kind)
Nom du genre d'entité.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.
const char * dataTypeName(eDataType type)
Nom du type de donnée.