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 ELEM_DIM, unsigned SPACE_DIM = ELEM_DIM>
00040 class PlaneStimulusCellFactory : public AbstractCardiacCellFactory<ELEM_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<ELEM_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