Arcane  4.1.11.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshMaterialVariableSynchronizerList.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* MeshMaterialVariableSynchronizerList.h (C) 2000-2023 */
9/* */
10/* Liste de variables à synchroniser. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_MESHMATERIALVARIABLESYNCHRONIZERLIST_H
13#define ARCANE_MATERIALS_MESHMATERIALVARIABLESYNCHRONIZERLIST_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Array.h"
19
20#include "arcane/materials/MatVarIndex.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::Materials
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
38class ARCANE_MATERIALS_EXPORT MeshMaterialVariableSynchronizerList
39{
40 private:
41
42 class Impl;
43 class SyncInfo;
44
45 public:
46
47 explicit MeshMaterialVariableSynchronizerList(IMeshMaterialMng* material_mng);
48 ~MeshMaterialVariableSynchronizerList();
49
50 public:
51
52 MeshMaterialVariableSynchronizerList(const MeshMaterialVariableSynchronizerList&) = delete;
53 MeshMaterialVariableSynchronizerList& operator=(const MeshMaterialVariableSynchronizerList&) = delete;
54 MeshMaterialVariableSynchronizerList(const MeshMaterialVariableSynchronizerList&&) = delete;
55 MeshMaterialVariableSynchronizerList& operator=(const MeshMaterialVariableSynchronizerList&&) = delete;
56
57 public:
58
60 void apply();
61
63 void add(MeshMaterialVariable* var);
64
66 Int64 totalMessageSize() const;
67
73 void beginSynchronize();
74
80 void endSynchronize();
81
82 private:
83
84 Impl* m_p;
85
86 private:
87
88 static void _beginSynchronizeMultiple(SyncInfo& sync_info);
89 static void _beginSynchronizeMultiple2(SyncInfo& sync_info);
90 static void _endSynchronizeMultiple2(SyncInfo& sync_info);
91 void _fillSyncInfo(SyncInfo& sync_info);
92 void _beginSynchronize(bool is_blocking);
93 void _endSynchronize(bool is_blocking);
94};
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
99} // End namespace Arcane::Materials
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104#endif
105
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Int64 totalMessageSize() const
Après appel à apply(), contient la taille des messages envoyés.
void add(MeshMaterialVariable *var)
Ajoute la variable var à la liste des variables à synchroniser.
void endSynchronize()
Bloque tant que la synchronisation en cours n'est pas terminé.
Classe de base des variables matériaux.
Active toujours les traces dans les parties Arcane concernant les matériaux.
class ARCANE_MATERIALS_EXPORT(64) SimdMatVarIndex
Indexeur SIMD sur un composant.
std::int64_t Int64
Type entier signé sur 64 bits.