Arcane  4.2.1.0
Developer documentation
Loading...
Searching...
No Matches
MetisMeshPartitioner_axl.h
1/*---------------------------------------------------------------------------*/
2/*---------------------------------------------------------------------------*/
3// #WARNING#: This file has been generated automatically. Do not edit.
4// Axlstar version 1.0
5/*---------------------------------------------------------------------------*/
6/*---------------------------------------------------------------------------*/
7
8#ifndef ARCANE_CASEOPTION_AXLSTAR_METISMESHPARTITIONER_H
9#define ARCANE_CASEOPTION_AXLSTAR_METISMESHPARTITIONER_H
10
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/String.h"
15
16#include "arcane/CaseOptions.h"
17#include "arcane/CaseOptionsMulti.h"
18#include "arcane/CaseOptionBuildInfo.h"
19#include "arcane/XmlNodeList.h"
20#include "arcane/std/TypesMetisMeshPartitioner.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25ARCANE_BEGIN_NAMESPACE
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
31class CaseOptionsMetisMeshPartitioner
33{
34public:
35
36 /*-------------------------------------------------------------------------*/
37 /*--------------------------- Complex Options -----------------------------*/
38 /*-------------------------------------------------------------------------*/
39
40 /*-------------------------------------------------------------------------*/
41 /*--------------------------- Non Complex Options -------------------------*/
42 /*-------------------------------------------------------------------------*/
43
44 CaseOptionsMetisMeshPartitioner(Arcane::ICaseOptions* co)
45 : m_case_options(co)
46 , maxDiffusiveCount(Arcane::CaseOptionBuildInfo(_configList(),
47 /* name */ "max-diffusive-count", _element(),
48 /* default */ "10",
49 /* min-occurs */ 1,
50 /* max-occurs */ 1,
51 /* optional */ false))
52 , imbalanceRelativeTolerance(Arcane::CaseOptionBuildInfo(_configList(),
53 /* name */ "imbalance-relative-tolerance", _element(),
54 /* default */ "4.0",
55 /* min-occurs */ 1,
56 /* max-occurs */ 1,
57 /* optional */ false))
58 , toleranceTarget(Arcane::CaseOptionBuildInfo(_configList(),
59 /* name */ "tolerance-target", _element(),
60 /* default */ "1.05",
61 /* min-occurs */ 1,
62 /* max-occurs */ 1,
63 /* optional */ false))
64 , dumpGraph(Arcane::CaseOptionBuildInfo(_configList(),
65 /* name */ "dump-graph", _element(),
66 /* default */ "false",
67 /* min-occurs */ 1,
68 /* max-occurs */ 1,
69 /* optional */ false))
70 , inputOutputDigest(Arcane::CaseOptionBuildInfo(_configList(),
71 /* name */ "input-output-digest", _element(),
72 /* default */ "false",
73 /* min-occurs */ 1,
74 /* max-occurs */ 1,
75 /* optional */ false))
76 , metisCallStrategy(Arcane::CaseOptionBuildInfo(_configList(),
77 /* name */ "metis-call-strategy", _element(),
78 /* default */ "one-processor-per-node",
79 /* min-occurs */ 1,
80 /* max-occurs */ 1,
81 /* optional */ false),
82 /* type */ "MetisCallStrategy")
83 , emptyPartitionStrategy(Arcane::CaseOptionBuildInfo(_configList(),
84 /* name */ "empty-partition-strategy", _element(),
85 /* default */ "take-from-biggest-partition-v2",
86 /* min-occurs */ 1,
87 /* max-occurs */ 1,
88 /* optional */ false),
89 /* type */ "MetisEmptyPartitionStrategy")
90 {
91
92 {
93 auto x = new Arcane::CaseOptionEnumValue(
94 /* enum value name */ Arcane::String("all-processors"),
95 /* enum object */ (int)(MetisCallStrategy::all_processors));
96 metisCallStrategy.addEnumValue(x,false);
97 }
98 {
99 auto x = new Arcane::CaseOptionEnumValue(
100 /* enum value name */ Arcane::String("one-processor-per-node"),
101 /* enum object */ (int)(MetisCallStrategy::one_processor_per_node));
102 metisCallStrategy.addEnumValue(x,false);
103 }
104 {
105 auto x = new Arcane::CaseOptionEnumValue(
106 /* enum value name */ Arcane::String("two-processors-two-nodes"),
107 /* enum object */ (int)(MetisCallStrategy::two_processors_two_nodes));
108 metisCallStrategy.addEnumValue(x,false);
109 }
110 {
111 auto x = new Arcane::CaseOptionEnumValue(
112 /* enum value name */ Arcane::String("two-gathered-processors"),
113 /* enum object */ (int)(MetisCallStrategy::two_gathered_processors));
114 metisCallStrategy.addEnumValue(x,false);
115 }
116 {
117 auto x = new Arcane::CaseOptionEnumValue(
118 /* enum value name */ Arcane::String("two-scattered-processors"),
119 /* enum object */ (int)(MetisCallStrategy::two_scattered_processors));
120 metisCallStrategy.addEnumValue(x,false);
121 }
122 {
123 auto x = new Arcane::CaseOptionEnumValue(
124 /* enum value name */ Arcane::String("none"),
125 /* enum object */ (int)(MetisEmptyPartitionStrategy::DoNothing));
126 emptyPartitionStrategy.addEnumValue(x,false);
127 }
128 {
129 auto x = new Arcane::CaseOptionEnumValue(
130 /* enum value name */ Arcane::String("take-from-biggest-partition-v1"),
131 /* enum object */ (int)(MetisEmptyPartitionStrategy::TakeFromBiggestPartitionV1));
132 emptyPartitionStrategy.addEnumValue(x,false);
133 }
134 {
135 auto x = new Arcane::CaseOptionEnumValue(
136 /* enum value name */ Arcane::String("take-from-biggest-partition-v2"),
137 /* enum object */ (int)(MetisEmptyPartitionStrategy::TakeFromBiggestPartitionV2));
138 emptyPartitionStrategy.addEnumValue(x,false);
139 }
140addAlternativeNodeName(
141 /* language */ Arcane::String("fr"),
142 /* alternative name */ Arcane::String("metis"));
143 }
144
145public:
146 // Interfaces for main CaseOptions
147
148 Arcane::Integer getMaxDiffusiveCount() { return maxDiffusiveCount(); }
149 Arcane::ICaseFunction* getMaxDiffusiveCountFunction() { return maxDiffusiveCount.function(); }
150 Arcane::IStandardFunction* getMaxDiffusiveCountStandardFunction() { return maxDiffusiveCount.standardFunction(); }
151 Arcane::Real getImbalanceRelativeTolerance() { return imbalanceRelativeTolerance(); }
152 Arcane::ICaseFunction* getImbalanceRelativeToleranceFunction() { return imbalanceRelativeTolerance.function(); }
153 Arcane::IStandardFunction* getImbalanceRelativeToleranceStandardFunction() { return imbalanceRelativeTolerance.standardFunction(); }
154 Arcane::Real getToleranceTarget() { return toleranceTarget(); }
155 Arcane::ICaseFunction* getToleranceTargetFunction() { return toleranceTarget.function(); }
156 Arcane::IStandardFunction* getToleranceTargetStandardFunction() { return toleranceTarget.standardFunction(); }
157 bool getDumpGraph() { return dumpGraph(); }
158 Arcane::ICaseFunction* getDumpGraphFunction() { return dumpGraph.function(); }
159 Arcane::IStandardFunction* getDumpGraphStandardFunction() { return dumpGraph.standardFunction(); }
160 bool getInputOutputDigest() { return inputOutputDigest(); }
161 Arcane::ICaseFunction* getInputOutputDigestFunction() { return inputOutputDigest.function(); }
162 Arcane::IStandardFunction* getInputOutputDigestStandardFunction() { return inputOutputDigest.standardFunction(); }
163
164
165 MetisCallStrategy getMetisCallStrategy() { return metisCallStrategy(); }
166 MetisEmptyPartitionStrategy getEmptyPartitionStrategy() { return emptyPartitionStrategy(); }
167
168 // Interfaces for complex options
169
170
171public:
172
173 Arcane::ICaseOptions* caseOptions() const
174 {
175 return m_case_options.get();
176 }
177
178 Arcane::ICaseOptionList* configList() const
179 {
180 return m_case_options->configList();
181 }
182
183 void setCaseModule(Arcane::IModule* m)
184 {
185 m_case_options->setCaseModule(m);
186 }
187
188 void setCaseServiceInfo(Arcane::IServiceInfo* si)
189 {
190 m_case_options->setCaseServiceInfo(si);
191 }
192
193 void addAlternativeNodeName(const Arcane::String& lang,
194 const Arcane::String& name)
195 {
196 m_case_options->addAlternativeNodeName(lang,name);
197 }
198
199private:
200
201 Arcane::ICaseOptionList* _configList() const { return configList(); }
202 Arcane::XmlNode _element() const { return Arcane::XmlNode(); }
203
204private:
205
206 static Arcane::ICaseOptions* _createCaseOption(Arcane::ICaseMng* cm,Arcane::ICaseOptions* co);
207
209
210public:
211
212
213 Arcane::CaseOptionInteger maxDiffusiveCount;
214 Arcane::CaseOptionReal imbalanceRelativeTolerance;
215 Arcane::CaseOptionReal toleranceTarget;
216 Arcane::CaseOptionBool dumpGraph;
217 Arcane::CaseOptionBool inputOutputDigest;
220};
221
222/*---------------------------------------------------------------------------*/
223/*---------------------------------------------------------------------------*/
224
225ARCANE_END_NAMESPACE
226
227/*---------------------------------------------------------------------------*/
228/*---------------------------------------------------------------------------*/
229
230#endif
231
232
233
234/*---------------------------------------------------------------------------*/
235/*---------------------------------------------------------------------------*/
236// #WARNING#: This file has been generated automatically. Do not edit.
237// Axlstar version 1.0
238/*---------------------------------------------------------------------------*/
239/*---------------------------------------------------------------------------*/
240#ifndef ARCANE_SERVICE_AXLSTAR_METISMESHPARTITIONER_H
241#define ARCANE_SERVICE_AXLSTAR_METISMESHPARTITIONER_H
242/*---------------------------------------------------------------------------*/
243/*---------------------------------------------------------------------------*/
244
245#include "arcane/core/VariableTypes.h"
246#include "arcane/core/ServiceInfo.h"
247#include "arcane/core/ISubDomain.h"
248#include "arcane/core/ServiceBuildInfo.h"
250#include "arcane/core/ServiceRegisterer.h"
251#include "arcane/core/BasicService.h"
252
253#ifndef ARCANE_HAS_SPECIFIC_BASIC_SERVICE
254// Code pour les versions de Arcane avant la 3.8 qui ne possèdent pas les
255// classes de base spécifiques pour les services
256namespace Arcane
257{
258using BasicCaseOptionService = BasicService;
259using BasicSubDomainService = BasicService;
260using BasicMeshService = BasicService;
261}
262#endif
263
264/*---------------------------------------------------------------------------*/
265/*---------------------------------------------------------------------------*/
266
267namespace Arcane
268{
269
270/*---------------------------------------------------------------------------*/
271/*---------------------------------------------------------------------------*/
272
273class CaseOptionsMetisMeshPartitioner;
274
275/*---------------------------------------------------------------------------*/
276/*---------------------------------------------------------------------------*/
277
280 : public MeshPartitionerBase
281{
282public:
283 // NOTE GG: attention code dupliqué avec 'ServiceT4CaseAndStrong'. Bien reporter les modifications
284 template <typename ServiceClassType> static void fillServiceInfo(Arcane::ServiceInfo* si)
285 {
286 si->setCaseOptionsFileName("MetisMeshPartitioner_arcane_std");
287 si->setAxlVersion(0.0);
288 si->setDefaultTagName("metis-mesh-partitioner");
289 si->setAxlContent(getAxlContent());
290 si->setTagName("metis","fr");
294);
295 }
296
297public:
298
301 : MeshPartitionerBase(sbi)
302 , m_options(nullptr)
303 {
305 if (co) {
307 }
308
309 }
310
313 {
314 delete m_options;
315 }
316
317
318public:
319
322
323private:
324
327
328protected:
329
331private:
333 {
334 const Arcane::Byte* content = (const Arcane::Byte*)"";
335 Arcane::Span<const Arcane::Byte> bytes(content,0);
336 int file_version = 1;
337 return Arcane::FileContent(bytes,file_version,"");
338 }
339};
340
341/*---------------------------------------------------------------------------*/
342/*---------------------------------------------------------------------------*/
343
344#define ARCANE_REGISTER_SERVICE_METISMESHPARTITIONER(service_name,class_name) \
345 ARCANE_REGISTER_AXL_SERVICE(class_name,Arcane::ServiceProperty(#service_name,Arcane::ST_CaseOption,\
346 Arcane::SFP_None ))
347
348/*---------------------------------------------------------------------------*/
349/*---------------------------------------------------------------------------*/
350
351} // End namespace Arcane
352
353/*---------------------------------------------------------------------------*/
354/*---------------------------------------------------------------------------*/
355
356#endif
357
This file contains the various service factories and macros for registering services.
#define ARCANE_SERVICE_INTERFACE(ainterface)
Macro to declare an interface when registering a service.
ArcaneMetisMeshPartitionerObject(const Arcane::ServiceBuildInfo &sbi)
Constructeur.
CaseOptionsMetisMeshPartitioner * m_options
Options du jeu de données du service.
static Arcane::FileContent getAxlContent()
Variables du service.
CaseOptionsMetisMeshPartitioner * options() const
Options du jeu de données du service.
Base class of a service linked to a subdomain.
Information for building a dataset option.
Name and value of a data set enumeration.
Description and content of a file.
Definition FileContent.h:33
Interface of a dataset function.
Case manager interface.
Definition ICaseMng.h:57
Interface for a data set options list.
Interface for a list of data set options.
Interface of a mesh partitioner.
Interface of a mesh partitioner.
Interface of a module.
Definition IModule.h:40
Interface for service or module information.
Interface managing a standard function.
Information about a service.
Definition ServiceInfo.h:51
Encapsulation of a pointer with a reference counter.
static void registerToServiceInfo(ServiceInfo *si, const Interfaces &... args)
Registers the factories for the Interfaces interfaces in the service.
ICaseOptions * caseOptions() const
Access to the associated ICaseOptions.
Structure containing the information to create a service.
View of an array of elements of type T.
Definition Span.h:633
Node of a DOM tree.
Definition XmlNode.h:51
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.
double Real
Type representing a real number.
unsigned char Byte
Type of a byte.
Definition BaseTypes.h:42