36#ifndef ABSTRACTNUMERICALMETHOD_HPP_
37#define ABSTRACTNUMERICALMETHOD_HPP_
39#include <boost/shared_ptr.hpp>
42#include "Identifiable.hpp"
44#include "AbstractOffLatticeCellPopulation.hpp"
45#include "AbstractForce.hpp"
46#include "AbstractCellPopulationBoundaryCondition.hpp"
55template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM=ELEMENT_DIM>
58 friend class TestNumericalMethods;
71 template<
class Archive>
72 void serialize(Archive & archive,
const unsigned int version)
88 std::vector<boost::shared_ptr<AbstractCellPopulationBoundaryCondition<ELEMENT_DIM, SPACE_DIM> > >*
mpBoundaryConditions;
#define TEMPLATED_CLASS_IS_ABSTRACT_2_UNSIGNED(T)
AbstractOffLatticeCellPopulation< ELEMENT_DIM, SPACE_DIM > * mpCellPopulation
bool GetUseUpdateNodeLocation()
void SetForceCollection(std::vector< boost::shared_ptr< AbstractForce< ELEMENT_DIM, SPACE_DIM > > > *pForces)
bool HasAdaptiveTimestep()
bool mUseAdaptiveTimestep
std::map< Node< SPACE_DIM > *, c_vector< double, SPACE_DIM > > SaveCurrentNodeLocations()
void SetCellPopulation(AbstractOffLatticeCellPopulation< ELEMENT_DIM, SPACE_DIM > *pPopulation)
void SafeNodePositionUpdate(unsigned nodeIndex, c_vector< double, SPACE_DIM > newPosition)
void ImposeBoundaryConditions(std::map< Node< SPACE_DIM > *, c_vector< double, SPACE_DIM > > &rOldNodeLocations)
bool mGhostNodeForcesEnabled
std::vector< boost::shared_ptr< AbstractCellPopulationBoundaryCondition< ELEMENT_DIM, SPACE_DIM > > > * mpBoundaryConditions
virtual void UpdateAllNodePositions(double dt)=0
void OutputNumericalMethodInfo(out_stream &rParamsFile)
void DetectStepSizeExceptions(unsigned nodeIndex, c_vector< double, SPACE_DIM > &displacement, double dt)
void serialize(Archive &archive, const unsigned int version)
AbstractNumericalMethod()
void SetUseAdaptiveTimestep(bool useAdaptiveTimestep)
void SetBoundaryConditions(std::vector< boost::shared_ptr< AbstractCellPopulationBoundaryCondition< ELEMENT_DIM, SPACE_DIM > > > *pBoundaryConditions)
std::vector< c_vector< double, SPACE_DIM > > ComputeForcesIncludingDamping()
friend class boost::serialization::access
bool mUseUpdateNodeLocation
void SetUseUpdateNodeLocation(bool useUpdateNodeLocation)
std::vector< c_vector< double, SPACE_DIM > > SaveCurrentLocations()
virtual ~AbstractNumericalMethod()
virtual void OutputNumericalMethodParameters(out_stream &rParamsFile)
std::vector< boost::shared_ptr< AbstractForce< ELEMENT_DIM, SPACE_DIM > > > * mpForceCollection