WntConcentration.hpp

00001 /*
00002 
00003 Copyright (C) University of Oxford, 2005-2011
00004 
00005 University of Oxford means the Chancellor, Masters and Scholars of the
00006 University of Oxford, having an administrative office at Wellington
00007 Square, Oxford OX1 2JD, UK.
00008 
00009 This file is part of Chaste.
00010 
00011 Chaste is free software: you can redistribute it and/or modify it
00012 under the terms of the GNU Lesser General Public License as published
00013 by the Free Software Foundation, either version 2.1 of the License, or
00014 (at your option) any later version.
00015 
00016 Chaste is distributed in the hope that it will be useful, but WITHOUT
00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
00019 License for more details. The offer of Chaste under the terms of the
00020 License is subject to the License being interpreted in accordance with
00021 English Law and subject to any action against the University of Oxford
00022 being under the jurisdiction of the English Courts.
00023 
00024 You should have received a copy of the GNU Lesser General Public License
00025 along with Chaste. If not, see <http://www.gnu.org/licenses/>.
00026 
00027 */
00028 #ifndef WNTCONCENTRATION_HPP_
00029 #define WNTCONCENTRATION_HPP_
00030 
00031 #include "ChasteSerialization.hpp"
00032 #include <boost/serialization/base_object.hpp>
00033 
00034 #include <iostream>
00035 
00036 #include "AbstractCellPopulation.hpp"
00037 
00044 typedef enum WntConcentrationType_
00045 {
00046     NONE,
00047     LINEAR,
00048     RADIAL,
00049     EXPONENTIAL
00050 } WntConcentrationType;
00051 
00052 
00056 template<unsigned DIM>
00057 class WntConcentration
00058 {
00059 private:
00060 
00062     static WntConcentration* mpInstance;
00063 
00067     double mCryptLength;
00068 
00072     bool mLengthSet;
00073 
00080     WntConcentrationType mWntType;
00081 
00085     AbstractCellPopulation<DIM>* mpCellPopulation;
00086 
00090     bool mTypeSet;
00091 
00095     double mConstantWntValueForTesting;
00096 
00101     bool mUseConstantWntValueForTesting;
00102 
00112     double mWntConcentrationParameter;
00113 
00119     double mCryptProjectionParameterA;
00120 
00126     double mCryptProjectionParameterB;
00127 
00129     friend class boost::serialization::access;
00136     template<class Archive>
00137     void serialize(Archive & archive, const unsigned int version)
00138     {
00139         archive & mCryptLength;
00140         archive & mLengthSet;
00141         archive & mWntType;
00142         archive & mpCellPopulation;
00143         archive & mTypeSet;
00144         archive & mConstantWntValueForTesting;
00145         archive & mUseConstantWntValueForTesting;
00146         archive & mWntConcentrationParameter;
00147         archive & mCryptProjectionParameterA;
00148         archive & mCryptProjectionParameterB;
00149     }
00150 
00151 protected:
00152 
00156     WntConcentration();
00157 
00158 public:
00159 
00166     static WntConcentration* Instance();
00167 
00171     virtual ~WntConcentration();
00172 
00177     static void Destroy();
00178 
00185     double GetWntLevel(double height);
00186 
00194     double GetWntLevel(CellPtr pCell);
00195 
00201     c_vector<double, DIM> GetWntGradient(c_vector<double, DIM>& rLocation);
00202 
00208     c_vector<double, DIM> GetWntGradient(CellPtr pCell);
00209 
00215     void SetCellPopulation(AbstractCellPopulation<DIM>& rCellPopulation);
00216 
00220     double GetCryptLength();
00221 
00227     void SetCryptLength(double cryptLength);
00228 
00232     WntConcentrationType GetType();
00233 
00239     void SetType(WntConcentrationType type);
00240 
00247     void SetConstantWntValueForTesting(double value);
00248 
00259     bool IsWntSetUp();
00260 
00264     double GetWntConcentrationParameter();
00265 
00271     void SetWntConcentrationParameter(double wntConcentrationParameter);
00272 
00276     double GetCryptProjectionParameterA();
00277 
00281     double GetCryptProjectionParameterB();
00282 
00288     void SetCryptProjectionParameterA(double cryptProjectionParameterA);
00289 
00295     void SetCryptProjectionParameterB(double cryptProjectionParameterB);
00296 };
00297 
00298 #endif /*WNTCONCENTRATION_HPP_*/

Generated on Tue May 31 14:31:41 2011 for Chaste by  doxygen 1.5.5