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 #ifndef _REGULARSTIMULUS_HPP_
00031 #define _REGULARSTIMULUS_HPP_
00032
00033 #include "ChasteSerialization.hpp"
00034 #include <boost/serialization/base_object.hpp>
00035
00036 #include "AbstractStimulusFunction.hpp"
00037
00041 class RegularStimulus : public AbstractStimulusFunction
00042 {
00043 private:
00045 friend class boost::serialization::access;
00052 template<class Archive>
00053 void serialize(Archive & archive, const unsigned int version)
00054 {
00055
00056 archive & boost::serialization::base_object<AbstractStimulusFunction>(*this);
00057 archive & mMagnitudeOfStimulus;
00058 archive & mDuration;
00059 archive & mPeriod;
00060 archive & mStartTime;
00061 archive & mStopTime;
00062 }
00063
00064 protected:
00065
00067 double mMagnitudeOfStimulus;
00069 double mDuration;
00071 double mPeriod;
00073 double mStartTime;
00075 double mStopTime;
00076
00077 public:
00087 RegularStimulus(double magnitudeOfStimulus, double duration, double period, double startTime, double stopTime=DBL_MAX);
00088
00095 double GetStimulus(double time);
00096
00100 double GetPeriod();
00101
00105 double GetMagnitude();
00106
00110 double GetDuration();
00111
00115 double GetStartTime();
00116
00122 void SetPeriod(double period);
00123
00129 void SetStartTime(double startTime);
00130
00136 void SetStopTime(double stopTime);
00137 };
00138
00139 #include "SerializationExportWrapper.hpp"
00140
00141 CHASTE_CLASS_EXPORT(RegularStimulus)
00142
00143 namespace boost
00144 {
00145 namespace serialization
00146 {
00151 template<class Archive>
00152 inline void load_construct_data(
00153 Archive & ar, RegularStimulus * t, const unsigned int file_version)
00154 {
00161 ::new(t)RegularStimulus(0.0, 0.0, 0.1, 0.0, 1.0);
00162 }
00163 }
00164 }
00165
00166 #endif //_REGULARSTIMULUS_HPP_