SPH
Factory.h
Go to the documentation of this file.
1 #pragma once
2 
7 
9 #include "system/Settings.h"
10 
12 
13 // forward declarations
14 class IEos;
15 class IRheology;
16 class ISolver;
17 class IGravity;
18 class ICollisionHandler;
19 class IOverlapHandler;
20 class IFractureModel;
21 class IDistribution;
22 class IDomain;
23 class ISymmetricFinder;
24 class ITimeStepping;
25 class ITimeStepCriterion;
26 class IBoundaryCondition;
27 class IMaterial;
28 class ILogger;
29 class ILogWriter;
30 class IOutput;
31 class IInput;
32 class IScheduler;
33 class IRng;
34 class IEquationTerm;
35 class IScheduler;
36 class IUvMapping;
37 class Storage;
38 class EquationHolder;
39 enum class FinderFlag;
40 template <Size D>
41 class LutKernel;
42 class GravityLutKernel;
43 
44 
46 namespace Factory {
47 
49 
50 AutoPtr<ILogger> getLogger(const RunSettings& settings);
51 
53 
54 AutoPtr<IOutput> getOutput(const RunSettings& settings);
55 
56 // deduces format from path extension
57 AutoPtr<IInput> getInput(const Path& path);
58 
59 AutoPtr<IRng> getRng(const RunSettings& settings);
60 
61 AutoPtr<ISolver> getSolver(IScheduler& scheduler, const RunSettings& settings);
62 
64  const RunSettings& settings,
66 
68  const RunSettings& settings,
70  const EquationHolder& additionalTerms);
71 
72 template <Size D>
73 LutKernel<D> getKernel(const RunSettings& settings);
74 
76 
78 
80 
82 
84 
86 
88 
90 AutoPtr<IDomain> getDomain(const RunSettings& settings);
91 
92 AutoPtr<IDomain> getDomain(const BodySettings& settings);
93 
95 
97 
99 
101 
103 
105 
107 
109  Function<bool(Float)> progressCallback = nullptr);
110 
111 AutoPtr<IEos> getEos(const BodySettings& settings);
112 
114 
116 
117 } // namespace Factory
118 
119 
NAMESPACE_SPH_BEGIN
Definition: BarnesHut.cpp:13
Generic wrappers of lambdas, functors and other callables.
double Float
Precision used withing the code. Use Float instead of float or double where precision is important.
Definition: Globals.h:13
FinderFlag
#define NAMESPACE_SPH_END
Definition: Object.h:12
Container holding equation terms.
Definition: EquationTerm.h:238
Gravitational kernel approximated by LUT for close particles.
Definition: GravityKernel.h:35
Base object for boundary conditions.
Definition: Boundary.h:29
Abstraction of collision outcome.
Definition: Collision.h:29
Base class for generating vertices with specific distribution.
Definition: Distribution.h:21
Base class for computational domains.
Definition: Domain.h:29
Base class for equations of state.
Definition: Eos.h:16
Represents a term or terms appearing in evolutionary equations.
Definition: EquationTerm.h:22
Interface representing a fragmentation model.
Definition: Damage.h:20
Interface for computing gravitational interactions of particles.
Definition: IGravity.h:14
Interface for loading quantities of SPH particles from a file.
Definition: Output.h:94
Base class for objects logging run statistics.
Definition: LogWriter.h:10
Interface providing generic (text, human readable) output of the program.
Definition: Logger.h:22
Material settings and functions specific for one material.
Definition: IMaterial.h:110
Interface for saving quantities of SPH particles to a file.
Definition: Output.h:76
Handles overlaps of particles.
Definition: Collision.h:54
Base class of rheological models.
Definition: Rheology.h:22
Polymorphic holder allowing to store any RNG (type erasure).
Definition: Rng.h:90
Interface that allows unified implementation of sequential and parallelized versions of algorithms.
Definition: Scheduler.h:27
Base class for all solvers.
Definition: ISolver.h:20
Extension of IBasicFinder, allowing to search only particles with lower rank in smoothing length.
Base class for timestep setters.
Base object providing integration in time for all quantities.
Definition: TimeStepping.h:46
A look-up table approximation of the kernel.
Definition: Kernel.h:51
Object representing a path on a filesystem.
Definition: Path.h:17
static const Settings & getDefaults()
\brief Returns a reference to object containing default values of all settings.
Container storing all quantities used within the simulations.
Definition: Storage.h:230
Generic storage and input/output routines of settings.
Provides a convenient way to construct objects from settings.
Definition: Factory.h:46
AutoPtr< ITimeStepCriterion > getTimeStepCriterion(const RunSettings &settings)
Definition: Factory.cpp:146
AutoPtr< IGravity > getGravity(const RunSettings &settings)
Definition: Factory.cpp:325
AutoPtr< IOutput > getOutput(const RunSettings &settings)
Definition: Factory.cpp:563
AutoPtr< ISolver > getSolver(IScheduler &scheduler, const RunSettings &settings)
Definition: Factory.cpp:278
AutoPtr< IFractureModel > getDamage(const BodySettings &settings)
Definition: Factory.cpp:85
AutoPtr< IMaterial > getMaterial(const BodySettings &settings)
Definition: Factory.cpp:508
AutoPtr< ISymmetricFinder > getFinder(const RunSettings &settings)
Definition: Factory.cpp:156
AutoPtr< ICollisionHandler > getCollisionHandler(const RunSettings &settings)
Definition: Factory.cpp:379
AutoPtr< IUvMapping > getUvMapping(const RunSettings &settings)
Definition: Factory.cpp:211
AutoPtr< IRheology > getRheology(const BodySettings &settings)
Definition: Factory.cpp:69
AutoPtr< IEquationTerm > getArtificialViscosity(const RunSettings &settings)
Definition: Factory.cpp:108
AutoPtr< IOverlapHandler > getOverlapHandler(const RunSettings &settings)
Definition: Factory.cpp:395
AutoPtr< ITimeStepping > getTimeStepping(const RunSettings &settings, const SharedPtr< Storage > &storage)
Definition: Factory.cpp:125
GravityLutKernel getGravityKernel(const RunSettings &settings)
Definition: Factory.cpp:672
AutoPtr< IDistribution > getDistribution(const BodySettings &settings, Function< bool(Float)> progressCallback=nullptr)
Definition: Factory.cpp:228
AutoPtr< ILogWriter > getLogWriter(SharedPtr< ILogger > logger, const RunSettings &settings)
Definition: Factory.cpp:547
AutoPtr< ILogger > getLogger(const RunSettings &settings)
Definition: Factory.cpp:529
AutoPtr< IEos > getEos(const BodySettings &settings)
Definition: Factory.cpp:47
AutoPtr< IDomain > getDomain(const RunSettings &settings)
Definition: Factory.cpp:416
AutoPtr< IRng > getRng(const RunSettings &settings)
Definition: Factory.cpp:621
LutKernel< D > getKernel(const RunSettings &settings)
Definition: Factory.cpp:637
AutoPtr< IBoundaryCondition > getBoundaryConditions(const RunSettings &settings, SharedPtr< IDomain > domain)
Definition: Factory.cpp:460
SharedPtr< IScheduler > getScheduler(const RunSettings &settings=RunSettings::getDefaults())
Definition: Factory.cpp:178
AutoPtr< IInput > getInput(const Path &path)
Definition: Factory.cpp:601