GeneralisedLinearSpringForce.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef GENERALISEDLINEARSPRINGFORCE_HPP_
00037 #define GENERALISEDLINEARSPRINGFORCE_HPP_
00038
00039 #include "AbstractTwoBodyInteractionForce.hpp"
00040
00041 #include "ChasteSerialization.hpp"
00042 #include <boost/serialization/base_object.hpp>
00043
00064 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM=ELEMENT_DIM>
00065 class GeneralisedLinearSpringForce : public AbstractTwoBodyInteractionForce<ELEMENT_DIM, SPACE_DIM>
00066 {
00067 friend class TestForces;
00068
00069 private:
00070
00072 friend class boost::serialization::access;
00079 template<class Archive>
00080 void serialize(Archive & archive, const unsigned int version)
00081 {
00082 archive & boost::serialization::base_object<AbstractTwoBodyInteractionForce<ELEMENT_DIM, SPACE_DIM> >(*this);
00083 archive & mMeinekeSpringStiffness;
00084 archive & mMeinekeDivisionRestingSpringLength;
00085 archive & mMeinekeSpringGrowthDuration;
00086 }
00087
00088 protected:
00089
00097 double mMeinekeSpringStiffness;
00098
00106 double mMeinekeDivisionRestingSpringLength;
00107
00114 double mMeinekeSpringGrowthDuration;
00115
00116 public:
00117
00121 GeneralisedLinearSpringForce();
00122
00126 virtual ~GeneralisedLinearSpringForce();
00127
00141 virtual double VariableSpringConstantMultiplicationFactor(unsigned nodeAGlobalIndex,
00142 unsigned nodeBGlobalIndex,
00143 AbstractCellPopulation<ELEMENT_DIM,SPACE_DIM>& rCellPopulation,
00144 bool isCloserThanRestLength);
00145
00158 c_vector<double, SPACE_DIM> CalculateForceBetweenNodes(unsigned nodeAGlobalIndex,
00159 unsigned nodeBGlobalIndex,
00160 AbstractCellPopulation<ELEMENT_DIM,SPACE_DIM>& rCellPopulation);
00164 double GetMeinekeSpringStiffness();
00165
00169 double GetMeinekeDivisionRestingSpringLength();
00170
00174 double GetMeinekeSpringGrowthDuration();
00175
00181 void SetMeinekeSpringStiffness(double springStiffness);
00182
00188 void SetMeinekeDivisionRestingSpringLength(double divisionRestingSpringLength);
00189
00195 void SetMeinekeSpringGrowthDuration(double springGrowthDuration);
00196
00202 virtual void OutputForceParameters(out_stream& rParamsFile);
00203 };
00204
00205 #include "SerializationExportWrapper.hpp"
00206 EXPORT_TEMPLATE_CLASS_ALL_DIMS(GeneralisedLinearSpringForce)
00207
00208 #endif