45 std::string FentonKarma::className =
 
   47         "FentonKarma", FentonKarma::create, 
"Phenomenological Model.");
 
   50 std::string FentonKarma::lookupIds[] = {
 
   51     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"BR",
 
   53     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"MBR",
 
   55     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"MLR1",
 
   57     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"GP",
 
   59     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"CF1",
 
   61     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"CF2a",
 
   63     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"CF2b",
 
   65     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"CF2c",
 
   67     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"CF3a",
 
   69     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"CF3b",
 
   71     LibUtilities::SessionReader::RegisterEnumValue(
 
   72         "CellModelVariant", 
"FC2002Set1", FentonKarma::eFC2002Set1a),
 
   73     LibUtilities::SessionReader::RegisterEnumValue(
 
   74         "CellModelVariant", 
"FC2002Set1a", FentonKarma::eFC2002Set1a),
 
   75     LibUtilities::SessionReader::RegisterEnumValue(
 
   76         "CellModelVariant", 
"FC2002Set1b", FentonKarma::eFC2002Set1b),
 
   77     LibUtilities::SessionReader::RegisterEnumValue(
 
   78         "CellModelVariant", 
"FC2002Set1c", FentonKarma::eFC2002Set1c),
 
   79     LibUtilities::SessionReader::RegisterEnumValue(
 
   80         "CellModelVariant", 
"FC2002Set1d", FentonKarma::eFC2002Set1d),
 
   81     LibUtilities::SessionReader::RegisterEnumValue(
 
   82         "CellModelVariant", 
"FC2002Set1e", FentonKarma::eFC2002Set1e),
 
   83     LibUtilities::SessionReader::RegisterEnumValue(
 
   84         "CellModelVariant", 
"FC2002Set2", FentonKarma::eFC2002Set2),
 
   85     LibUtilities::SessionReader::RegisterEnumValue(
 
   86         "CellModelVariant", 
"FC2002Set4", FentonKarma::eFC2002Set4a),
 
   87     LibUtilities::SessionReader::RegisterEnumValue(
 
   88         "CellModelVariant", 
"FC2002Set4a", FentonKarma::eFC2002Set4a),
 
   89     LibUtilities::SessionReader::RegisterEnumValue(
 
   90         "CellModelVariant", 
"FC2002Set4b", FentonKarma::eFC2002Set4b),
 
   91     LibUtilities::SessionReader::RegisterEnumValue(
 
   92         "CellModelVariant", 
"FC2002Set4c", FentonKarma::eFC2002Set4c),
 
   93     LibUtilities::SessionReader::RegisterEnumValue(
 
   94         "CellModelVariant", 
"FC2002Set4d", FentonKarma::eFC2002Set4d),
 
   95     LibUtilities::SessionReader::RegisterEnumValue(
 
   96         "CellModelVariant", 
"FC2002Set5", FentonKarma::eFC2002Set5),
 
   97     LibUtilities::SessionReader::RegisterEnumValue(
 
   98         "CellModelVariant", 
"FC2002Set6", FentonKarma::eFC2002Set6),
 
   99     LibUtilities::SessionReader::RegisterEnumValue(
 
  100         "CellModelVariant", 
"FC2002Set7", FentonKarma::eFC2002Set7),
 
  101     LibUtilities::SessionReader::RegisterEnumValue(
 
  102         "CellModelVariant", 
"FC2002Set8", FentonKarma::eFC2002Set8),
 
  103     LibUtilities::SessionReader::RegisterEnumValue(
 
  104         "CellModelVariant", 
"FC2002Set9", FentonKarma::eFC2002Set9),
 
  105     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"Lawson",
 
  106                                                    FentonKarma::eLawson),
 
  107     LibUtilities::SessionReader::RegisterEnumValue(
"CellModelVariant", 
"CAF",
 
  111 std::string FentonKarma::def =
 
  112     LibUtilities::SessionReader::RegisterDefaultSolverInfo(
"CellModelVariant",
 
  643     ASSERTL0(!
isCF3, 
"Cherry-Fenton model 3 not implemented yet.");
 
  657     boost::ignore_unused(time);
 
  658     ASSERTL0(inarray.get() != outarray.get(),
 
  659              "Must have different arrays for input and output.");
 
  684     for (
size_t i = 0; i < 
m_nq; ++i)
 
  691         h1 = (V < 
u_c) ? 0.0 : 1.0;
 
  692         h2 = (V < 
u_v) ? 0.0 : 1.0;
 
  693         h3 = (V < 
u_r) ? 0.0 : 1.0;
 
  698         *w_tau = 1.0 / (alpha + 
beta);
 
  699         *w_new = alpha * (*w_tau);
 
  704         *v_tau = 1.0 / (alpha + 
beta);
 
  705         *v_new = alpha * (*v_tau);
 
  714         J_fi = -(*v) * h1 * (1 - V) * (V - 
u_c) / 
tau_d;
 
  718         J_so = V * (1 - h3) * (1 - 
k2 * (*v)) / 
tau_0 +
 
  722         J_si = -(*w) * (1 + tanh(
k1 * (V - 
u_csi))) / (2.0 * 
tau_si);
 
  725         *u_new = -J_fi - J_so - J_si;
 
  728         ++u, ++v, ++w, ++u_new, ++v_new, ++w_new, ++v_tau, ++w_tau;
 
#define ASSERTL0(condition, msg)
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
std::vector< int > m_gates
Indices of cell model variables which are gates.
size_t m_nq
Number of physical points.
size_t m_nvar
Number of variables in cell model (inc. transmembrane voltage)
Array< OneD, Array< OneD, NekDouble > > m_gates_tau
Storage for gate tau values.
enum Variants model_variant
virtual std::string v_GetCellVarName(size_t idx) override
virtual void v_Update(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const NekDouble time) override
Computes the reaction terms $f(u,v)$ and $g(u,v)$.
virtual ~FentonKarma()
Destructor.
static std::string lookupIds[]
virtual void v_GenerateSummary(SummaryList &s) override
Prints a summary of the model parameters.
virtual void v_SetInitialConditions() override
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
@ beta
Gauss Radau pinned at x=-1,.
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::vector< std::pair< std::string, std::string > > SummaryList
void AddSummaryItem(SummaryList &l, const std::string &name, const std::string &value)
Adds a summary item to the summary info list.
The above copyright notice and this permission notice shall be included.
CellModelFactory & GetCellModelFactory()
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.