PlaneStimulusCellFactory.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 #ifndef PLANESTIMULUSCELLFACTORY_HPP_
00031 #define PLANESTIMULUSCELLFACTORY_HPP_
00032
00033 #include "AbstractCardiacCellFactory.hpp"
00034 #include "LogFile.hpp"
00035
00039 template<class CELL, unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
00040 class PlaneStimulusCellFactory : public AbstractCardiacCellFactory<ELEMENT_DIM,SPACE_DIM>
00041 {
00042 protected:
00044 boost::shared_ptr<SimpleStimulus> mpStimulus;
00045
00046 public:
00052 PlaneStimulusCellFactory(double stimulusMagnitude=-600, double stimulusDuration=0.5)
00053 : AbstractCardiacCellFactory<ELEMENT_DIM,SPACE_DIM>()
00054 {
00055 mpStimulus = boost::shared_ptr<SimpleStimulus>(new SimpleStimulus(stimulusMagnitude, stimulusDuration));
00056 LOG(1, "Defined a PlaneStimulusCellFactory<"<<SPACE_DIM<<"> with SimpleStimulus("<<stimulusMagnitude<<","<< stimulusDuration<< ")\n");
00057 }
00058
00063 AbstractCardiacCell* CreateCardiacCellForTissueNode(unsigned node)
00064 {
00065 double x = this->GetMesh()->GetNode(node)->GetPoint()[0];
00066
00067 if (x*x<=1e-10)
00068 {
00069 return new CELL(this->mpSolver, mpStimulus);
00070 }
00071 else
00072 {
00073 return new CELL(this->mpSolver, this->mpZeroStimulus);
00074 }
00075 }
00076 };
00077
00078
00079 #endif