Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
IItemFamilyCompactPolicy.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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 for the compaction policy of family entities. */
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/*!
29 * \brief Entity compaction policy.
30 *
31 * An instance of this class is associated with each family.
32 *
33 * The call pseudo-code for a compaction is as follows:
34 *
35 \code
36 * IMesh* mesh = ...;
37 * IMeshCompacter* compacter = ...;
38 * ItemFamilyCollection families = mesh->itemFamilies();
39 * UniqueArray<ItemFamilyCompactPolicy> policies;
40 * for( IItemFamily* family : mesh->itemFamilies() )
41 * policies.add( createCompactPolicity(family) );
42 * for( ItemFamilyCompactPolicity* policy : policies)
43 * policy->beginCompact(...);
44 * for( ItemFamilyCompactPolicity* policy : policies)
45 * policy->compactVariablesAndGroups(...);
46 * for( ItemFamilyCompactPolicity* policy : policies)
47 * policy->updateInternalReferences(compacter);
48 * for( ItemFamilyCompactPolicity* policy : policies)
49 * policy->endCompact(...);
50 \endcode
51 *
52 * Outside of a compaction, it is possible to call
53 * compactReferenceData(), which allows compacting the data used
54 * to hold connectivity information.
55 */
56class ARCANE_CORE_EXPORT IItemFamilyCompactPolicy
57{
58 public:
59
60 virtual ~IItemFamilyCompactPolicy() = default;
61
62 public:
63
64 // TODO: implement a computeCompact method after 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 //! Associated family
71 virtual IItemFamily* family() const = 0;
72 //! Compacts the connectivity data.
73 virtual void compactConnectivityData() = 0;
74};
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79} // namespace Arcane
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84#endif
Declarations of Arcane's general types.
virtual void compactConnectivityData()=0
Compacts the connectivity data.
virtual IItemFamily * family() const =0
Associated family.
Interface of an entity family.
Definition IItemFamily.h:83
Management of mesh family compaction.
Information to manage the compaction of entities of a family.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --