Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
GhostLayerMng.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/* GhostLayerMng.cc (C) 2000-2022 */
9/* */
10/* Gestionnaire de couche fantômes d'un maillage. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/utils/ArgumentException.h"
17#include "arcane/utils/ValueConvert.h"
18#include "arcane/utils/PlatformUtils.h"
19
20#include "arcane/mesh/GhostLayerMng.h"
21
22#include <algorithm>
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane::mesh
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33GhostLayerMng::
34GhostLayerMng(ITraceMng* tm)
35: TraceAccessor(tm)
36, m_nb_ghost_layer(1)
37, m_builder_version(3)
38{
39 if (auto v = Convert::Type<Int32>::tryParseFromEnvironment("ARCANE_NB_GHOSTLAYER",true))
40 m_nb_ghost_layer = std::clamp(v.value(),1,256);
41
42 _initBuilderVersion();
43}
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
47
48void GhostLayerMng::
49setNbGhostLayer(Integer n)
50{
51 if (n<0)
52 ARCANE_THROW(ArgumentException,"Bad number of ghost layer '{0}'<0",n);
53 m_nb_ghost_layer = n;
54}
55
56/*---------------------------------------------------------------------------*/
57/*---------------------------------------------------------------------------*/
58
59Integer GhostLayerMng::
60nbGhostLayer() const
61{
62 return m_nb_ghost_layer;
63}
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67
68void GhostLayerMng::
69setBuilderVersion(Integer n)
70{
71 if (n<2 || n>4)
72 ARCANE_THROW(ArgumentException,"Bad value for builder version '{0}'. valid values are 2, 3 or 4.",n);
73 m_builder_version = n;
74}
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79void GhostLayerMng::
80_initBuilderVersion()
81{
82 // La version par défaut est la 2.
83 // La version 1 n'existe plus.
84 // La version 3 est opérationnelle et plus extensible que la 2.
85 // La version 4 est comme la version 3 mais permet d'être appelée
86 // alors qu'il y a déjà des couches de mailles fantômes.
87 // Si OK pour IFP, il faudra passer la version par défaut à la 3 ou 4. Il
88 // reste cependant à traiter le cas des maillages AMR
89 Integer default_version = 2;
90 Integer version = default_version;
91 String version_str = platform::getEnvironmentVariable("ARCANE_GHOSTLAYER_VERSION");
92 if (!version_str.null()){
93 if (builtInGetValue(version,version_str)){
94 pwarning() << "Bad value for 'ARCANE_GHOSTLAYER_VERSION'";
95 }
96 if (version<2 || version>4)
97 version = default_version;
98 }
99 m_builder_version = version;
100}
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104
105Integer GhostLayerMng::
106builderVersion() const
107{
108 return m_builder_version;
109}
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
114} // End namespace Arcane::mesh
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Exception lorsqu'un argument est invalide.
Chaîne de caractères unicode.