Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F60733994
particles_factory_interface.hh
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, May 2, 06:58
Size
1 KB
Mime Type
text/x-c++
Expires
Sat, May 4, 06:58 (2 d)
Engine
blob
Format
Raw Data
Handle
17355364
Attached To
R9484 sp4e-homework-lars-bertil
particles_factory_interface.hh
View Options
#ifndef __PARTICLES_FACTORY_INTERFACE__HH__
#define __PARTICLES_FACTORY_INTERFACE__HH__
/* -------------------------------------------------------------------------- */
#include "functional"
#include "system_evolution.hh"
/* -------------------------------------------------------------------------- */
//! Abstract factory defining interface
class
ParticlesFactoryInterface
{
// Constructors/Destructors
protected
:
//! Instance constructor (protected)
ParticlesFactoryInterface
()
=
default
;
public
:
virtual
~
ParticlesFactoryInterface
()
=
default
;
// Methods
public
:
//! Create a whole simulation from file
virtual
SystemEvolution
&
createSimulation
(
const
std
::
string
&
fname
,
Real
timestep
)
=
0
;
template
<
typename
Func
>
SystemEvolution
&
createSimulation
(
const
std
::
string
&
fname
,
Real
timestep
,
Func
func
)
{
createComputes
=
[
&
](
Real
timestep
)
{
func
(
*
this
,
timestep
);
};
return
this
->
createSimulation
(
fname
,
timestep
);
}
//! Create a new particle
virtual
std
::
unique_ptr
<
Particle
>
createParticle
()
=
0
;
//! Get singleton instance
static
ParticlesFactoryInterface
&
getInstance
();
//! get reference to the system evolution
SystemEvolution
&
getSystemEvolution
()
{
return
*
system_evolution
;
};
// Members
protected
:
std
::
vector
<
Particle
*>
list_particles
;
std
::
unique_ptr
<
SystemEvolution
>
system_evolution
=
nullptr
;
// Standard pointer because constructor is protected (cannot use make_unique)
static
ParticlesFactoryInterface
*
factory
;
std
::
function
<
void
(
Real
)
>
createComputes
;
};
/* -------------------------------------------------------------------------- */
#endif
//__PARTICLES_FACTORY_INTERFACE__HH__
Event Timeline
Log In to Comment