OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
classfactory.C
Go to the documentation of this file.
1 /*
2  *
3  * ##### ##### ###### ###### ### ###
4  * ## ## ## ## ## ## ## ### ##
5  * ## ## ## ## #### #### ## # ##
6  * ## ## ## ## ## ## ## ##
7  * ## ## ## ## ## ## ## ##
8  * ##### ##### ## ###### ## ##
9  *
10  *
11  * OOFEM : Object Oriented Finite Element Code
12  *
13  * Copyright (C) 1993 - 2013 Borek Patzak
14  *
15  *
16  *
17  * Czech Technical University, Faculty of Civil Engineering,
18  * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19  *
20  * This library is free software; you can redistribute it and/or
21  * modify it under the terms of the GNU Lesser General Public
22  * License as published by the Free Software Foundation; either
23  * version 2.1 of the License, or (at your option) any later version.
24  *
25  * This program is distributed in the hope that it will be useful,
26  * but WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28  * Lesser General Public License for more details.
29  *
30  * You should have received a copy of the GNU Lesser General Public
31  * License along with this library; if not, write to the Free Software
32  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33  */
34 
35 #include "classfactory.h"
36 
37 #include <string>
38 #include <algorithm>
39 #include <cctype>
40 
41 #include "masterdof.h"
42 #include "slavedof.h"
43 #include "simpleslavedof.h"
44 #include "activedof.h"
45 
46 #include "gaussintegrationrule.h"
47 #include "lobattoir.h"
48 
49 #include "initialcondition.h"
50 
51 
52 namespace oofem {
54 {
55  static ClassFactory ans;
56  return ans;
57 }
58 
60 
61 std :: string conv2lower(std :: string input)
62 {
63  std::transform(input.begin(), input.end(), input.begin(), ::tolower);
64  return input;
65 }
66 
67 // Non-string names (should be changed eventually):
68 template< typename C, typename T, typename V, typename ... As> C *cf_create2(const T &list, V name, As ... args)
69 {
70  auto creator = list.find(name);
71  return creator != list.end() ? creator->second(args...) : nullptr;
72 }
73 
74 // Helper for storing creators
75 template< typename T, typename V, typename C> bool cf_store2(T &list, V name, C &creator)
76 {
77  list[ name ] = creator;
78  return true;
79 }
80 
81 // Helper for creating objects
82 template< typename C, typename T, typename ... As> C *cf_create(const T &list, const char *name, As ... args)
83 {
84  auto creator = list.find(conv2lower(name));
85  return creator != list.end() ? creator->second(args...) : nullptr;
86 }
87 
88 // Helper for storing creators
89 template< typename T, typename C> bool cf_store(T &list, const char *name, C &creator)
90 {
91  list[ conv2lower(name) ] = creator;
92  return true;
93 }
94 
95 
97 {
98  // Fixed list for DOF types. No new components can register for these since these are part of the internal structure in OOFEM.
99  dofList [ DT_master ] = dofCreator< MasterDof >;
100  dofList [ DT_simpleSlave ] = dofCreator< SimpleSlaveDof >;
101  dofList [ DT_slave ] = dofCreator< SlaveDof >;
102  dofList [ DT_active ] = dofCreator< ActiveDof >;
103 }
104 
106 {
107  return cf_create2<SparseMtrx>(sparseMtrxList, name);
108 }
109 
111 {
112  return cf_store2(sparseMtrxList, name, creator);
113 }
114 
116 {
117  return cf_create2<Dof>(dofList, name, dofid, dman);
118 }
119 
121 {
122  return cf_create2<SparseLinearSystemNM>(sparseLinSolList, name, domain, emodel);
123 }
124 
126 {
127  return cf_store2(sparseLinSolList, name, creator);
128 }
129 
131 {
132  return cf_create2<ErrorEstimator>(errEstList, name, number, domain);
133 }
134 
136 {
137  return cf_store2(errEstList, name, creator);
138 }
139 
140 InitialCondition *ClassFactory :: createInitialCondition(const char *name, int number, Domain *domain)
141 {
142  if ( conv2lower(name).compare("initialcondition") == 0 ) {
143  return new InitialCondition(number, domain);
144  }
145  return nullptr;
146 }
147 
149 {
150  return cf_store2(nodalRecoveryModelList, name, creator);
151 }
152 
154 {
155  return cf_create2<NodalRecoveryModel>(nodalRecoveryModelList, name, domain);
156 }
157 
158 
159 Element *ClassFactory :: createElement(const char *name, int number, Domain *domain)
160 {
161  return cf_create<Element>(elemList, name,number, domain);
162 }
163 
164 bool ClassFactory :: registerElement( const char *name, Element * ( *creator )( int, Domain * ) )
165 {
166  return cf_store(elemList, name, creator);
167 }
168 
169 DofManager *ClassFactory :: createDofManager(const char *name, int number, Domain *domain)
170 {
171  return cf_create<DofManager>(dofmanList, name, number, domain);
172 }
173 
174 bool ClassFactory :: registerDofManager( const char *name, DofManager * ( *creator )( int, Domain * ) )
175 {
176  return cf_store(dofmanList, name, creator);
177 }
178 
180 {
181  return cf_create<GeneralBoundaryCondition>(bcList, name, number, domain);
182 }
183 
184 bool ClassFactory :: registerBoundaryCondition( const char *name, GeneralBoundaryCondition * ( *creator )( int, Domain * ) )
185 {
186  return cf_store(bcList, name, creator);
187 }
188 
189 CrossSection *ClassFactory :: createCrossSection(const char *name, int number, Domain *domain)
190 {
191  return cf_create<CrossSection>(csList, name, number, domain);
192 }
193 
194 bool ClassFactory :: registerCrossSection( const char *name, CrossSection * ( *creator )( int, Domain * ) )
195 {
196  return cf_store(csList, name, creator);
197 }
198 
199 Material *ClassFactory :: createMaterial(const char *name, int number, Domain *domain)
200 {
201  return cf_create<Material>(matList, name, number, domain);
202 }
203 
204 bool ClassFactory :: registerMaterial( const char *name, Material * ( *creator )( int, Domain * ) )
205 {
206  return cf_store(matList, name, creator);
207 }
208 
209 EngngModel *ClassFactory :: createEngngModel(const char *name, int number, EngngModel *master)
210 {
211  return cf_create<EngngModel>(engngList, name, number, master);
212 }
213 
214 bool ClassFactory :: registerEngngModel( const char *name, EngngModel * ( *creator )( int, EngngModel * ) )
215 {
216  return cf_store(engngList, name, creator);
217 }
218 
219 Function *ClassFactory :: createFunction(const char *name, int number, Domain *domain)
220 {
221  return cf_create<Function>(funcList, name, number, domain);
222 }
223 
224 bool ClassFactory :: registerFunction( const char *name, Function * ( *creator )( int, Domain * ) )
225 {
226  return cf_store(funcList, name, creator);
227 }
228 
229 NonlocalBarrier *ClassFactory :: createNonlocalBarrier(const char *name, int number, Domain *domain)
230 {
231  return cf_create<NonlocalBarrier>(nlbList, name, number, domain);
232 }
233 
234 bool ClassFactory :: registerNonlocalBarrier( const char *name, NonlocalBarrier * ( *creator )( int, Domain * ) )
235 {
236  return cf_store(nlbList, name, creator);
237 }
238 
239 ExportModule *ClassFactory :: createExportModule(const char *name, int number, EngngModel *emodel)
240 {
241  return cf_create<ExportModule>(exportList, name, number, emodel);
242 }
243 
244 bool ClassFactory :: registerExportModule( const char *name, ExportModule * ( *creator )( int, EngngModel * ) )
245 {
246  return cf_store(exportList, name, creator);
247 }
248 
250 {
251  return cf_create<SparseNonLinearSystemNM>(nonlinList, name, domain, emodel);
252 }
253 
255 {
256  return cf_store(nonlinList, name, creator);
257 }
258 
259 InitModule *ClassFactory :: createInitModule(const char *name, int number, EngngModel *emodel)
260 {
261  return cf_create<InitModule>(initList, name, number, emodel);
262 }
263 
264 bool ClassFactory :: registerInitModule(const char *name, InitModule * ( *creator )( int, EngngModel * ) )
265 {
266  return cf_store(initList, name, creator);
267 }
268 
270 {
271  return cf_create<TopologyDescription>(topologyList, name, domain);
272 }
273 
274 bool ClassFactory :: registerTopologyDescription(const char *name, TopologyDescription * ( *creator )( Domain * ) )
275 {
276  return cf_store(topologyList, name, creator);
277 }
278 
279 
280 // XFEM:
281 EnrichmentItem *ClassFactory :: createEnrichmentItem(const char *name, int number, XfemManager *xm, Domain *domain)
282 {
283  return cf_create<EnrichmentItem>(enrichItemList, name, number, xm, domain);
284 }
285 
286 bool ClassFactory :: registerEnrichmentItem(const char *name, EnrichmentItem * ( *creator )( int, XfemManager *, Domain * ) )
287 {
288  return cf_store(enrichItemList, name, creator);
289 }
290 
292 {
293  return cf_create<NucleationCriterion>(nucleationCritList, name, domain);
294 }
295 
296 bool ClassFactory :: registerNucleationCriterion(const char *name, NucleationCriterion * ( *creator )( Domain * ) )
297 {
298  return cf_store(nucleationCritList, name, creator);
299 }
300 
302 {
303  return cf_create<EnrichmentFunction>(enrichFuncList, name, number, domain);
304 }
305 
306 bool ClassFactory :: registerEnrichmentFunction(const char *name, EnrichmentFunction * ( *creator )( int, Domain * ) )
307 {
308  return cf_store(enrichFuncList, name, creator);
309 }
310 
311 EnrichmentDomain *ClassFactory :: createEnrichmentDomain(const char *name)
312 {
313  return cf_create<EnrichmentDomain>(enrichmentDomainList, name);
314 }
315 
316 bool ClassFactory :: registerEnrichmentDomain(const char *name, EnrichmentDomain * ( *creator )( ) )
317 {
318  return cf_store(enrichmentDomainList, name, creator);
319 }
320 
322 {
323  return cf_create<EnrichmentFront>(enrichmentFrontList, name);
324 }
325 
326 bool ClassFactory :: registerEnrichmentFront(const char *name, EnrichmentFront * ( *creator )( ) )
327 {
328  return cf_store(enrichmentFrontList, name, creator);
329 }
330 
332 {
333  return cf_create<PropagationLaw>(propagationLawList, name);
334 }
335 
336 bool ClassFactory :: registerPropagationLaw( const char *name, PropagationLaw * ( *creator )( ) )
337 {
338  return cf_store(propagationLawList, name, creator);
339 }
340 
342 {
343  return cf_create<BasicGeometry>(geometryList, name);
344 }
345 
346 bool ClassFactory :: registerGeometry(const char *name, BasicGeometry * ( *creator )( ) )
347 {
348  return cf_store(geometryList, name, creator);
349 }
350 
352 {
353  return cf_create<XfemManager>(xManList, name, domain);
354 }
355 
356 bool ClassFactory :: registerXfemManager(const char *name, XfemManager * ( *creator )( Domain * ) )
357 {
358  return cf_store(xManList, name, creator);
359 }
360 
361 
362 // Failure module:
363 
364 FailureCriteria *ClassFactory :: createFailureCriteria(const char *name, int number, FractureManager *fracManager)
365 {
366  return cf_create<FailureCriteria>(failureCriteriaList, name, number, fracManager);
367 }
368 
369 bool ClassFactory :: registerFailureCriteria( const char *name, FailureCriteria * ( *creator )( int, FractureManager * ) )
370 {
371  return cf_store(failureCriteriaList, name, creator);
372 }
373 
375 {
376  return cf_create<FailureCriteriaStatus>(failureCriteriaStatusList, name, number, fc);
377 }
378 
380 {
381  return cf_store(failureCriteriaStatusList, name, creator);
382 }
383 
384 
386 {
387  return cf_create<ContactManager>(contactManList, name, domain);
388 }
389 
390 bool ClassFactory :: registerContactManager(const char *name, ContactManager * ( *creator )( Domain * ) )
391 {
392  return cf_store(contactManList, name, creator);
393 }
394 
395 
397 {
398  return cf_create<ContactDefinition>(contactDefList, name, cMan);
399 }
400 
402 {
403  return cf_store(contactDefList, name, creator);
404 }
405 
407 {
408  return cf_store2(generalizedEigenValueSolverList, name, creator);
409 }
410 
412 {
413  return cf_create2<SparseGeneralEigenValueSystemNM>(generalizedEigenValueSolverList, name, domain, emodel);
414 }
415 
417 {
418  if ( type == IRT_Gauss ) {
419  return new GaussIntegrationRule(number, e);
420  } else if ( type == IRT_Lobatto ) {
421  return new LobattoIntegrationRule(number, e);
422  }
423  return nullptr;
424 }
425 
427 {
428  return cf_store2(materialMappingList, name, creator);
429 }
430 
432 {
433  return cf_create2<MaterialMappingAlgorithm>(materialMappingList, name);
434 }
435 
437 {
438  return cf_store2(mesherInterfaceList, name, creator);
439 }
440 
442 {
443  return cf_create2<MesherInterface>(mesherInterfaceList, name, domain);
444 }
445 
446 
448 {
449  return cf_create<LoadBalancerMonitor>(loadMonitorList, name, emodel);
450 }
451 
453 {
454  return cf_store(loadMonitorList, name, creator);
455 }
456 
458 {
459  return cf_create<LoadBalancer>(loadBalancerList, name, domain);
460 }
461 
462 bool ClassFactory :: registerLoadBalancer(const char *name, LoadBalancer * ( *creator )( Domain * ) )
463 {
464  return cf_store(loadBalancerList, name, creator);
465 }
466 
467 } // End namespace oofem
TopologyDescription * createTopology(const char *name, Domain *domain)
Creates new instance of topology description corresponding to given keyword.
Definition: classfactory.C:269
ContactDefinition * createContactDefinition(const char *name, ContactManager *cMan)
Definition: classfactory.C:396
GenEigvalSolverType
Types of general eigenvalue solvers.
LinSystSolverType
The values of this type should be related not to specific solvers, but more to specific packages that...
Material * createMaterial(const char *name, int num, Domain *domain)
Creates new instance of material corresponding to given keyword.
Definition: classfactory.C:199
std::map< std::string, Element *(*)(int, Domain *) > elemList
Associative container containing element creators with element name as key.
Definition: classfactory.h:208
bool registerEnrichmentFront(const char *name, EnrichmentFront *(*creator)())
Definition: classfactory.C:326
C * cf_create(const T &list, const char *name, As...args)
Definition: classfactory.C:82
std::map< std::string, LoadBalancer *(*)(Domain *) > loadBalancerList
Associative container containing load balancer creators.
Definition: classfactory.h:233
NodalRecoveryModel * createNodalRecoveryModel(NodalRecoveryModel::NodalRecoveryModelType type, Domain *d)
Creates new instance of nodal recovery model corresponding to given type.
Definition: classfactory.C:153
LoadBalancer * createLoadBalancer(const char *name, Domain *d)
Definition: classfactory.C:457
std::map< std::string, ContactDefinition *(*)(ContactManager *) > contactDefList
Definition: classfactory.h:278
Abstract class representing entity, which is included in the FE model using one (or more) global func...
std::map< std::string, CrossSection *(*)(int, Domain *) > csList
Associative container containing cross section creators with cross section name as key...
Definition: classfactory.h:214
C * cf_create2(const T &list, V name, As...args)
Definition: classfactory.C:68
std::map< LinSystSolverType, SparseLinearSystemNM *(*)(Domain *, EngngModel *) > sparseLinSolList
Associative container containing sparse linear solver creators.
Definition: classfactory.h:243
BasicGeometry * createGeometry(const char *name)
Definition: classfactory.C:341
Function * createFunction(const char *name, int num, Domain *domain)
Creates new instance of load time function corresponding to given keyword.
Definition: classfactory.C:219
Class and object Domain.
Definition: domain.h:115
bool registerNucleationCriterion(const char *name, NucleationCriterion *(*creator)(Domain *))
Definition: classfactory.C:296
EnrichmentItem * createEnrichmentItem(const char *name, int num, XfemManager *xm, Domain *domain)
Definition: classfactory.C:281
Abstract base class for all nonlocal barriers.
bool registerSparseNonLinearSystemNM(const char *name, SparseNonLinearSystemNM *(*creator)(Domain *, EngngModel *))
Registers a new nonlinear solver in the class factory.
Definition: classfactory.C:254
Class implementing general initial condition.
bool registerNodalRecoveryModel(NodalRecoveryModel::NodalRecoveryModelType name, NodalRecoveryModel *(*creator)(Domain *))
Registers a new nodal recovery model.
Definition: classfactory.C:148
Base class for all matrices stored in sparse format.
Definition: sparsemtrx.h:60
SparseMtrx * createSparseMtrx(SparseMtrxType type)
Creates new instance of sparse matrix corresponding to given keyword.
Definition: classfactory.C:105
bool registerLoadBalancerMonitor(const char *name, LoadBalancerMonitor *(*creator)(EngngModel *))
Definition: classfactory.C:452
std::map< std::string, NucleationCriterion *(*)(Domain *) > nucleationCritList
Associative container containing nucleation criterion creators.
Definition: classfactory.h:257
NonlocalBarrier * createNonlocalBarrier(const char *name, int num, Domain *domain)
Creates new instance of nonlocal barrier corresponding to given keyword.
Definition: classfactory.C:229
bool registerSparseLinSolver(LinSystSolverType type, SparseLinearSystemNM *(*creator)(Domain *, EngngModel *))
Registers a sparse linear system solver.
Definition: classfactory.C:125
bool registerXfemManager(const char *name, XfemManager *(*creator)(Domain *))
Definition: classfactory.C:356
std::map< std::string, FailureCriteriaStatus *(*)(int, FailureCriteria *) > failureCriteriaStatusList
Definition: classfactory.h:274
bool registerEngngModel(const char *name, EngngModel *(*creator)(int, EngngModel *))
Registers a new engineering model in the class factory.
Definition: classfactory.C:214
This base class is an abstraction for all numerical methods solving sparse linear system of equations...
std::map< std::string, ExportModule *(*)(int, EngngModel *) > exportList
Associative container containing export module creators.
Definition: classfactory.h:224
bool registerCrossSection(const char *name, CrossSection *(*creator)(int, Domain *))
Registers a new cross section in the class factory.
Definition: classfactory.C:194
std::map< std::string, NonlocalBarrier *(*)(int, Domain *) > nlbList
Associative container containing nonlocal barriers creators with barrier name as key.
Definition: classfactory.h:222
bool registerFailureCriteria(const char *name, FailureCriteria *(*creator)(int, FractureManager *))
Definition: classfactory.C:369
ExportModule * createExportModule(const char *name, int num, EngngModel *emodel)
Creates new instance of export module corresponding to given keyword.
Definition: classfactory.C:239
ContactManager * createContactManager(const char *name, Domain *domain)
Definition: classfactory.C:385
dofType
Dof Type, determines the type of DOF created.
Definition: doftype.h:48
ClassFactory()
Creates empty factory.
Definition: classfactory.C:96
Represents init module - a base class for all init modules.
Definition: initmodule.h:61
bool registerEnrichmentDomain(const char *name, EnrichmentDomain *(*creator)())
Definition: classfactory.C:316
Updates the geometry of evolving XFEM interfaces.
FailureCriteriaStatus * createFailureCriteriaStatus(const char *name, int num, FailureCriteria *critManager)
Definition: classfactory.C:374
Abstract base class for all finite elements.
Definition: element.h:145
std::map< std::string, BasicGeometry *(*)() > geometryList
Associative container containing geometry creators.
Definition: classfactory.h:261
DofManager * createDofManager(const char *name, int num, Domain *domain)
Creates new instance of Dof manager corresponding to given keyword.
Definition: classfactory.C:169
The class representing the general material model mapping algorithm.
FailureCriteria * createFailureCriteria(const char *name, int num, FractureManager *fracManager)
Definition: classfactory.C:364
Base class for dof managers.
Definition: dofmanager.h:113
CrossSection * createCrossSection(const char *name, int num, Domain *domain)
Creates new instance of cross section corresponding to given keyword.
Definition: classfactory.C:189
This class manages the fracture mechanics part.
std::map< std::string, EnrichmentFunction *(*)(int, Domain *) > enrichFuncList
Associative container containing enrichment function creators.
Definition: classfactory.h:259
std::map< std::string, DofManager *(*)(int, Domain *) > dofmanList
Associative container containing dofmanager creators with dofmanager name as key. ...
Definition: classfactory.h:210
std::map< MaterialMappingAlgorithmType, MaterialMappingAlgorithm *(*)() > materialMappingList
Associative container containing material mapping algorithm creators.
Definition: classfactory.h:249
GeneralBoundaryCondition * createBoundaryCondition(const char *name, int num, Domain *domain)
Creates new instance of boundary condition corresponding to given keyword.
Definition: classfactory.C:179
EnrichmentFunction * createEnrichmentFunction(const char *name, int num, Domain *domain)
Definition: classfactory.C:301
EnrichmentFront * createEnrichmentFront(const char *name)
Definition: classfactory.C:321
bool cf_store(T &list, const char *name, C &creator)
Definition: classfactory.C:89
bool registerTopologyDescription(const char *name, TopologyDescription *(*creator)(Domain *))
Registers a new topology description in the class factory.
Definition: classfactory.C:274
Represents export output module - a base class for all output modules.
Definition: exportmodule.h:71
MaterialMappingAlgorithm * createMaterialMappingAlgorithm(MaterialMappingAlgorithmType name)
Definition: classfactory.C:431
Abstract representation of Geometry.
Definition: geometry.h:81
std::map< std::string, EngngModel *(*)(int, EngngModel *) > engngList
Associative container containing engng model creators with engng model name as key.
Definition: classfactory.h:218
bool registerEnrichmentItem(const char *name, EnrichmentItem *(*creator)(int, XfemManager *, Domain *))
Definition: classfactory.C:286
bool registerFunction(const char *name, Function *(*creator)(int, Domain *))
Registers a new load time function in the class factory.
Definition: classfactory.C:224
ErrorEstimatorType
Determines the type of error estimator.
Abstract class representing global shape function Base class declares abstract interface common to al...
Abstract base class representing integration rule.
std::map< SparseMtrxType, SparseMtrx *(*)() > sparseMtrxList
Associative container containing sparse matrix creators.
Definition: classfactory.h:237
std::map< GenEigvalSolverType, SparseGeneralEigenValueSystemNM *(*)(Domain *, EngngModel *) > generalizedEigenValueSolverList
Associative container containing sparse generalized eigenvalue creators.
Definition: classfactory.h:247
Base abstract class representing cross section in finite element mesh.
Definition: crosssection.h:107
InitialCondition * createInitialCondition(const char *name, int num, Domain *d)
Creates new instance of Initial Condition corresponding to given type.
Definition: classfactory.C:140
bool registerBoundaryCondition(const char *name, GeneralBoundaryCondition *(*creator)(int, Domain *))
Registers a new boundary condition in the class factory.
Definition: classfactory.C:184
bool registerInitModule(const char *name, InitModule *(*creator)(int, EngngModel *))
Registers a new init module in the class factory.
Definition: classfactory.C:264
std::map< std::string, Material *(*)(int, Domain *) > matList
Associative container containing material creators with material name as key.
Definition: classfactory.h:216
IntegrationRule * createIRule(IntegrationRuleType name, int number, Element *e)
Definition: classfactory.C:416
XfemManager * createXfemManager(const char *name, Domain *domain)
Definition: classfactory.C:351
std::map< std::string, ContactManager *(*)(Domain *) > contactManList
Associative container containing ContactManager creators.
Definition: classfactory.h:277
std::map< std::string, GeneralBoundaryCondition *(*)(int, Domain *) > bcList
Associative container containing boundary condition creators with bc name as key. ...
Definition: classfactory.h:212
bool cf_store2(T &list, V name, C &creator)
Definition: classfactory.C:75
bool registerElement(const char *name, Element *(*creator)(int, Domain *))
Registers a new element in the class factory.
Definition: classfactory.C:164
InitModule * createInitModule(const char *name, int num, EngngModel *emodel)
Creates new instance of init module corresponding to given keyword.
Definition: classfactory.C:259
DofIDItem
Type representing particular dof type.
Definition: dofiditem.h:86
bool registerLoadBalancer(const char *name, LoadBalancer *(*creator)(Domain *))
Definition: classfactory.C:462
SparseMtrxType
Enumerative type used to identify the sparse matrix type.
The base class representing the interface to mesh generation package.
Class EnrichmentFront: describes the edge or tip of an XFEM enrichment.
std::map< ErrorEstimatorType, ErrorEstimator *(*)(int, Domain *) > errEstList
Associative container containing error estimator creators.
Definition: classfactory.h:241
std::map< std::string, EnrichmentFront *(*)() > enrichmentFrontList
Associative container containing enrichment front creators.
Definition: classfactory.h:265
std::map< std::string, TopologyDescription *(*)(Domain *) > topologyList
Associative container containing topology description creators.
Definition: classfactory.h:230
bool registerExportModule(const char *name, ExportModule *(*creator)(int, EngngModel *))
Registers a new export module in the class factory.
Definition: classfactory.C:244
Abstract base class for all boundary conditions of problem.
ClassFactory & GiveClassFactory()
This function must be used by all code that run at link time to ensure that the classFactory is const...
Definition: classfactory.C:53
std::string conv2lower(std::string input)
Definition: classfactory.C:61
Abstract base class for all material models.
Definition: material.h:95
MaterialMappingAlgorithmType
Enumerative type used to classify supported MaterialMappingAlgorithms.
This class manages all the contacts in a domain.
ErrorEstimator * createErrorEstimator(ErrorEstimatorType type, int num, Domain *d)
Creates new instance of ErrorEstimator corresponding to given type.
Definition: classfactory.C:130
The base class for all error estimation or error indicator algorithms.
Abstract base class representing general load balancer.
Definition: loadbalancer.h:108
MesherInterface * createMesherInterface(MeshPackageType name, Domain *d)
Definition: classfactory.C:441
bool registerEnrichmentFunction(const char *name, EnrichmentFunction *(*creator)(int, Domain *))
Definition: classfactory.C:306
bool registerDofManager(const char *name, DofManager *(*creator)(int, Domain *))
Registers a new dof manager in the class factory.
Definition: classfactory.C:174
Dof * createDof(dofType type, DofIDItem dofid, DofManager *dman)
Creates new instance of DOF corresponding to given keyword.
Definition: classfactory.C:115
SparseLinearSystemNM * createSparseLinSolver(LinSystSolverType st, Domain *d, EngngModel *m)
Creates new instance of SparseLinearSystemNM corresponding to given type.
Definition: classfactory.C:120
bool registerMaterial(const char *name, Material *(*creator)(int, Domain *))
Registers a new material in the class factory.
Definition: classfactory.C:204
Abstract base class representing a function with vector input and output.
Definition: function.h:88
This class manages the xfem part.
Definition: xfemmanager.h:109
bool registerErrorEstimator(ErrorEstimatorType type, ErrorEstimator *(*creator)(int, Domain *))
Registers a new error estimator.
Definition: classfactory.C:135
bool registerGeneralizedEigenValueSolver(GenEigvalSolverType name, SparseGeneralEigenValueSystemNM *(*creator)(Domain *, EngngModel *))
Definition: classfactory.C:406
std::map< dofType, Dof *(*)(DofIDItem, DofManager *) > dofList
Associative container containing dof creators.
Definition: classfactory.h:239
std::map< std::string, PropagationLaw *(*)() > propagationLawList
Associative container containing propagation law creators.
Definition: classfactory.h:267
NucleationCriterion * createNucleationCriterion(const char *name, Domain *domain)
Definition: classfactory.C:291
std::map< MeshPackageType, MesherInterface *(*)(Domain *) > mesherInterfaceList
Associative container containing mesher interface creators.
Definition: classfactory.h:251
bool registerContactManager(const char *name, ContactManager *(*creator)(Domain *))
Definition: classfactory.C:390
bool registerNonlocalBarrier(const char *name, NonlocalBarrier *(*creator)(int, Domain *))
Registers a new nonlocal barrier in the class factory.
Definition: classfactory.C:234
Abstract class for topology description.
std::map< std::string, EnrichmentDomain *(*)() > enrichmentDomainList
Associative container containing enrichment-domain creators.
Definition: classfactory.h:263
ClassFactory & classFactory
Definition: classfactory.C:59
LoadBalancerMonitor * createLoadBalancerMonitor(const char *name, EngngModel *e)
Definition: classfactory.C:447
This class manages a particular contact definition.
bool registerContactDefinition(const char *name, ContactDefinition *(*creator)(ContactManager *))
Definition: classfactory.C:401
bool registerMesherInterface(MeshPackageType name, MesherInterface *(*creator)(Domain *))
Definition: classfactory.C:436
bool registerPropagationLaw(const char *name, PropagationLaw *(*creator)())
Definition: classfactory.C:336
std::map< std::string, EnrichmentItem *(*)(int, XfemManager *, Domain *) > enrichItemList
Associative container containing enrichment item creators.
Definition: classfactory.h:255
MeshPackageType
Enumerative type used to classify supported mesh packages.
IntegrationRuleType
SparseGeneralEigenValueSystemNM * createGeneralizedEigenValueSolver(GenEigvalSolverType name, Domain *d, EngngModel *m)
Definition: classfactory.C:411
Abstract base class representing the "problem" under consideration.
Definition: engngm.h:181
bool registerFailureCriteriaStatus(const char *name, FailureCriteriaStatus *(*creator)(int, FailureCriteria *))
Definition: classfactory.C:379
std::map< std::string, InitModule *(*)(int, EngngModel *) > initList
Associative container containing init module creators.
Definition: classfactory.h:228
PropagationLaw * createPropagationLaw(const char *name)
Definition: classfactory.C:331
bool registerGeometry(const char *name, BasicGeometry *(*creator)())
Definition: classfactory.C:346
Class Factory allows to register terminal oofem classes, based on their membership (classes represent...
Definition: classfactory.h:204
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing Lobatto-quadrature integration rule.
Definition: lobattoir.h:48
Abstract class Dof represents Degree Of Freedom in finite element mesh.
Definition: dof.h:93
std::map< std::string, FailureCriteria *(*)(int, FractureManager *) > failureCriteriaList
Associative container containing failure criteria creators.
Definition: classfactory.h:273
The base class for all recovery models, which perform nodal averaging or projection processes for int...
std::map< std::string, LoadBalancerMonitor *(*)(EngngModel *) > loadMonitorList
Associative container containing load balancer monitor creators.
Definition: classfactory.h:235
Element * createElement(const char *name, int num, Domain *domain)
Creates new instance of element corresponding to given keyword.
Definition: classfactory.C:159
This base class is an abstraction for all numerical methods solving sparse linear system of equations...
std::map< std::string, Function *(*)(int, Domain *) > funcList
Associative container containing load time function creators with function name as key...
Definition: classfactory.h:220
EnrichmentDomain * createEnrichmentDomain(const char *name)
Definition: classfactory.C:311
std::map< std::string, SparseNonLinearSystemNM *(*)(Domain *, EngngModel *) > nonlinList
Associative container containing nonlinear solver creators.
Definition: classfactory.h:226
std::map< NodalRecoveryModel::NodalRecoveryModelType, NodalRecoveryModel *(*)(Domain *) > nodalRecoveryModelList
Associative container containing nodal recovery model creators.
Definition: classfactory.h:245
bool registerSparseMtrx(SparseMtrxType type, SparseMtrx *(*creator)())
Registers a sparse matrix type.
Definition: classfactory.C:110
This base class is an abstraction for all numerical methods solving sparse nonlinear system of equati...
bool registerMaterialMappingAlgorithm(MaterialMappingAlgorithmType name, MaterialMappingAlgorithm *(*creator)())
Definition: classfactory.C:426
SparseNonLinearSystemNM * createNonLinearSolver(const char *name, Domain *domain, EngngModel *emodel)
Creates new instance of nonlinear solver corresponding to given keyword.
Definition: classfactory.C:249
Abstract base class representing general load balancer monitor.
Definition: loadbalancer.h:68
Class representing Gaussian-quadrature integration rule.
std::map< std::string, XfemManager *(*)(Domain *) > xManList
Associative container containing XfemManager creators.
Definition: classfactory.h:269
EngngModel * createEngngModel(const char *name, int num, EngngModel *master)
Creates new instance of engng model corresponding to given keyword.
Definition: classfactory.C:209

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:27 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011