CryptProjectionForce.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 #ifndef CRYPTPROJECTIONFORCE_HPP_
00030 #define CRYPTPROJECTIONFORCE_HPP_
00031
00032 #include "GeneralisedLinearSpringForce.hpp"
00033
00034 #include "ChasteSerialization.hpp"
00035 #include <boost/serialization/base_object.hpp>
00036
00040 class CryptProjectionForce : public GeneralisedLinearSpringForce<2>
00041 {
00042 friend class TestCryptProjectionForce;
00043
00044 private:
00045
00046 friend class boost::serialization::access;
00047 template<class Archive>
00048 void serialize(Archive & archive, const unsigned int version)
00049 {
00050 archive & boost::serialization::base_object<GeneralisedLinearSpringForce<2> >(*this);
00051 archive & mA;
00052 archive & mB;
00053 archive & mIncludeWntChemotaxis;
00054 archive & mWntChemotaxisStrength;
00055 }
00056
00061 double mA;
00062
00067 double mB;
00068
00072 bool mIncludeWntChemotaxis;
00073
00077 double mWntChemotaxisStrength;
00078
00082 std::map<unsigned, c_vector<double, 3> > mNode3dLocationMap;
00083
00089 void UpdateNode3dLocationMap(AbstractCellPopulation<2>& rCellPopulation);
00090
00102 c_vector<double,2> CalculateForceBetweenNodes(unsigned nodeAGlobalIndex, unsigned nodeBGlobalIndex, AbstractCellPopulation<2>& rCellPopulation);
00103
00104 public:
00105
00109 CryptProjectionForce();
00110
00114 ~CryptProjectionForce();
00115
00119 double GetA() const;
00120
00124 double GetB() const;
00125
00129 double GetWntChemotaxisStrength();
00130
00136 void SetWntChemotaxisStrength(double wntChemotaxisStrength);
00137
00143 void SetWntChemotaxis(bool includeWntChemotaxis);
00144
00154 double CalculateCryptSurfaceHeightAtPoint(const c_vector<double,2>& rNodeLocation);
00155
00164 double CalculateCryptSurfaceDerivativeAtPoint(const c_vector<double,2>& rNodeLocation);
00165
00172 void AddForceContribution(std::vector<c_vector<double,2> >& rForces,
00173 AbstractCellPopulation<2>& rCellPopulation);
00174
00183 void OutputForceParameters(out_stream& rParamsFile);
00184 };
00185
00186
00187 #include "SerializationExportWrapper.hpp"
00188 CHASTE_CLASS_EXPORT(CryptProjectionForce)
00189
00190 #endif