Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshCompacter.h
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/* MeshCompacter.h (C) 2000-2016 */
9/* */
10/* Gestion d'un compactage de familles du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_MESHCOMPACTER_H
13#define ARCANE_MESH_MESHCOMPACTER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/List.h"
19#include "arcane/IMeshCompacter.h"
20#include "arcane/mesh/MeshGlobal.h"
21
22#include <map>
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27ARCANE_BEGIN_NAMESPACE
28class ITimeStats;
29class IItemFamilyCompactPolicy;
30ARCANE_MESH_BEGIN_NAMESPACE
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35class DynamicMesh;
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
46class ARCANE_MESH_EXPORT MeshCompacter
47: public TraceAccessor
48, public IMeshCompacter
49{
50 friend class MeshCompactMng;
51
52 private:
53
54 typedef std::map<IItemFamily*,ItemFamilyCompactInfos*> ItemFamilyCompactInfosMap;
55
56 private:
57
58 MeshCompacter(IMesh* mesh,ITimeStats* stats);
59 MeshCompacter(IItemFamily* family,ITimeStats* stats);
60 ~MeshCompacter();
61
62 private:
63
64 void build();
65
66 public:
67
68 IMesh* mesh() const override;
69 void doAllActions() override;
70 void beginCompact() override;
71 void compactVariablesAndGroups() override;
72 void updateInternalReferences() override;
73 void endCompact() override;
74 void finalizeCompact() override;
75 const ItemFamilyCompactInfos* findCompactInfos(IItemFamily* family) const override;
76 ePhase phase() const override { return m_phase; }
77 bool isSorted() const override { return m_is_sorted; }
78 ItemFamilyCollection families() const override;
79
80 public:
81
82 void setSorted(bool v) override;
83 void _setCompactVariablesAndGroups(bool v) override;
84
85 private:
86
87 IMesh* m_mesh;
88 ItemFamilyCompactInfosMap m_family_compact_infos_map;
89 ITimeStats* m_time_stats;
90 ePhase m_phase;
91 bool m_is_sorted;
92 bool m_is_compact_variables_and_groups;
93 List<IItemFamily*> m_item_families;
94
95 private:
96
97 void _checkPhase(ePhase wanted_phase);
98 void _addFamily(IItemFamily* family);
99};
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104ARCANE_MESH_END_NAMESPACE
105ARCANE_END_NAMESPACE
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
109
110#endif
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Gestion d'un compactage de familles du maillage.
virtual IMesh * mesh() const =0
Maillage associé à ce compacter.
virtual ItemFamilyCollection families() const =0
Familles dont les entités sont compactées.
virtual void setSorted(bool v)=0
Indique s'il faut trier les entités lors du compactage.
virtual void doAllActions()=0
Exécute successivement toutes les actions de compactage.
virtual void _setCompactVariablesAndGroups(bool v)=0
virtual const ItemFamilyCompactInfos * findCompactInfos(IItemFamily *family) const =0
Informations de compactage pour la famille family.
ePhase
Indique les différentes phases du compactage.
Interface gérant les statistiques sur les temps d'exécution.
Definition ITimeStats.h:43
Informations pour gérer le compactage des entités d'une famille.
Implémentation d'une collection d'éléments sous forme de vecteur.
Definition List.h:222
ePhase phase() const override
Phase de l'échange dans laquelle on se trouve.
bool isSorted() const override
Indique si souhaite trier les entités en plus de les compacter.
IMesh * mesh() const override
Maillage associé à ce compacter.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Collection< IItemFamily * > ItemFamilyCollection
Collection de familles d'entités.