Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IMeshMaterialMng.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* IMeshMaterialMng.cc (C) 2000-2023 */
9/* */
10/* Interface du gestionnaire des matériaux et milieux d'un maillage. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/core/materials/IMeshMaterialMng.h"
15
16#include "arcane/utils/Ref.h"
17#include "arcane/utils/FatalErrorException.h"
18
19#include "arcane/IMesh.h"
20#include "arcane/MeshHandle.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::Materials
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace {
32IMeshMaterialMng::IFactory* global_mesh_material_mng_factory = nullptr;
33}
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37
38void IMeshMaterialMng::
39_internalSetFactory(IFactory* f)
40{
41 global_mesh_material_mng_factory = f;
42}
43
44/*---------------------------------------------------------------------------*/
45/*---------------------------------------------------------------------------*/
46
47Ref<IMeshMaterialMng> IMeshMaterialMng::
48getTrueReference(const MeshHandle& mesh_handle,bool is_create)
49{
50 if (mesh_handle.isNull())
51 ARCANE_FATAL("Null MeshHandle is not allowed");
52 auto* f = global_mesh_material_mng_factory;
53 if (!f){
54 if (is_create)
55 ARCANE_FATAL("No factory for 'IMeshMaterialMng': You need to link with 'arcane_materials' library");
56 return {};
57 }
58 return f->getTrueReference(mesh_handle,is_create);
59}
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
63
65getReference(const MeshHandleOrMesh& mesh_handle,bool create)
66{
67 return getTrueReference(mesh_handle.handle(),create).get();
68}
69
70/*---------------------------------------------------------------------------*/
71/*---------------------------------------------------------------------------*/
72
73} // End namespace Arcane::Materials
74
75/*---------------------------------------------------------------------------*/
76/*---------------------------------------------------------------------------*/
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
static Ref< IMeshMaterialMng > getTrueReference(const MeshHandle &mesh_handle, bool create=true)
Récupère ou créé la référence associée à mesh.
static IMeshMaterialMng * getReference(const MeshHandleOrMesh &mesh_handle, bool create=true)
Récupère ou créé la référence associée à mesh.
Classe de compatibilité pour contenir un MeshHandle ou un IMesh*.
Definition MeshHandle.h:194
const MeshHandle & handle() const
handle associé.
Definition MeshHandle.h:217
Handle sur un maillage.
Definition MeshHandle.h:47
bool isNull() const
Indique si le handle est nul (il ne référence aucun maillage existant ou non)
Definition MeshHandle.h:162
Active toujours les traces dans les parties Arcane concernant les matériaux.