36#ifndef IMMERSEDBOUNDARYSIMULATIONMODIFIER_HPP_
37#define IMMERSEDBOUNDARYSIMULATIONMODIFIER_HPP_
40#include "AbstractCellBasedSimulationModifier.hpp"
41#include "ObsoleteBoxCollection.hpp"
45#include "AbstractImmersedBoundaryForce.hpp"
46#include "ImmersedBoundaryCellPopulation.hpp"
47#include "ImmersedBoundaryMesh.hpp"
48#include "ImmersedBoundaryArray.hpp"
49#include "ImmersedBoundary2dArrays.hpp"
50#include "ImmersedBoundaryFftInterface.hpp"
51#include "UniformGridRandomFieldGenerator.hpp"
55#include <boost/serialization/base_object.hpp>
80 template<
class Archive>
81 void serialize(Archive & archive,
const unsigned int version)
83 archive & boost::serialization::base_object<AbstractCellBasedSimulationModifier<DIM,DIM> >(*this);
139 std::complex<double>
mI;
145 std::unique_ptr<ImmersedBoundary2dArrays<DIM>>
mpArrays;
214 double Delta1D(
double dist,
double spacing);
222 void Upwind2d(
const multi_array<double, 3>& rInput, multi_array<double, 3>& rOutput);
gcov doesn't like this file...
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
std::unique_ptr< ImmersedBoundaryFftInterface< DIM > > mpFftInterface
void CalculateSourceGradients(const multi_array< double, 3 > &rRhs, multi_array< double, 3 > &rGradients)
void PropagateFluidSourcesToGrid()
unsigned mNodeNeighbourUpdateFrequency
void ClearForcesAndSources()
void Upwind2d(const multi_array< double, 3 > &rInput, multi_array< double, 3 > &rOutput)
void SetNoiseStrength(double noiseStrength)
double Delta1D(double dist, double spacing)
void SetupConstantMemberVariables(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
double GetNoiseLengthScale() const
ImmersedBoundarySimulationModifier()
void SetReynoldsNumber(double reynoldsNumber)
friend class TestImmersedBoundarySimulationModifier
void serialize(Archive &archive, const unsigned int version)
void AddImmersedBoundaryForce(boost::shared_ptr< AbstractImmersedBoundaryForce< DIM > > pForce)
void PropagateForcesToFluidGrid()
std::vector< std::pair< Node< DIM > *, Node< DIM > * > > mNodePairs
virtual void UpdateAtEndOfTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void SetNodeNeighbourUpdateFrequency(unsigned newFrequency)
void OutputSimulationModifierParameters(out_stream &rParamsFile)
void SetZeroFieldSums(bool zeroFieldSums)
std::map< unsigned, std::set< unsigned > > mNodeNeighbours
std::vector< boost::shared_ptr< AbstractImmersedBoundaryForce< DIM > > > mForceCollection
std::complex< double > mI
std::unique_ptr< ObsoleteBoxCollection< DIM > > mpBoxCollection
bool mAdditiveNormalNoise
std::unique_ptr< ImmersedBoundary2dArrays< DIM > > mpArrays
std::unique_ptr< UniformGridRandomFieldGenerator< DIM > > mpRandomField
ImmersedBoundaryMesh< DIM, DIM > * mpMesh
ImmersedBoundaryCellPopulation< DIM > * mpCellPopulation
void AddImmersedBoundaryForceContributions()
void SetNoiseLengthScale(double noiseLengthScale)
virtual ~ImmersedBoundarySimulationModifier()=default
void SolveNavierStokesSpectral()
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
void RecalculateAverageNodeSpacings()
void UpdateFluidVelocityGrids(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
bool GetZeroFieldSums() const
void AddNormalNoise() const
friend class boost::serialization::access
unsigned GetNodeNeighbourUpdateFrequency()
double GetReynoldsNumber()
void ZeroFieldSums(multi_array< double, 3 > &rField)
double GetNoiseStrength() const
bool GetAdditiveNormalNoise() const
unsigned GetNoiseSkip() const
void SetNoiseSkip(unsigned noiseSkip)
void SetAdditiveNormalNoise(bool additiveNormalNoise)