Arcane  v3.14.10.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);
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.
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:48
Informations pour gérer le compactage des entités d'une famille.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Gestionnaire des compactages de familles d'un maillage.
Gestion d'un compactage de familles du maillage..
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.