GCC Code Coverage Report


Directory: ./
File: Solver/cardiacFunction.hpp
Date: 2024-04-14 07:32:34
Exec Total Coverage
Lines: 0 1 0.0%
Branches: 0 0 -%

Line Branch Exec Source
1 // ______ ______ _ _ _____ ______
2 // | ____| ____| | (_)/ ____| | ____|
3 // | |__ | |__ | | _| (___ ___| |__
4 // | __| | __| | | | |\___ \ / __| __|
5 // | | | |____| |____| |____) | (__| |____
6 // |_| |______|______|_|_____/ \___|______|
7 // Finite Elements for Life Sciences and Engineering
8 //
9 // License: LGL2.1 License
10 // FELiScE default license: LICENSE in root folder
11 //
12 // Main authors: A. Collin E. Schenone
13 //
14
15 #ifndef _CARDIACFUNCTION_HPP
16 #define _CARDIACFUNCTION_HPP
17
18 // System includes
19
20 // External includes
21
22 // Project includes
23 #include "Core/felisceParam.hpp"
24 #include "Core/felisceTransient.hpp"
25
26 namespace felisce {
27 class LinearProblem;
28
29 /*!
30 \brief File with CardiacFunction class, AppCurrent and heterogeneous parameters for BidomainProblem
31 */
32 class CardiacFunction {
33 public:
34 CardiacFunction();
35 virtual ~CardiacFunction();
36 virtual void initialize(FelisceTransient::Pointer fstransient);
37 protected:
38 FelisceTransient::Pointer m_fstransient;
39 };
40
41 //A class to impose thorso/lungs/bone conductivity.
42 class ThoraxConductivity:
43 public CardiacFunction {
44 public:
45 ThoraxConductivity();
46 ~ThoraxConductivity() override;
47 double sigmaT(int& label) const ;
48 double operator() (int& label) const;
49 };
50
51 //A class to impose thorso/lungs/bone conductivity.
52 class HeartConductivity:
53 public CardiacFunction {
54 public:
55 HeartConductivity();
56 ~HeartConductivity() override;
57 double sigmaH(int& label) const ;
58 double operator() (int& label) const;
59 };
60
61 //A class to impose a non-pathological applied current to the ellibi-geometry.
62 class AppCurrent:
63 public CardiacFunction {
64 public:
65 AppCurrent();
66 ~AppCurrent() override;
67 virtual double Iapp(double x, double y, double z, double t=0., double dist=0.) const ;
68 virtual double operator() (double x, double y, double z, double t=0., double dist=0.) const;
69 };
70
71 //A class to impose a non-pathological applied current to the zygote-geometry.
72 class zygoteIapp:
73 public AppCurrent {
74 public:
75 zygoteIapp();
76 ~zygoteIapp() override = default;
77 double Iapp(double x, double y, double z, double t, double dist) const override;
78 double operator() (double x, double y, double z, double t,double dist) const override;
79 };
80
81 //A class to impose a non-pathological applied exterior current to the atria.
82 class AppCurrentAtria:
83 public CardiacFunction {
84 public:
85 AppCurrentAtria();
86 ~AppCurrentAtria() override;
87 virtual double IappAtria(double x, double y, double z, double t) const;
88 virtual double operator() (double x, double y, double z, double t) const;
89 };
90
91
92 //A class to impose heterogeneous tau_close for ellibi-geometry.
93 class HeteroTauClose:
94 public CardiacFunction {
95 public:
96 HeteroTauClose();
97 ~HeteroTauClose() override;
98 virtual double TauClose(double x, double y, double z, double dist=0., double t=0.) const;
99 virtual double operator() (double x, double y, double z, double dist=0., double t=0.) const;
100 };
101
102 //A class to simulate infarction.
103 class HeteroTauOut:
104 public CardiacFunction {
105 public:
106 HeteroTauOut();
107 ~HeteroTauOut() override;
108 virtual double TauOut(double x, double y, double z) const;
109 virtual double operator() (double x, double y, double z) const;
110 } ;
111
112 //A class to simulate infarction.
113 class HeteroTauIn:
114 public CardiacFunction {
115 public:
116 HeteroTauIn();
117 ~HeteroTauIn() override;
118 double TauIn(double x, double y, double z) const;
119 double operator() (double x, double y, double z) const;
120 };
121
122 //A class to impose heterogeneous Ito for the Courtemanche-Ramirez-Nattel model.
123 class HeteroCourtModelIto:
124 public CardiacFunction {
125 public:
126 HeteroCourtModelIto();
127 ~HeteroCourtModelIto() override;
128 virtual double CourtCondIto(double x, double y, double z) const;
129 virtual double operator() (double x, double y, double z) const;
130 };
131
132 //A class to impose heterogeneous ICaL for the Courtemanche-Ramirez-Nattel model.
133 class HeteroCourtModelICaL:
134 public CardiacFunction {
135 public:
136 HeteroCourtModelICaL();
137 ~HeteroCourtModelICaL() override;
138 virtual double CourtCondICaL(double x, double y, double z) const;
139 virtual double operator() (double x, double y, double z) const;
140 };
141
142 //A class to impose heterogeneous multiplicative coefficient for the Courtemanche-Ramirez-Nattel model.
143 class HeteroCourtModelMultCoeff:
144 public CardiacFunction {
145 public:
146 HeteroCourtModelMultCoeff();
147 ~HeteroCourtModelMultCoeff() override;
148 virtual double CourtCondMultCoeff(double x, double y, double z, double ref=0.) const;
149 virtual double operator() (double x, double y, double z, double ref=0.) const;
150 };
151
152
153 // Class to impose heterogeneous "s" parameter in FHN model.
154 class HeteroSparFHN:
155 public CardiacFunction {
156 public:
157 HeteroSparFHN();
158 ~HeteroSparFHN() override;
159 virtual double SparFHN(double x, double y, double z) const;
160 virtual double operator() (double x, double y, double z) const;
161 };
162
163 //A class to impose heterogeneous tau_close for ellibi-geometry.
164 class HeteroMVCoeff:
165 public CardiacFunction {
166 public:
167 HeteroMVCoeff();
168 ~HeteroMVCoeff() override;
169 virtual int MVCoeff(double x, double y, double z, double dist, double t=0.) const;
170 virtual int operator() (double x, double y, double z, double dist, double t=0.) const;
171 };
172
173 }
174
175
176 #endif
177