-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainSolver.hpp
More file actions
134 lines (120 loc) · 3.57 KB
/
MainSolver.hpp
File metadata and controls
134 lines (120 loc) · 3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef _MAINSOLVER_HPP
#define _MAINSOLVER_HPP
#include <fstream>
#include <string>
#include "GetPot.hpp"
#include "MitchellSchaefferSolver.hpp"
#include "MonoDomainSolver.hpp"
#include "ProbesObserver.hpp"
#include "vectormatrixdef.hpp"
#include "EvalRestitution.hpp"
class MainSolver
{
public:
MainSolver(const GetPot & dfile);
~MainSolver();
void initialize(const GetPot & dfile);
void reset();
void setSeqObsDir(size_t indSeq);
void setBCL(double &newBCL);
void setPacingTimes(Vector & thePacingTimes);
void setOutoutController(vectorBool & theOutput_ctrl);
void setIonicParam(const double & vcrit, const double & acrit, const double & tau_in, const double & tau_out, const double & tau_open, const double & tau_close);
void set_vcrit(const double & vcrit);
void set_acrit(const double & acrit);
void set_tau_in(const double & tau_in);
void set_tau_out(const double & tau_out);
void set_tau_open(const double & tau_open);
void set_tau_close(const double & tau_close);
void setConductivity(double TheNewConductivity);
void outInfo();
void solve();
int SelftestCode();
inline void setAPDMAX(double & theAPDMAX){APDmax=theAPDMAX;};
private:
void setAndCreateAllOutputDir(std::string theOut_dir);
void setSourcesAndEctoBeats();
void setSourcesForProtocols();
void writeParametersValues();
void writeEctopicBeats();
void prepareForPostProcess();
void finalizePostProcess();
void writeGeoFile();
void writeVarsAtTime(double theTime);
double evalTactiv(double & ctime);
void setBiphasicIappStimulus(double ctime, double tact);
void solveIonicStandard_step1(double tactiv, double time, bool stimulusIsApplied);
void solveIonicStandard_step3(double tactiv, double time, bool stimulusIsApplied);
void prepacing();
void reinitForMultiple();
int check0D(double p_rate=300.0,int nb_of_pacing=2);
MonoDomainSolver conductionSolver;
std::vector<MitchellSchaefferSolver> IonicSolver;
ProbesObserver probes;
EvalRestitution * EvalRes;
double conductivity;
double lambda;
double domain_length;
double init_time;
double end_time;
double APDmax;
double Time_period;
double IappMod;
double t_stim;
bool standardStim;
bool multiple_beats;
unsigned nb_of_beats;
unsigned nb_of_beats_old;
double beats_step;
double minimum_beats_step;
bool basis_stimulus;
Vector ectopic_beats_time;
//for pre-pacing
bool _s1fail;
bool _prepacing;
unsigned _nb_of_prepacing;
double _s1_prepacing;
bool _s12_prepacing;
double _s2_prepacing;
bool _pacingFromFile;
bool _is_output_control;
bool _dump_controller;
bool _evalSelfActiv;
vectorBool output_controller_flags;
short int protocolTest;
bool _biphasic;
double _d1;
double _m2m1;
bool _splittingSolver;
// discretiation
double dt;
// double ionic_dt;
int nsubit_ionic;
size_t npt;
short int verbose;
//postprocessing
bool output;
bool _outputBinary;
bool out_ionic;
bool out_extracell;
bool _out_restitutions;
bool _use_pre_chek_0D;
bool _use_pre_chek_1D;
unsigned out_freq;
std::string output_dir;
// observations
unsigned obs_freq;
std::string obs_dir;
std::string param_dir;
std::string BCL_dir;
Vector ue;
VectorRef Vm;
VectorRef wREF;
double mean;
vectorBool activatedPt;
std::ofstream datVmfile;
std::ofstream datWfile;
std::ofstream datUefile;
std::ofstream datTimeFile;
};
#endif