Alsvinn  0.5.3
The fast FVM simulator with UQ support
Public Member Functions | List of all members
alsfvm::simulator::Simulator Class Reference

The Simulator class contains all the neccesary tools for running the whole simulation. More...

#include <alsfvm/simulator/Simulator.hpp>

Inheritance diagram for alsfvm::simulator::Simulator:
alsfvm::simulator::AbstractSimulator

Public Member Functions

 Simulator (const SimulatorParameters &simulatorParameters, alsfvm::shared_ptr< grid::Grid > &grid, volume::VolumeFactory &volumeFactory, integrator::IntegratorFactory &integratorFactory, boundary::BoundaryFactory &boundaryFactory, numflux::NumericalFluxFactory &numericalFluxFactory, equation::CellComputerFactory &cellComputerFactory, alsfvm::shared_ptr< memory::MemoryFactory > &memoryFactory, real endTime, alsfvm::shared_ptr< DeviceConfiguration > &deviceConfiguration, std::string &equationName, alsfvm::shared_ptr< alsfvm::diffusion::DiffusionOperator > diffusionOperator, const std::string &name)
 Simulator. More...
 
 ~Simulator ()
 
bool atEnd () override
 
void performStep () override
 
void callWriters () override
 
void addWriter (alsfvm::shared_ptr< io::Writer > writer) override
 addWriter adds a writer, this will be called every time callWriter is called More...
 
void addTimestepAdjuster (alsfvm::shared_ptr< integrator::TimestepAdjuster > &adjuster) override
 
real getCurrentTime () const override
 
real getEndTime () const override
 
void setSimulationState (const volume::Volume &conservedVolume)
 
std::string getPlatformName () const
 
std::string getEquationName () const
 
void setInitialValue (alsfvm::shared_ptr< init::InitialData > &initialData)
 
const std::shared_ptr< grid::Grid > & getGrid () const override
 Gets the current grid that is being used. More...
 
std::shared_ptr< grid::Grid > & getGrid () override
 Gets the current grid that is being used. More...
 
void finalize () override
 Finalizes the computation, should be called at the end. More...
 
std::string getName () const
 

Detailed Description

The Simulator class contains all the neccesary tools for running the whole simulation.

How to use:

// save first timestep
simulator.callWriters();
while (!simulator.atEnd()) {
simulator.performStep();
}

Constructor & Destructor Documentation

◆ Simulator()

alsfvm::simulator::Simulator::Simulator ( const SimulatorParameters simulatorParameters,
alsfvm::shared_ptr< grid::Grid > &  grid,
volume::VolumeFactory volumeFactory,
integrator::IntegratorFactory integratorFactory,
boundary::BoundaryFactory boundaryFactory,
numflux::NumericalFluxFactory numericalFluxFactory,
equation::CellComputerFactory cellComputerFactory,
alsfvm::shared_ptr< memory::MemoryFactory > &  memoryFactory,
real  endTime,
alsfvm::shared_ptr< DeviceConfiguration > &  deviceConfiguration,
std::string &  equationName,
alsfvm::shared_ptr< alsfvm::diffusion::DiffusionOperator diffusionOperator,
const std::string &  name 
)

Simulator.

Parameters
simulatorParameters
grid
volumeFactory
integratorFactory
boundaryFactory
numericalFluxFactory
cellComputerFactory
memoryFactory
endTime
deviceConfiguration
equationName
diffusionOperatorthe diffusion operator to use
namethe name of the simulator

◆ ~Simulator()

alsfvm::simulator::Simulator::~Simulator ( )

Member Function Documentation

◆ addTimestepAdjuster()

void alsfvm::simulator::Simulator::addTimestepAdjuster ( alsfvm::shared_ptr< integrator::TimestepAdjuster > &  adjuster)
overridevirtual

Adds a timestep adjuster.

The timestep adjuster is run as

real newTimestep = someInitialValueFromCFL;
for (auto adjuster : timestepAdjusters) {
newTimestep = adjuster(newTimestep);
}

the timestep adjuster is used to save at specific times.

Implements alsfvm::simulator::AbstractSimulator.

◆ addWriter()

void alsfvm::simulator::Simulator::addWriter ( alsfvm::shared_ptr< io::Writer writer)
overridevirtual

addWriter adds a writer, this will be called every time callWriter is called

Parameters
writer

Implements alsfvm::simulator::AbstractSimulator.

◆ atEnd()

bool alsfvm::simulator::Simulator::atEnd ( )
overridevirtual
Returns
true if the simulation is finished, false otherwise.

Implements alsfvm::simulator::AbstractSimulator.

◆ callWriters()

void alsfvm::simulator::Simulator::callWriters ( )
overridevirtual

Calls the writers.

Implements alsfvm::simulator::AbstractSimulator.

◆ finalize()

void alsfvm::simulator::Simulator::finalize ( )
overridevirtual

Finalizes the computation, should be called at the end.

Implements alsfvm::simulator::AbstractSimulator.

◆ getCurrentTime()

real alsfvm::simulator::Simulator::getCurrentTime ( ) const
overridevirtual
Returns
the current simulation time.

Implements alsfvm::simulator::AbstractSimulator.

◆ getEndTime()

real alsfvm::simulator::Simulator::getEndTime ( ) const
overridevirtual
Returns
the end time of the simulation.

Implements alsfvm::simulator::AbstractSimulator.

◆ getEquationName()

std::string alsfvm::simulator::Simulator::getEquationName ( ) const

◆ getGrid() [1/2]

const std::shared_ptr< grid::Grid > & alsfvm::simulator::Simulator::getGrid ( ) const
overridevirtual

Gets the current grid that is being used.

Implements alsfvm::simulator::AbstractSimulator.

◆ getGrid() [2/2]

std::shared_ptr< grid::Grid > & alsfvm::simulator::Simulator::getGrid ( )
overridevirtual

Gets the current grid that is being used.

Implements alsfvm::simulator::AbstractSimulator.

◆ getName()

std::string alsfvm::simulator::Simulator::getName ( ) const

◆ getPlatformName()

std::string alsfvm::simulator::Simulator::getPlatformName ( ) const

◆ performStep()

void alsfvm::simulator::Simulator::performStep ( )
overridevirtual

Performs one timestep

Implements alsfvm::simulator::AbstractSimulator.

◆ setInitialValue()

void alsfvm::simulator::Simulator::setInitialValue ( alsfvm::shared_ptr< init::InitialData > &  initialData)

◆ setSimulationState()

void alsfvm::simulator::Simulator::setSimulationState ( const volume::Volume conservedVolume)

Updates the simulation state.

Parameters
conservedVolumethe conservedVolume to update to
Note
This does not need to be on the same size as the conserved volume, interpolation will be done.

The documentation for this class was generated from the following files: