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
00065 double mMagnitudeOfStimulus;
00067 double mDuration;
00069 double mPeriod;
00071 double mStartTime;
00073 double mStopTime;
00074
00075 public:
00085 RegularStimulus(double magnitudeOfStimulus, double duration, double period, double startTime, double stopTime=DBL_MAX);
00086
00093 double GetStimulus(double time);
00094
00098 double GetPeriod();
00099
00103 double GetMagnitude();
00104
00108 double GetDuration();
00109
00113 double GetStartTime();
00114
00120 void SetPeriod(double period);
00121
00127 void SetStartTime(double startTime);
00128
00134 void SetStopTime(double stopTime);
00135 };
00136
00137 #include "SerializationExportWrapper.hpp"
00138
00139 CHASTE_CLASS_EXPORT(RegularStimulus)
00140
00141 namespace boost
00142 {
00143 namespace serialization
00144 {
00149 template<class Archive>
00150 inline void load_construct_data(
00151 Archive & ar, RegularStimulus * t, const unsigned int file_version)
00152 {
00159 ::new(t)RegularStimulus(0.0, 0.0, 0.1, 0.0, 1.0);
00160 }
00161 }
00162 }
00163
00164 #endif //_REGULARSTIMULUS_HPP_