Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
DoFFamilyPolicyMng.cc
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/* DoFFamilyPolicyMng.cc (C) 2000-2016 */
9/* */
10/* Manager of policies for a DoF family. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/NotSupportedException.h"
15
16#include "arcane/mesh/ItemFamilyPolicyMng.h"
17#include "arcane/mesh/ItemFamilyCompactPolicy.h"
18#include "arcane/mesh/ItemFamilySerializer.h"
19#include "arcane/mesh/IndirectItemFamilySerializer.h"
20#include "arcane/mesh/DoFFamily.h"
21#include "arcane/mesh/DynamicMesh.h"
22#include "arcane/mesh/DynamicMeshIncrementalBuilder.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane::mesh
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33class DoFFamilyCompactPolicy
34: public ItemFamilyCompactPolicy
35{
36 public:
37
38 DoFFamilyCompactPolicy(ItemFamily* family)
39 : ItemFamilyCompactPolicy(family)
40 {}
41
42 public:
43
44 void updateInternalReferences(IMeshCompacter* compacter) override
45 {
46 // Does nothing for now because the source family handles the
47 // update in ItemFamily::beginCompactItems().
48 ARCANE_UNUSED(compacter);
49 }
50};
51
52/*---------------------------------------------------------------------------*/
53/*---------------------------------------------------------------------------*/
57class ARCANE_MESH_EXPORT DoFFamilyPolicyMng
58: public ItemFamilyPolicyMng
59{
60 public:
61
62 DoFFamilyPolicyMng(DoFFamily* family)
63 : ItemFamilyPolicyMng(family, new DoFFamilyCompactPolicy(family))
64 , m_family(family)
65 {}
66
67 public:
68
69 IItemFamilySerializer* createSerializer(bool use_flags) override
70 {
71 if (use_flags)
72 throw NotSupportedException(A_FUNCINFO, "serialisation with 'use_flags==true'");
73
74 IMesh* mesh = m_family->mesh();
75 DynamicMesh* dmesh = ARCANE_CHECK_POINTER(dynamic_cast<DynamicMesh*>(mesh));
76 return new ItemFamilySerializer(m_family, m_family, dmesh->incrementalBuilder());
77 //return new IndirectItemFamilySerializer(m_family);
78 }
79
80 private:
81
82 DoFFamily* m_family;
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88extern "C++" ARCANE_MESH_EXPORT IItemFamilyPolicyMng*
89createDoFFamilyPolicyMng(ItemFamily* family)
90{
91 DoFFamily* f = ARCANE_CHECK_POINTER(dynamic_cast<DoFFamily*>(family));
92 return new DoFFamilyPolicyMng(f);
93}
94
95/*---------------------------------------------------------------------------*/
96/*---------------------------------------------------------------------------*/
97
98} // namespace Arcane::mesh
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
#define ARCANE_CHECK_POINTER(ptr)
Macro returning the pointer ptr if it is not null or throwing an exception if it is null.
Interface for entity family policies.
Manages the serialization/deserialization of entities in a family.
Management of mesh family compaction.
IItemFamilySerializer * createSerializer(bool use_flags) override
Creates an instance for entity serialization. The returned instance must be destroyed by the delete o...
Implementation of a mesh.
Definition DynamicMesh.h:98
IItemFamily * family() const override
Associated family.
Serialization/Deserialization of item families.