Arcane  v3.16.6.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IItemFamilyCompactPolicy.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* IItemFamilyCompactPolicy.h (C) 2000-2025 */
9/* */
10/* Interface de la politique de compactage des entités d'une famille. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IITEMFAMILYCOMPACTPOLICY_H
13#define ARCANE_CORE_IITEMFAMILYCOMPACTPOLICY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Politique de compactage des entités.
29 *
30 * Une instance de cette classe est associée à chaque famille.
31 *
32 * Le pseudo-code d'appel pour un compactage est le suivant:
33 *
34 \code
35 * IMesh* mesh = ...;
36 * IMeshCompacter* compacter = ...;
37 * ItemFamilyCollection families = mesh->itemFamilies();
38 * UniqueArray<ItemFamilyCompactPolicy> policies;
39 * for( IItemFamily* family : mesh->itemFamilies() )
40 * policies.add( createCompactPolicity(family) );
41 * for( ItemFamilyCompactPolicity* policy : policies)
42 * policy->beginCompact(...);
43 * for( ItemFamilyCompactPolicity* policy : policies)
44 * policy->compactVariablesAndGroups(...);
45 * for( ItemFamilyCompactPolicity* policy : policies)
46 * policy->updateInternalReferences(compacter);
47 * for( ItemFamilyCompactPolicity* policy : policies)
48 * policy->endCompact(...);
49 \endcode
50 *
51 * En dehors d'un compactage, il est possible d'appeler
52 * compactReferenceData() qui permet de compacter les données servant
53 * à contenir les infos de connectivité.
54 * données.
55 */
56class ARCANE_CORE_EXPORT IItemFamilyCompactPolicy
57{
58 public:
59
60 virtual ~IItemFamilyCompactPolicy() = default;
61
62 public:
63
64 // TODO: faire une méthode computeCompact après beginCompact().
65 virtual void beginCompact(ItemFamilyCompactInfos& compact_infos) = 0;
66 virtual void compactVariablesAndGroups(const ItemFamilyCompactInfos& compact_infos) = 0;
67 virtual void updateInternalReferences(IMeshCompacter* compacter) = 0;
68 virtual void endCompact(ItemFamilyCompactInfos& compact_infos) = 0;
69 virtual void finalizeCompact(IMeshCompacter* compacter) = 0;
70 //! Famille associée
71 virtual IItemFamily* family() const = 0;
72 //! Compacte les données sur les connectivités.
73 virtual void compactConnectivityData() = 0;
74};
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79} // namespace Arcane
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84#endif
Déclarations des types généraux de Arcane.
Politique de compactage des entités.
virtual void compactConnectivityData()=0
Compacte les données sur les connectivités.
virtual IItemFamily * family() const =0
Famille associée.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Gestion d'un compactage de familles du maillage.
Informations pour gérer le compactage des entités d'une famille.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-