Arcane  v4.1.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
InterfaceImpl.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* InterfaceImpl.cc (C) 2000-2025 */
9/* */
10/* Implémentation des interfaces. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13/*
14 * Sous Windows, il faut inclure les interfaces pour que leurs symboles
15 * soient disponibles (sous linux aussi si on utilise gcc avec les infos
16 * de visibilités).
17 */
18
19#include "arcane/core/IVariableSynchronizerMng.h"
20
21#include "arcane/utils/String.h"
22#include "arcane/utils/ArgumentException.h"
23#include "arcane/utils/FatalErrorException.h"
24#include "arcane/utils/PlatformUtils.h"
25
26#include "arcane/core/IArcaneMain.h"
27#include "arcane/core/IServiceInfo.h"
29#include "arcane/core/IBase.h"
30#include "arcane/core/IBackwardMng.h"
31#include "arcane/core/ICaseFunction.h"
32#include "arcane/core/ICaseMng.h"
33#include "arcane/core/ICaseMeshReader.h"
34#include "arcane/core/ICaseMeshService.h"
35#include "arcane/core/ICaseMeshMasterService.h"
36#include "arcane/core/ICheckpointMng.h"
37#include "arcane/core/ICheckpointReader.h"
38#include "arcane/core/ICheckpointWriter.h"
39#include "arcane/core/IDataReader.h"
40#include "arcane/core/IDataReader2.h"
41#include "arcane/core/IDataReaderWriter.h"
42#include "arcane/core/IDataWriter.h"
43#include "arcane/core/IExtraGhostItemsBuilder.h"
44#include "arcane/core/IModuleMng.h"
45#include "arcane/core/IServiceMng.h"
46#include "arcane/core/ICodeService.h"
47#include "arcane/core/ISubDomain.h"
48#include "arcane/core/IServiceInfo.h"
49#include "arcane/core/IService.h"
50#include "arcane/core/IApplication.h"
51#include "arcane/core/IMainFactory.h"
52#include "arcane/core/IMeshBuilder.h"
53#include "arcane/core/IMeshCompactMng.h"
54#include "arcane/core/IMeshExchangeMng.h"
55#include "arcane/core/IMeshCompacter.h"
56#include "arcane/core/IMeshExchanger.h"
57#include "arcane/core/IMeshFactory.h"
58#include "arcane/core/IMeshFactoryMng.h"
59#include "arcane/core/IMeshMng.h"
60#include "arcane/core/IMeshPartitioner.h"
61#include "arcane/core/IMeshUtilities.h"
62#include "arcane/core/IGridMeshPartitioner.h"
63#include "arcane/core/IDataStorageFactory.h"
64#include "arcane/core/IDirectExecution.h"
65#include "arcane/core/IDirectSubDomainExecuteFunctor.h"
66#include "arcane/core/ISerializer.h"
67#include "arcane/core/IDeflateService.h"
68#include "arcane/core/IPrimaryMesh.h"
70#include "arcane/core/IInitialPartitioner.h"
71#include "arcane/core/IIOMng.h"
72#include "arcane/core/IIndexedIncrementalItemConnectivity.h"
73#include "arcane/core/IIndexedIncrementalItemConnectivityMng.h"
74#include "arcane/core/IIncrementalItemConnectivity.h"
75#include "arcane/core/IItemConnectivityAccessor.h"
76#include "arcane/core/IItemConnectivityInfo.h"
77#include "arcane/core/IItemConnectivity.h"
78#include "arcane/core/IItemConnectivityMng.h"
79#include "arcane/core/IItemConnectivitySynchronizer.h"
80#include "arcane/core/ItemFamilyCompactInfos.h"
81#include "arcane/core/ItemFamilyItemListChangedEventArgs.h"
82#include "arcane/core/IItemFamily.h"
83#include "arcane/core/IItemFamilyCompactPolicy.h"
84#include "arcane/core/IItemFamilySerializer.h"
85#include "arcane/core/IItemFamilySerializeStep.h"
86#include "arcane/core/IItemFamilyExchanger.h"
87#include "arcane/core/IItemFamilyModifier.h"
88#include "arcane/core/IItemFamilyPolicyMng.h"
89#include "arcane/core/IItemFamilyTopologyModifier.h"
90#include "arcane/core/IDoFFamily.h"
91#include "arcane/core/IParticleFamily.h"
92#include "arcane/core/ItemFamilySerializeArgs.h"
93#include "arcane/core/ITimeStats.h"
94#include "arcane/core/ITimerMng.h"
95#include "arcane/core/ITimeLoopMng.h"
96#include "arcane/core/IEntryPoint.h"
97#include "arcane/core/ICaseOptions.h"
98#include "arcane/core/ICaseFunctionProvider.h"
99#include "arcane/core/IVariableSynchronizerMng.h"
100#include "arcane/core/Configuration.h"
101#include "arcane/core/ConnectivityItemVector.h"
102#include "arcane/core/IVariableFilter.h"
103#include "arcane/core/IVariableParallelOperation.h"
104#include "arcane/core/IAsyncParticleExchanger.h"
105#include "arcane/core/IParticleExchanger.h"
106#include "arcane/core/IParallelExchanger.h"
107#include "arcane/core/ITimeHistoryCurveWriter.h"
108#include "arcane/core/ITimeHistoryCurveWriter2.h"
109#include "arcane/core/ITimeHistoryTransformer.h"
110#include "arcane/core/IItemOperationByBasicType.h"
111#include "arcane/core/IVariableSynchronizer.h"
112#include "arcane/core/IVariableUtilities.h"
113#include "arcane/core/IPhysicalUnitSystemService.h"
114#include "arcane/core/IPhysicalUnitSystem.h"
115#include "arcane/core/IPhysicalUnitConverter.h"
116#include "arcane/core/IPhysicalUnit.h"
117#include "arcane/core/IStandardFunction.h"
118#include "arcane/core/ItemPairGroup.h"
119#include "arcane/core/CaseFunction2.h"
120#include "arcane/core/IServiceAndModuleFactoryMng.h"
121#include "arcane/core/IGetVariablesValuesParallelOperation.h"
122#include "arcane/core/IGhostLayerMng.h"
123#include "arcane/core/IMeshUniqueIdMng.h"
124#include "arcane/core/VariableStatusChangedEventArgs.h"
125#include "arcane/core/MeshPartInfo.h"
126#include "arcane/core/IGraph2.h"
127#include "arcane/core/IGraphModifier2.h"
128#include "arcane/core/IRandomNumberGenerator.h"
129#include "arcane/core/ISimpleTableComparator.h"
130#include "arcane/core/ISimpleTableInternalComparator.h"
131#include "arcane/core/ISimpleTableInternalMng.h"
132#include "arcane/core/ISimpleTableOutput.h"
133#include "arcane/core/ISimpleTableReaderWriter.h"
134#include "arcane/core/ISimpleTableWriterHelper.h"
135#include "arcane/core/IPostProcessorWriter.h"
136#include "arcane/core/IMeshModifier.h"
137#include "arcane/core/MeshEvents.h"
138#include "arcane/core/IExternalPlugin.h"
139#include "arcane/core/IMeshSubdivider.h"
140
141#include "arcane/core/IMeshInitialAllocator.h"
142#include "arcane/core/internal/IItemFamilyInternal.h"
143#include "arcane/core/internal/IMeshInternal.h"
144#include "arcane/core/internal/IVariableInternal.h"
145#include "arcane/core/internal/IMeshModifierInternal.h"
146#include "arcane/core/internal/IVariableMngInternal.h"
147#include "arcane/core/internal/IVariableSynchronizerMngInternal.h"
148#include "arcane/core/internal/IIncrementalItemConnectivityInternal.h"
149#include "arcane/core/internal/IPolyhedralMeshModifier.h"
150#include "arcane/core/internal/IItemFamilySerializerMngInternal.h"
151
152/*---------------------------------------------------------------------------*/
153/*---------------------------------------------------------------------------*/
154
155namespace Arcane
156{
157
158/*---------------------------------------------------------------------------*/
159/*---------------------------------------------------------------------------*/
160
161IArcaneMain* IArcaneMain::global_arcane_main = 0;
162
163/*---------------------------------------------------------------------------*/
164/*---------------------------------------------------------------------------*/
165
168{
169 return global_arcane_main;
170}
171
172/*---------------------------------------------------------------------------*/
173/*---------------------------------------------------------------------------*/
174
176setArcaneMain(IArcaneMain* arcane_main)
177{
178 global_arcane_main = arcane_main;
179}
180
181/*---------------------------------------------------------------------------*/
182/*---------------------------------------------------------------------------*/
183
184extern "C++" String
185arcaneNamespaceURI()
186{
187 return String("http://www.cea.fr/arcane/1.0");
188}
189
190/*---------------------------------------------------------------------------*/
191/*---------------------------------------------------------------------------*/
192
193/*---------------------------------------------------------------------------*/
194/*---------------------------------------------------------------------------*/
195
197compress(Span<const Byte> values,ByteArray& compressed_values)
198{
199 return compress(values.smallView(),compressed_values);
200}
201
202/*---------------------------------------------------------------------------*/
203/*---------------------------------------------------------------------------*/
204
206decompress(Span<const Byte> compressed_values,Span<Byte> values)
207{
208 return decompress(compressed_values.smallView(),values.smallView());
209}
210
211/*---------------------------------------------------------------------------*/
212/*---------------------------------------------------------------------------*/
213
216{
217 IPrimaryMesh* primary_mesh = this->mesh()->toPrimaryMesh();
218 ARCANE_CHECK_POINTER(primary_mesh);
219 return primary_mesh;
220}
221
222/*---------------------------------------------------------------------------*/
223/*---------------------------------------------------------------------------*/
224
225ItemInternal* IItemFamilyModifier::
226allocOne(Int64 uid,ItemTypeInfo* type, mesh::MeshInfos& mesh_info)
227{
228 return ItemCompatibility::_itemInternal(allocOne(uid,type->itemTypeId(),mesh_info));
229}
230
231/*---------------------------------------------------------------------------*/
232/*---------------------------------------------------------------------------*/
233
234ItemInternal* IItemFamilyModifier::
235findOrAllocOne(Int64 uid,ItemTypeInfo* type, mesh::MeshInfos& mesh_info, bool& is_alloc)
236{
237 return ItemCompatibility::_itemInternal(findOrAllocOne(uid,type->itemTypeId(),mesh_info,is_alloc));
238}
239
240/*---------------------------------------------------------------------------*/
241/*---------------------------------------------------------------------------*/
242
244reserveMemoryForNbSourceItems([[maybe_unused]] Int32 n,
245 [[maybe_unused]] bool pre_alloc_connectivity)
246{
247}
248
249/*---------------------------------------------------------------------------*/
250/*---------------------------------------------------------------------------*/
251
258
259/*---------------------------------------------------------------------------*/
260/*---------------------------------------------------------------------------*/
261
263setConnectedItems(ItemLocalId source_item, Int32ConstArrayView target_local_ids)
264{
265 removeConnectedItems(source_item);
266 for (Int32 x : target_local_ids)
267 addConnectedItem(source_item, ItemLocalId{ x });
268}
269
270/*---------------------------------------------------------------------------*/
271/*---------------------------------------------------------------------------*/
272
274setMesh([[maybe_unused]] IMesh* mesh)
275{
276 // Utiliser variable d'environnement.
277 if (platform::getEnvironmentVariable("ARCANE_ALLOW_POSTPROCESSOR_SETMESH")=="1")
278 return;
279 ARCANE_FATAL("This call is deprecated and does not do anything."
280 " You can temporarely disable this exception if you set the environment"
281 " variable ARCANE_ALLOW_POSTPROCESSOR_SETMESH to '1'");
282}
283
284/*---------------------------------------------------------------------------*/
285/*---------------------------------------------------------------------------*/
286
289{
290 addCells(args.nbCell(),args.cellInfos(),args.cellLocalIds());
291}
292
295{
296 addFaces(args.nbFace(),args.faceInfos(),args.faceLocalIds());
297}
298
299/*---------------------------------------------------------------------------*/
300/*---------------------------------------------------------------------------*/
301
304{
305 ARCANE_THROW(NotImplementedException,"synchronize() with specific local ids");
306}
307
310{
311 ARCANE_THROW(NotImplementedException,"synchronize() with specific local ids");
312}
313
316{
317 ARCANE_THROW(NotImplementedException,"synchronize() with specific local ids");
318}
319
325
326/*---------------------------------------------------------------------------*/
327/*---------------------------------------------------------------------------*/
328
330computeAdjacency(const ItemPairGroup& adjacency_array, eItemKind link_kind, Integer nb_layer)
331{
332 computeAdjency(adjacency_array, link_kind, nb_layer);
333}
334
335/*---------------------------------------------------------------------------*/
336/*---------------------------------------------------------------------------*/
337
339findAdjacencyItems(const ItemGroup& group,
340 const ItemGroup& sub_group,
341 eItemKind link_kind,
342 Integer nb_layer)
343{
344 return findAdjencyItems(group, sub_group, link_kind, nb_layer);
345}
346
347/*---------------------------------------------------------------------------*/
348/*---------------------------------------------------------------------------*/
349
351setBackAndFrontCells(FaceLocalId, CellLocalId, CellLocalId)
352{
353 ARCANE_THROW(NotSupportedException, "only supported for FaceFamily of unstructured mesh");
354}
355
356/*---------------------------------------------------------------------------*/
357/*---------------------------------------------------------------------------*/
358
359} // End namespace Arcane
360
361/*---------------------------------------------------------------------------*/
362/*---------------------------------------------------------------------------*/
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Déclarations de types sur les entités.
Interface de la classe de gestion du code.
Definition IArcaneMain.h:54
static IArcaneMain * arcaneMain()
static void setArcaneMain(IArcaneMain *arcane_main)
virtual void compress(ByteConstArrayView values, ByteArray &compressed_values)=0
Compresse les données values et les stocke dans compressed_values.
virtual void decompress(ByteConstArrayView compressed_values, ByteArrayView values)=0
Décompresse les données compressed_values et les stocke dans values.
virtual void removeConnectedItems(ItemLocalId source_item)=0
Supprime toute les entités connectées à source_item.
virtual void addConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id)=0
Ajoute l'entité de localId() target_local_id à la connectivité de source_item.
virtual void setConnectedItems(ItemLocalId source_item, Int32ConstArrayView target_local_ids)
Alloue et positionne les entités connectées à source_item.
virtual void reserveMemoryForNbSourceItems(Int32 n, bool pre_alloc_connectivity)
Réserve la mémoire pour n entités sources.
virtual void _internalNotifySourceItemsAdded(Int32ConstArrayView items)
Notifie la connectivité que les entités items ont été ajoutées à la famille source.
virtual void notifySourceItemAdded(ItemLocalId item)=0
Notifie la connectivité qu'une entité a été ajoutée à la famille source.
virtual void setBackAndFrontCells(FaceLocalId face_lid, CellLocalId back_cell_lid, CellLocalId front_cell_lid)
Positionne la maille devant et derrière une face.
virtual void synchronize(VariableCollection variables)=0
Synchronise les variables variables.
virtual ItemPairGroup findAdjencyItems(const ItemGroup &group, const ItemGroup &sub_group, eItemKind link_kind, Integer nb_layer)=0
Cherche une liste d'adjacence.
virtual ItemPairGroup findAdjacencyItems(const ItemGroup &group, const ItemGroup &sub_group, eItemKind link_kind, Integer nb_layer)
Cherche une liste d'adjacence.
virtual void addFaces(Integer nb_face, Int64ConstArrayView face_infos, Int32ArrayView face_lids=Int32ArrayView())=0
Ajoute des faces.
virtual void addCells(Integer nb_cell, Int64ConstArrayView cell_infos, Int32ArrayView cells_lid=Int32ArrayView())=0
Ajoute des mailles.
virtual IMesh * mesh() const =0
Maillage associé au partitionneur.
virtual IPrimaryMesh * primaryMesh() override
Maillage associé
virtual void computeAdjency(ItemPairGroup adjacency_array, eItemKind link_kind, Integer nb_layer)=0
Calcul des adjacences, rangées dans adjacency_array.
virtual void computeAdjacency(const ItemPairGroup &adjacency_array, eItemKind link_kind, Integer nb_layer)
Calcul des adjacences, rangées dans adjacency_array.
virtual IPrimaryMesh * toPrimaryMesh()=0
Retourne l'instance sous la forme d'un IPrimaryMesh.
virtual void setMesh(IMesh *mesh)
Positionne le maillage.
virtual void synchronize(IVariable *var)=0
Synchronise la variable var en mode bloquant.
Interface d'une variable.
Definition IVariable.h:39
virtual void synchronize()=0
Synchronise la variable.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Structure interne d'une entité de maillage.
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Tableau de listes d'entités.
Infos sur un type d'entité du maillage.
ItemTypeId itemTypeId() const
Numéro du type.
Arguments pour IMeshModifier::addCells().
Arguments pour IMeshModifier::addFaces().
Exception lorsqu'une fonction n'est pas implémentée.
Exception lorsqu'une opération n'est pas supportée.
constexpr view_type smallView()
Vue constante sur cette vue.
Definition Span.h:369
Vue d'un tableau d'éléments de type T.
Definition Span.h:612
Chaîne de caractères unicode.
Collection de variables.
Classe factorisant des informations sur le maillage.
Definition MeshInfos.h:36
ARCCORE_BASE_EXPORT String getEnvironmentVariable(const String &name)
Variable d'environnement du nom name.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
Definition UtilsTypes.h:137
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:498
eItemKind
Genre d'entité de maillage.
std::int32_t Int32
Type entier signé sur 32 bits.