-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfiguration.h
133 lines (117 loc) · 3.54 KB
/
configuration.h
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
#pragma once
#include <string>
# include <omp.h>
#include <vector>
#include <string>
// Global parameters of simulations -> define iterations and steps
//struct SimulationParameters
//{
// simulation parameters
// double expTime;//
//int microsteps;// 10MHz scanning
//int nTotal ; //10^-2 seconds total
//};
// Classes for objects that store simulation configs: LoggerParameters, ModelParameters, InitialConditions
struct LoggerParameters
{
enum class FilenameTemplate { PrefixName };
FilenameTemplate filenametemplate;
std::string filepath;
std::string name;
};
struct ModelParameters
{
/////
double expTime;
unsigned bindseed;
//Global paramters
double T ; //temperature
double kT;
//Parameters of potential
double G ; // (* kT | Depth of the diffusion potential *)
double Gtot; // (* kT | Depth of the total diffusion+unbinding potential *)
double L ; //(* um | period of the periodic potential *)
double sigma; //(* um | width of the binding well *)
double unbindsigmathreshold;
double MAPKon; //(* binding rate in s-1*)
//Parameters of diffusion
double DMol ; //(* um^2/s | free diffusion coefficient of the protein in water *)
double DBeadL; // (* um^2/s | free diffusion coefficient of 0.5 um bead in water *)
double DBeadR;
double DMT;
double gammaMol; //(* pN s/um | friction drag coefficient for protein *)
double gammaBeadL; //(* pN s/um | friction drag coefficient for 0.5 um bead *)
double gammaBeadR;
double gammaMT; //(* pN s/um | friction drag coefficient for 0.5 um for MT *)
// Parameters of stiffness
double trapstiffL; //(* pN/um | stiffness of the trap *)
double trapstiffR;
double MTstiffL ; //(* pN/um | stiffness of the MT *)
double MTstiffR;
double MTlowstiff;
double MTrelaxedLengthL;
double MTrelaxedLengthR;
double MTstiffWeakSlopeL;
double MTstiffWeakBoundaryL;
double MTstiffParabolicAL;
double MTstiffParabolicBL;
double MTstiffParabolicCL;
double MTstiffStrongBoundaryL;
double MTstiffStrongSlopeL;
double MTstiffStrongIntersectL;
double MTstiffWeakSlopeR;
double MTstiffWeakBoundaryR;
double MTstiffParabolicAR;
double MTstiffParabolicBR;
double MTstiffParabolicCR;
double MTstiffStrongBoundaryR;
double MTstiffStrongSlopeR;
double MTstiffStrongIntersectR;
double MTlength;
double molstiff ; //(*pN / um| stiffness of the NDC80 *)
double feedbackFreq;
double DmblMoveAmplitude;
double prestretchTotalForce;
double movementTotalForce;
};
struct SystemState
{
double xMol;
double xMolY=0.0;
double xMT;
double xBeadl;
double xBeadr;
double xTrapl;
double xTrapr;
double Time=0.0;
double direction = 1.0;
double bindingState = 0.0;
template <typename F>
static void iterateFields(F&& f) {
f(&SystemState::xMol, "xMol");
f(&SystemState::xMolY, "xMolY");
f(&SystemState::xMT, "xMT");
f(&SystemState::xBeadl, "xBeadl");
f(&SystemState::xBeadr, "xBeadr");
f(&SystemState::xTrapl, "xTrapl");
f(&SystemState::xTrapr, "xTrapr");
f(&SystemState::Time, "Time");
f(&SystemState::direction, "direction");
f(&SystemState::bindingState, "bindingState");
}
};
struct InitialConditions
{
SystemState initialState;
double xPed; ////////////// Is it really iC????
//double xTrapl; // Must be negative for prestretch ////////////// Is it really iC????
//double xTrapr; // Must be positive for prestretch ////////////// Is it really iC????
};
// Composition of parameters
struct Configuration
{
LoggerParameters loggerParameters;
ModelParameters modelParameters;
InitialConditions initialConditions;
SystemState currentState;
};