Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshUniqueIdMng.cc
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/* MeshUniqueIdMng.cc (C) 2000-2022 */
9/* */
10/* Gestionnaire de couche fantômes d'un maillage. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/mesh/MeshUniqueIdMng.h"
15
16#include "arcane/utils/PlatformUtils.h"
17#include "arcane/utils/ArgumentException.h"
18#include "arcane/utils/FatalErrorException.h"
19#include "arcane/utils/ValueConvert.h"
20
21#include "arcane/IMeshUniqueIdMng.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane::mesh
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32MeshUniqueIdMng::
33MeshUniqueIdMng(ITraceMng* tm)
34: TraceAccessor(tm)
35, m_face_builder_version(1)
36, m_edge_builder_version(1)
37{
38 _initFaceVersion();
39 _initEdgeVersion();
40}
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
45void MeshUniqueIdMng::
46setFaceBuilderVersion(Integer n)
47{
48 if (n<0)
49 ARCANE_THROW(ArgumentException,"Bad value for '{0}'<0",n);
50 m_face_builder_version = n;
51}
52
53/*---------------------------------------------------------------------------*/
54/*---------------------------------------------------------------------------*/
55
56void MeshUniqueIdMng::
57setEdgeBuilderVersion(Integer n)
58{
59 if (n<0)
60 ARCANE_THROW(ArgumentException,"Bad value for '{0}'<0",n);
61 m_edge_builder_version = n;
62}
63
64/*---------------------------------------------------------------------------*/
65/*---------------------------------------------------------------------------*/
66
67void MeshUniqueIdMng::
68_initFaceVersion()
69{
70 m_face_builder_version = 1;
71
72 if (auto v = Convert::Type<Int32>::tryParseFromEnvironment("ARCANE_FACE_UNIQUE_ID_BUILDER_VERSION",true)){
73 m_face_builder_version = v.value();
74 return;
75 }
76
77 // Pour des raisons de compatibilité avec l'existant, on positionne les
78 // valeurs par défaut en fonction de certaines variables d'environnement.
79 // Il faudra supprimer ce comportement à terme (car de plus il s'applique
80 // à tous les maillages même ceux créés dynamiquement)
81
82 if (!platform::getEnvironmentVariable("ARCANE_NEW_MESHINIT2").null()){
83 m_face_builder_version = 3;
84 return;
85 }
86
87 if (!platform::getEnvironmentVariable("ARCANE_NO_FACE_RENUMBER").null()){
88 m_face_builder_version = 0;
89 return;
90 }
91
92 if (!platform::getEnvironmentVariable("ARCANE_NEW_MESHINIT").null()){
93 m_face_builder_version = 2;
94 return;
95 }
96}
97
98/*---------------------------------------------------------------------------*/
99/*---------------------------------------------------------------------------*/
100
101void MeshUniqueIdMng::
102_initEdgeVersion()
103{
104 m_edge_builder_version = 1;
105
106 if (auto v = Convert::Type<Int32>::tryParseFromEnvironment("ARCANE_EDGE_UNIQUE_ID_BUILDER_VERSION",true)){
107 m_edge_builder_version = v.value();
108 return;
109 }
110}
111
112/*---------------------------------------------------------------------------*/
113/*---------------------------------------------------------------------------*/
114
115} // End namespace Arcane::mesh
116
117/*---------------------------------------------------------------------------*/
118/*---------------------------------------------------------------------------*/
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.