OOFEM 3.0
Loading...
Searching...
No Matches
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 - 2025 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// unique_ptrs need the base
42#include "engngm.h"
43#include "masterdof.h"
44#include "slavedof.h"
45#include "simpleslavedof.h"
46#include "activedof.h"
47
48#include "sparsemtrx.h"
51#include "sparselinsystemnm.h"
52#include "mesherinterface.h"
53#include "errorestimator.h"
55#include "function.h"
56#include "material.h"
57#include "crosssection.h"
58#include "nonlocalbarrier.h"
59#include "exportmodule.h"
60#include "initmodule.h"
61#include "loadbalancer.h"
62
64#include "lobattoir.h"
65
66#include "initialcondition.h"
67
68// Experimental stuff
70#include "xfem/xfemmanager.h"
72#include "xfem/enrichmentitem.h"
73#include "xfem/propagationlaw.h"
75#include "xfem/enrichmentitem.h"
76#include "topologydescription.h"
77#include "geometry.h"
78#include "fracturemanager.h"
80#include "feinterpol.h"
81#include "../mpm/mpm.h"
83
84
85namespace oofem {
87{
88 static ClassFactory ans;
89 return ans;
90}
91
93
94std :: string conv2lower(std :: string input)
95{
96 std::transform(input.begin(), input.end(), input.begin(), ::tolower);
97 return input;
98}
99
100// Non-string names (should be changed eventually):
101template< typename C, typename T, typename V, typename ... As> C *cf_create2(const T &list, V name, As ... args)
102{
103 auto creator = list.find(name);
104 return creator != list.end() ? creator->second(args...) : nullptr;
105}
106
107// Helper for storing creators
108template< typename T, typename V, typename C> bool cf_store2(T &list, V name, C &creator)
109{
110 list[ name ] = creator;
111 return true;
112}
113
114// Non string names (should be replaced with eventually)
115template< typename C, typename T, typename V, typename ... As> std::unique_ptr<C> cf_create4(const T &list, V name, As ... args)
116{
117 auto creator = list.find(name);
118 return creator != list.end() ? creator->second(args...) : nullptr;
119}
120
121// Helper for creating objects
122template< typename C, typename T, typename ... As> std::unique_ptr<C> cf_create(const T &list, const char *name, As ... args)
123{
124 auto creator = list.find(conv2lower(name));
125 return creator != list.end() ? creator->second(args...) : nullptr;
126}
127
128// Helper for storing creators
129template< typename T, typename C> bool cf_store(T &list, const char *name, C &creator)
130{
131 list[ conv2lower(name) ] = creator;
132 return true;
133}
134
135
136ClassFactory :: ClassFactory()
137{
138 // Fixed list for DOF types. No new components can register for these since these are part of the internal structure in OOFEM.
139 dofList [ DT_master ] = dofCreator< MasterDof >;
140 dofList [ DT_simpleSlave ] = dofCreator< SimpleSlaveDof >;
141 dofList [ DT_slave ] = dofCreator< SlaveDof >;
142 dofList [ DT_active ] = dofCreator< ActiveDof >;
143}
144
145std::unique_ptr<SparseMtrx> ClassFactory :: createSparseMtrx(SparseMtrxType name)
146{
148}
149
150bool ClassFactory :: registerSparseMtrx( SparseMtrxType name, std::unique_ptr<SparseMtrx> ( *creator )( ) )
151{
152 return cf_store2(sparseMtrxList, name, creator);
153}
154
155Dof *ClassFactory :: createDof(dofType name, DofIDItem dofid, DofManager *dman)
156{
157 return cf_create2<Dof>(dofList, name, dofid, dman);
158}
159
160std::unique_ptr<SparseLinearSystemNM> ClassFactory :: createSparseLinSolver(LinSystSolverType name, Domain *domain, EngngModel *emodel)
161{
162 return cf_create4<SparseLinearSystemNM>(sparseLinSolList, name, domain, emodel);
163}
164
165bool ClassFactory :: registerSparseLinSolver( LinSystSolverType name, std::unique_ptr<SparseLinearSystemNM> ( *creator )( Domain *, EngngModel * ) )
166{
167 return cf_store2(sparseLinSolList, name, creator);
168}
169
170std::unique_ptr<ErrorEstimator> ClassFactory :: createErrorEstimator(ErrorEstimatorType name, int number, Domain *domain)
171{
172 return cf_create4<ErrorEstimator>(errEstList, name, number, domain);
173}
174
175bool ClassFactory :: registerErrorEstimator( ErrorEstimatorType name, std::unique_ptr<ErrorEstimator> ( *creator )( int, Domain * ) )
176{
177 return cf_store2(errEstList, name, creator);
178}
179
180std::unique_ptr<InitialCondition> ClassFactory :: createInitialCondition(const char *name, int number, Domain *domain)
181{
182 if ( conv2lower(name).compare("initialcondition") == 0 ) {
183 return std::make_unique<InitialCondition>(number, domain);
184 }
185 return nullptr;
186}
187
188bool ClassFactory :: registerNodalRecoveryModel( NodalRecoveryModel :: NodalRecoveryModelType name, std::unique_ptr<NodalRecoveryModel> ( *creator )(Domain *) )
189{
190 return cf_store2(nodalRecoveryModelList, name, creator);
191}
192
193std::unique_ptr<NodalRecoveryModel> ClassFactory :: createNodalRecoveryModel(NodalRecoveryModel :: NodalRecoveryModelType name, Domain *domain)
194{
196}
197
198
199std::unique_ptr<Element> ClassFactory :: createElement(const char *name, int number, Domain *domain)
200{
201 return cf_create<Element>(elemList, name,number, domain);
202}
203
204bool ClassFactory :: registerElement( const char *name, std::unique_ptr<Element> ( *creator )( int, Domain * ) )
205{
206 return cf_store(elemList, name, creator);
207}
208
209std::unique_ptr<DofManager> ClassFactory :: createDofManager(const char *name, int number, Domain *domain)
210{
211 return cf_create<DofManager>(dofmanList, name, number, domain);
212}
213
214bool ClassFactory :: registerDofManager( const char *name, std::unique_ptr<DofManager> ( *creator )( int, Domain * ) )
215{
216 return cf_store(dofmanList, name, creator);
217}
218
219std::unique_ptr<GeneralBoundaryCondition> ClassFactory :: createBoundaryCondition(const char *name, int number, Domain *domain)
220{
221 return cf_create<GeneralBoundaryCondition>(bcList, name, number, domain);
222}
223
224bool ClassFactory :: registerBoundaryCondition( const char *name, std::unique_ptr<GeneralBoundaryCondition> ( *creator )( int, Domain * ) )
225{
226 return cf_store(bcList, name, creator);
227}
228
229std::unique_ptr< ContactSurface >ClassFactory::createContactSurface(const char *name, int number, Domain *domain)
230{
231 return cf_create< ContactSurface >(contactSurfaceList, name, number, domain);
232}
233
234
235bool ClassFactory::registerContactSurface(const char *name, std::unique_ptr< ContactSurface >( * creator )(int, Domain *) )
236{
237 return cf_store(contactSurfaceList, name, creator);
238}
239
240
241
242std::unique_ptr<CrossSection> ClassFactory :: createCrossSection(const char *name, int number, Domain *domain)
243{
244 return cf_create<CrossSection>(csList, name, number, domain);
245}
246
247bool ClassFactory :: registerCrossSection( const char *name, std::unique_ptr<CrossSection> ( *creator )( int, Domain * ) )
248{
249 return cf_store(csList, name, creator);
250}
251
252std::unique_ptr<Material> ClassFactory :: createMaterial(const char *name, int number, Domain *domain)
253{
254 return cf_create<Material>(matList, name, number, domain);
255}
256
257bool ClassFactory :: registerMaterial( const char *name, std::unique_ptr<Material> ( *creator )( int, Domain * ) )
258{
259 return cf_store(matList, name, creator);
260}
261
262std::unique_ptr<EngngModel> ClassFactory :: createEngngModel(const char *name, int number, EngngModel *master)
263{
264 return cf_create<EngngModel>(engngList, name, number, master);
265}
266
267bool ClassFactory :: registerEngngModel( const char *name, std::unique_ptr<EngngModel> ( *creator )( int, EngngModel * ) )
268{
269 return cf_store(engngList, name, creator);
270}
271
272std::unique_ptr<Function> ClassFactory :: createFunction(const char *name, int number, Domain *domain)
273{
274 return cf_create<Function>(funcList, name, number, domain);
275}
276
277bool ClassFactory :: registerFunction( const char *name, std::unique_ptr<Function> ( *creator )( int, Domain * ) )
278{
279 return cf_store(funcList, name, creator);
280}
281
282std::unique_ptr<NonlocalBarrier> ClassFactory :: createNonlocalBarrier(const char *name, int number, Domain *domain)
283{
284 return cf_create<NonlocalBarrier>(nlbList, name, number, domain);
285}
286
287bool ClassFactory :: registerNonlocalBarrier( const char *name, std::unique_ptr<NonlocalBarrier> ( *creator )( int, Domain * ) )
288{
289 return cf_store(nlbList, name, creator);
290}
291
292std::unique_ptr<ExportModule> ClassFactory :: createExportModule(const char *name, int number, EngngModel *emodel)
293{
294 return cf_create<ExportModule>(exportList, name, number, emodel);
295}
296
297bool ClassFactory :: registerExportModule( const char *name, std::unique_ptr<ExportModule> ( *creator )( int, EngngModel * ) )
298{
299 return cf_store(exportList, name, creator);
300}
301
302std::unique_ptr<Monitor> ClassFactory :: createMonitor(const char *name, int number)
303{
304 return cf_create<Monitor>(monitorList, name, number);
305}
306
307bool ClassFactory :: registerMonitor( const char *name, std::unique_ptr<Monitor> ( *creator )( int ) )
308{
309 return cf_store(monitorList, name, creator);
310}
311
312std::unique_ptr<SparseNonLinearSystemNM>ClassFactory :: createNonLinearSolver(const char *name, Domain *domain, EngngModel *emodel)
313{
314 return cf_create<SparseNonLinearSystemNM>(nonlinList, name, domain, emodel);
315}
316
317bool ClassFactory :: registerSparseNonLinearSystemNM(const char *name, std::unique_ptr<SparseNonLinearSystemNM> ( *creator )( Domain *, EngngModel * ) )
318{
319 return cf_store(nonlinList, name, creator);
320}
321
322std::unique_ptr<InitModule> ClassFactory :: createInitModule(const char *name, int number, EngngModel *emodel)
323{
324 return cf_create<InitModule>(initList, name, number, emodel);
325}
326
327bool ClassFactory :: registerInitModule(const char *name, std::unique_ptr<InitModule> ( *creator )( int, EngngModel * ) )
328{
329 return cf_store(initList, name, creator);
330}
331
332std::unique_ptr<TopologyDescription> ClassFactory :: createTopology(const char *name, Domain *domain)
333{
334 return cf_create<TopologyDescription>(topologyList, name, domain);
335}
336
337bool ClassFactory :: registerTopologyDescription(const char *name, std::unique_ptr<TopologyDescription> ( *creator )( Domain * ) )
338{
339 return cf_store(topologyList, name, creator);
340}
341
342
343// XFEM:
344std::unique_ptr<EnrichmentItem> ClassFactory :: createEnrichmentItem(const char *name, int number, XfemManager *xm, Domain *domain)
345{
346 return cf_create<EnrichmentItem>(enrichItemList, name, number, xm, domain);
347}
348
349bool ClassFactory :: registerEnrichmentItem(const char *name, std::unique_ptr<EnrichmentItem> ( *creator )( int, XfemManager *, Domain * ) )
350{
351 return cf_store(enrichItemList, name, creator);
352}
353
354std::unique_ptr<NucleationCriterion> ClassFactory :: createNucleationCriterion(const char *name, Domain *domain)
355{
357}
358
359bool ClassFactory :: registerNucleationCriterion(const char *name, std::unique_ptr<NucleationCriterion> ( *creator )( Domain * ) )
360{
361 return cf_store(nucleationCritList, name, creator);
362}
363
364std::unique_ptr<EnrichmentFunction> ClassFactory :: createEnrichmentFunction(const char *name, int number, Domain *domain)
365{
366 return cf_create<EnrichmentFunction>(enrichFuncList, name, number, domain);
367}
368
369bool ClassFactory :: registerEnrichmentFunction(const char *name, std::unique_ptr<EnrichmentFunction> ( *creator )( int, Domain * ) )
370{
371 return cf_store(enrichFuncList, name, creator);
372}
373
374#if 0
375std::unique_ptr<EnrichmentDomain> ClassFactory :: createEnrichmentDomain(const char *name)
376{
377 return cf_create<EnrichmentDomain>(enrichmentDomainList, name);
378}
379
380bool ClassFactory :: registerEnrichmentDomain(const char *name, std::unique_ptr<EnrichmentDomain> ( *creator )( ) )
381{
382 return cf_store(enrichmentDomainList, name, creator);
383}
384#endif
385
386std::unique_ptr<EnrichmentFront> ClassFactory :: createEnrichmentFront(const char *name)
387{
389}
390
391bool ClassFactory :: registerEnrichmentFront(const char *name, std::unique_ptr<EnrichmentFront> ( *creator )( ) )
392{
393 return cf_store(enrichmentFrontList, name, creator);
394}
395
396std::unique_ptr<PropagationLaw> ClassFactory :: createPropagationLaw(const char *name)
397{
399}
400
401bool ClassFactory :: registerPropagationLaw( const char *name, std::unique_ptr<PropagationLaw> ( *creator )( ) )
402{
403 return cf_store(propagationLawList, name, creator);
404}
405
406std::unique_ptr<BasicGeometry> ClassFactory :: createGeometry(const char *name)
407{
409}
410
411bool ClassFactory :: registerGeometry(const char *name, std::unique_ptr<BasicGeometry> ( *creator )( ) )
412{
413 return cf_store(geometryList, name, creator);
414}
415
416std::unique_ptr<XfemManager> ClassFactory :: createXfemManager(const char *name, Domain *domain)
417{
418 return cf_create<XfemManager>(xManList, name, domain);
419}
420
421bool ClassFactory :: registerXfemManager(const char *name, std::unique_ptr<XfemManager> ( *creator )( Domain * ) )
422{
423 return cf_store(xManList, name, creator);
424}
425
426
427// Failure module:
428
429std::unique_ptr<FailureCriteria> ClassFactory :: createFailureCriteria(const char *name, int number, FractureManager *fracManager)
430{
431 return cf_create<FailureCriteria>(failureCriteriaList, name, number, fracManager);
432}
433
434bool ClassFactory :: registerFailureCriteria( const char *name, std::unique_ptr<FailureCriteria> ( *creator )( int, FractureManager * ) )
435{
436 return cf_store(failureCriteriaList, name, creator);
437}
438
439std::unique_ptr<FailureCriteriaStatus> ClassFactory :: createFailureCriteriaStatus(const char *name, int number, FailureCriteria *fc)
440{
442}
443
444bool ClassFactory :: registerFailureCriteriaStatus(const char *name, std::unique_ptr<FailureCriteriaStatus> ( *creator )( int, FailureCriteria * ) )
445{
446 return cf_store(failureCriteriaStatusList, name, creator);
447}
448
449
450
451std::unique_ptr<SparseGeneralEigenValueSystemNM> ClassFactory :: createGeneralizedEigenValueSolver(GenEigvalSolverType name, Domain *domain, EngngModel *emodel)
452{
454}
455
456bool ClassFactory :: registerGeneralizedEigenValueSolver( GenEigvalSolverType name, std::unique_ptr<SparseGeneralEigenValueSystemNM> ( *creator )(Domain *, EngngModel *) )
457{
458 return cf_store2(generalizedEigenValueSolverList, name, creator);
459}
460
461std::unique_ptr<IntegrationRule> ClassFactory :: createIRule(IntegrationRuleType type, int number, Element *e)
462{
463 if ( type == IRT_Gauss ) {
464 return std::make_unique<GaussIntegrationRule>(number, e);
465 } else if ( type == IRT_Lobatto ) {
466 return std::make_unique<LobattoIntegrationRule>(number, e);
467 }
468 return nullptr;
469}
470
471bool ClassFactory :: registerMaterialMappingAlgorithm( MaterialMappingAlgorithmType name, std::unique_ptr<MaterialMappingAlgorithm> ( *creator )( ) )
472{
473 return cf_store2(materialMappingList, name, creator);
474}
475
476std::unique_ptr<MaterialMappingAlgorithm> ClassFactory :: createMaterialMappingAlgorithm(MaterialMappingAlgorithmType name)
477{
479}
480
481bool ClassFactory :: registerMesherInterface( MeshPackageType name, std::unique_ptr<MesherInterface> ( *creator )( Domain * ) )
482{
483 return cf_store2(mesherInterfaceList, name, creator);
484}
485
486std::unique_ptr<MesherInterface> ClassFactory :: createMesherInterface(MeshPackageType name, Domain *domain)
487{
489}
490
491
492std::unique_ptr<LoadBalancerMonitor> ClassFactory :: createLoadBalancerMonitor(const char *name, EngngModel *emodel)
493{
495}
496
497bool ClassFactory :: registerLoadBalancerMonitor(const char *name, std::unique_ptr<LoadBalancerMonitor> ( *creator )( EngngModel * ) )
498{
499 return cf_store(loadMonitorList, name, creator);
500}
501
502std::unique_ptr<LoadBalancer> ClassFactory :: createLoadBalancer(const char *name, Domain *domain)
503{
504 return cf_create<LoadBalancer>(loadBalancerList, name, domain);
505}
506
507bool ClassFactory :: registerLoadBalancer(const char *name, std::unique_ptr<LoadBalancer> ( *creator )( Domain * ) )
508{
509 return cf_store(loadBalancerList, name, creator);
510}
511
512
513std::unique_ptr<TimeStepReductionStrategy> ClassFactory :: createTimeStepReductionStrategy(const char *name, int number)
514{
516}
517
518bool ClassFactory :: registerTimeStepReductionStrategy(const char *name, std::unique_ptr<TimeStepReductionStrategy> ( *creator )(int ) )
519{
520 return cf_store(timeStepReductionStrategyList, name,creator);
521}
522
523
524
525std::unique_ptr<Term> ClassFactory :: createTerm(const char *name)
526{
527 return cf_create<Term>(termList, name);
528
529}
530
531bool ClassFactory :: registerTerm(const char *name, std::unique_ptr<Term> ( *creator )() )
532{
533 return cf_store(termList, name, creator);
534}
535
536std::unique_ptr<Field> ClassFactory :: createField(const char *name)
537{
538 return cf_create<Field>(fieldList, name);
539}
540
541bool ClassFactory :: registerField(const char *name, std::unique_ptr<Field> ( *creator )() )
542{
543 return cf_store(fieldList, name, creator);
544}
545
546std::map<std::string,std::list<std::string>> ClassFactory :: getRegisteredNames () {
547 std::map<std::string,std::list<std::string>> ret=std::map<std::string,std::list<std::string>>();
548 #define N(a,b) { auto& l=ret[#a]; for(const auto& kv: b) l.push_back(kv.first); };
549 #define E(a,b) { auto& l=ret[#a]; for(const auto& kv: b) l.push_back(std::to_string((int)kv.first)); };
551 E(SparseLinSolver,sparseLinSolList);
555 E(Dof,dofList);
571 N(Geometry,geometryList);
574 N(FailureCrititeriaStatus,failureCriteriaStatusList);
576 E(GeneratlizedEigenValueSolver,generalizedEigenValueSolverList);
581 N(Term,termList);
583 #undef E
584 #undef N
585 return ret;
586}
587
588
589} // End namespace oofem
#define N(a, b)
#define E(a, b)
std ::map< std ::string, std::unique_ptr< EngngModel >(*)(int, EngngModel *) > engngList
Associative container containing engng model creators with engng model name as key.
std ::map< ErrorEstimatorType, std::unique_ptr< ErrorEstimator >(*)(int, Domain *) > errEstList
Associative container containing error estimator creators.
std ::map< NodalRecoveryModel ::NodalRecoveryModelType, std::unique_ptr< NodalRecoveryModel >(*)(Domain *) > nodalRecoveryModelList
Associative container containing nodal recovery model creators.
std ::map< GenEigvalSolverType, std::unique_ptr< SparseGeneralEigenValueSystemNM >(*)(Domain *, EngngModel *) > generalizedEigenValueSolverList
Associative container containing sparse generalized eigenvalue creators.
std ::map< dofType, Dof *(*)(DofIDItem, DofManager *) > dofList
Associative container containing dof creators.
std ::map< std ::string, std::unique_ptr< Function >(*)(int, Domain *) > funcList
Associative container containing load time function creators with function name as key.
std ::map< std ::string, std::unique_ptr< LoadBalancerMonitor >(*)(EngngModel *) > loadMonitorList
Associative container containing load balancer monitor creators.
bool registerContactSurface(const char *name, std::unique_ptr< ContactSurface >(*creator)(int, Domain *))
std ::map< LinSystSolverType, std::unique_ptr< SparseLinearSystemNM >(*)(Domain *, EngngModel *) > sparseLinSolList
Associative container containing sparse linear solver creators.
std ::map< MeshPackageType, std::unique_ptr< MesherInterface >(*)(Domain *) > mesherInterfaceList
Associative container containing mesher interface creators.
std ::map< std ::string, std::unique_ptr< XfemManager >(*)(Domain *) > xManList
Associative container containing XfemManager creators.
std::unique_ptr< ContactSurface > createContactSurface(const char *name, int num, Domain *domain)
std ::map< std ::string, std::unique_ptr< Term >(*)() > termList
MPM stuff.
std ::map< std ::string, std::unique_ptr< NonlocalBarrier >(*)(int, Domain *) > nlbList
Associative container containing nonlocal barriers creators with barrier name as key.
std ::map< std ::string, std::unique_ptr< SparseNonLinearSystemNM >(*)(Domain *, EngngModel *) > nonlinList
Associative container containing nonlinear solver creators.
std ::map< std ::string, std::unique_ptr< TopologyDescription >(*)(Domain *) > topologyList
Associative container containing topology description creators.
std ::map< std ::string, std::unique_ptr< LoadBalancer >(*)(Domain *) > loadBalancerList
Associative container containing load balancer creators.
std ::map< std ::string, std::unique_ptr< DofManager >(*)(int, Domain *) > dofmanList
Associative container containing dofmanager creators with dofmanager name as key.
std::map< std::string, std::unique_ptr< ContactSurface >(*)(int, Domain *) > contactSurfaceList
Associative container containing contact surface creators with name as key.
std ::map< std ::string, std::unique_ptr< BasicGeometry >(*)() > geometryList
Associative container containing geometry creators.
std ::map< std ::string, std::unique_ptr< CrossSection >(*)(int, Domain *) > csList
Associative container containing cross section creators with cross section name as key.
std ::map< std ::string, std::unique_ptr< NucleationCriterion >(*)(Domain *) > nucleationCritList
Associative container containing nucleation criterion creators.
std ::map< SparseMtrxType, std::unique_ptr< SparseMtrx >(*)() > sparseMtrxList
Associative container containing sparse matrix creators.
std ::map< std ::string, std::unique_ptr< FailureCriteriaStatus >(*)(int, FailureCriteria *) > failureCriteriaStatusList
std ::map< std ::string, std::unique_ptr< TimeStepReductionStrategy >(*)(int) > timeStepReductionStrategyList
Associative container containing TimeStepReductionStrategy.
std ::map< std ::string, std::unique_ptr< GeneralBoundaryCondition >(*)(int, Domain *) > bcList
Associative container containing boundary condition creators with bc name as key.
std ::map< std ::string, std::unique_ptr< PropagationLaw >(*)() > propagationLawList
Associative container containing propagation law creators.
std ::map< std ::string, std::unique_ptr< EnrichmentItem >(*)(int, XfemManager *, Domain *) > enrichItemList
Associative container containing enrichment item creators.
std ::map< std ::string, std::unique_ptr< ExportModule >(*)(int, EngngModel *) > exportList
Associative container containing export module creators.
std ::map< std ::string, std::unique_ptr< Monitor >(*)(int) > monitorList
Associative container containing monitor creators.
std ::map< std ::string, std::unique_ptr< Field >(*)() > fieldList
Associative container containing Field creators.
std ::map< std ::string, std::unique_ptr< InitModule >(*)(int, EngngModel *) > initList
Associative container containing init module creators.
std ::map< std ::string, std::unique_ptr< EnrichmentFront >(*)() > enrichmentFrontList
Associative container containing enrichment front creators.
std ::map< std ::string, std::unique_ptr< Element >(*)(int, Domain *) > elemList
Associative container containing element creators with element name as key.
std ::map< MaterialMappingAlgorithmType, std::unique_ptr< MaterialMappingAlgorithm >(*)() > materialMappingList
Associative container containing material mapping algorithm creators.
std ::map< std ::string, std::unique_ptr< FailureCriteria >(*)(int, FractureManager *) > failureCriteriaList
Associative container containing failure criteria creators.
std ::map< std ::string, std::unique_ptr< EnrichmentFunction >(*)(int, Domain *) > enrichFuncList
Associative container containing enrichment function creators.
std ::map< std ::string, std::unique_ptr< Material >(*)(int, Domain *) > matList
Associative container containing material creators with material name as key.
Abstract base class for all contact surfaces.
Class representing a weak form expression to be evaluated (integrated). It defines two key methods:
Definition mpm.h:134
std::string conv2lower(std ::string input)
ClassFactory & GiveClassFactory()
C * cf_create2(const T &list, V name, As ... args)
dofType
Dof Type, determines the type of DOF created.
Definition doftype.h:48
std::unique_ptr< C > cf_create4(const T &list, V name, As ... args)
bool cf_store(T &list, const char *name, C &creator)
ClassFactory & classFactory
std::unique_ptr< C > cf_create(const T &list, const char *name, As ... args)
Dof * dofCreator(DofIDItem dofid, DofManager *dman)
bool cf_store2(T &list, V name, C &creator)

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011