- Author:
- Soroush Safaei <ssaf006@aucklanduni.ac.nz>
- Date:
- 2018-08-05 17:06:12+12:00
- Desc:
- remove
- Permanent Source URI:
- https://models.physiomeproject.org/workspace/3a4/rawfile/4498cddbc93aeaa3ec165de7fb6ff0221958b651/respiratory.cellml
<?xml version='1.0'?>
<model name="respiratory" xmlns="http://www.cellml.org/cellml/1.1#" xmlns:cellml="http://www.cellml.org/cellml/1.1#" xmlns:cmeta="http://www.cellml.org/metadata/1.0#" xmlns:xlink="http://www.w3.org/1999/xlink">
<import xlink:href="Units/Units.cellml">
<units name="mmHg" units_ref="mmHg"/>
<units name="mmHg_per_l" units_ref="mmHg_per_l"/>
<units name="per_s" units_ref="per_s"/>
<units name="l_per_mole" units_ref="l_per_mole"/>
<units name="mM_per_mmHg" units_ref="mM_per_mmHg"/>
<units name="mmHg_per_m" units_ref="mmHg_per_m"/>
<units name="mmHg_per_l" units_ref="mmHg_per_l"/>
<units name="l_per_s" units_ref="l_per_s"/>
<units name="cm3" units_ref="cm3"/>
<units name="l_per_mmHg_per_s" units_ref="l_per_mmHg_per_s"/>
<units name="per_s_per_M" units_ref="per_s_per_M"/>
<units name="mM" units_ref="mM"/>
<units name="mmHg_s_per_l" units_ref="mmHg_s_per_l"/>
</import>
<component name="feedback_function">
<variable cmeta:id="control_parameter_1" name="g_t" public_interface="out" units="per_s"/>
<variable cmeta:id="control_parameter_2" name="K" public_interface="out" units="per_s"/>
<variable cmeta:id="nominal_value_for_gt" initial_value="13.2" name="g_n" units="per_s"/>
<variable cmeta:id="nominal_value_for_K" initial_value="0.5" name="K_n" units="per_s"/>
<variable cmeta:id="case_dependent_scale_factor_1" initial_value="0.0" name="A_1" units="dimensionless"/>
<variable cmeta:id="case_dependent_scale_factor_2" initial_value="0.0" name="B_1" units="dimensionless"/>
<variable cmeta:id="case_dependent_scale_factor_3" initial_value="0.0" name="C_1" units="dimensionless"/>
<variable cmeta:id="case_dependent_scale_factor_4" initial_value="0.0" name="D_1" units="dimensionless"/>
<variable cmeta:id="case_dependent_scale_factor_5" initial_value="0.0" name="A_2" units="dimensionless"/>
<variable cmeta:id="case_dependent_scale_factor_6" initial_value="0.0" name="B_2" units="dimensionless"/>
<variable cmeta:id="case_dependent_scale_factor_7" initial_value="0.0" name="C_2" units="dimensionless"/>
<variable cmeta:id="case_dependent_scale_factor_8" initial_value="0.0" name="D_2" units="dimensionless"/>
<variable cmeta:id="hemoglobin_saturation_function_equilibrium_constant_1" initial_value="10e3" name="K_T" units="l_per_mole"/>
<variable cmeta:id="hemoglobin_saturation_function_equilibrium_constant_2" initial_value="3.6e6" name="K_R" units="l_per_mole"/>
<variable cmeta:id="hemoglobin_saturation_function_equilibrium_constant_3" initial_value="171.2e6" name="L" units="l_per_mole"/>
<variable cmeta:id="o2_solubility_in_plasma" initial_value="1.4e-3" name="sigma" units="mM_per_mmHg"/>
<variable cmeta:id="co2_solubility_in_plasma" initial_value="3.3e-2" name="sigma_c" units="mM_per_mmHg"/>
<variable cmeta:id="o2_partial_pressure_at_capillary_end" initial_value="104" name="p_oe" units="mmHg"/>
<variable cmeta:id="co2_partial_pressure_at_capillary_end" initial_value="40" name="p_ce" units="mmHg"/>
<variable cmeta:id="o2_partial_pressure_ref" initial_value="104" name="p_or" units="mmHg"/>
<variable cmeta:id="co2_partial_pressure_ref" initial_value="40" name="p_cr" units="mmHg"/>
<variable cmeta:id="hemoglobin_saturation_function_end" name="f_p_oe" units="mmHg"/>
<variable cmeta:id="hemoglobin_saturation_function_ref" name="f_p_or" units="mmHg"/>
<variable cmeta:id="o2_level_error" name="Er_o" units="mmHg"/>
<variable cmeta:id="co2_level_error" name="Er_c" units="mmHg"/>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="error_in_level_of_o2">
<eq/>
<ci>Er_o</ci>
<apply>
<minus/>
<ci>f_p_oe</ci>
<ci>f_p_or</ci>
</apply>
</apply>
<apply id="error_in_level_of_co2">
<eq/>
<ci>Er_c</ci>
<apply>
<minus/>
<ci>p_ce</ci>
<ci>p_cr</ci>
</apply>
</apply>
<apply id="saturation_function_of_hemoglobin_at_capillary_end">
<eq/>
<ci>f_p_oe</ci>
<apply>
<divide/>
<apply>
<plus/>
<apply>
<times/>
<ci>L</ci>
<ci>K_T</ci>
<ci>sigma</ci>
<ci>p_oe</ci>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_T</ci>
<ci>sigma</ci>
<ci>p_oe</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">3</cn>
</apply>
</apply>
<apply>
<times/>
<ci>K_R</ci>
<ci>sigma</ci>
<ci>p_oe</ci>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_R</ci>
<ci>sigma</ci>
<ci>p_oe</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">3</cn>
</apply>
</apply>
</apply>
<apply>
<plus/>
<apply>
<times/>
<ci>L</ci>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_T</ci>
<ci>sigma</ci>
<ci>p_oe</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">4</cn>
</apply>
</apply>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_R</ci>
<ci>sigma</ci>
<ci>p_oe</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">4</cn>
</apply>
</apply>
</apply>
</apply>
<apply id="saturation_function_of_hemoglobin_ref">
<eq/>
<ci>f_p_or</ci>
<apply>
<divide/>
<apply>
<plus/>
<apply>
<times/>
<ci>L</ci>
<ci>K_T</ci>
<ci>sigma</ci>
<ci>p_or</ci>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_T</ci>
<ci>sigma</ci>
<ci>p_or</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">3</cn>
</apply>
</apply>
<apply>
<times/>
<ci>K_R</ci>
<ci>sigma</ci>
<ci>p_or</ci>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_R</ci>
<ci>sigma</ci>
<ci>p_or</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">3</cn>
</apply>
</apply>
</apply>
<apply>
<plus/>
<apply>
<times/>
<ci>L</ci>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_T</ci>
<ci>sigma</ci>
<ci>p_or</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">4</cn>
</apply>
</apply>
<apply>
<power/>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<times/>
<ci>K_R</ci>
<ci>sigma</ci>
<ci>p_or</ci>
</apply>
</apply>
<cn cellml:units="dimensionless">4</cn>
</apply>
</apply>
</apply>
</apply>
<apply id="feedback_to_preBotC">
<eq/>
<ci>g_t</ci>
<apply>
<minus/>
<apply>
<plus/>
<apply>
<minus/>
<apply>
<plus/>
<ci>g_n</ci>
<apply>
<times/>
<ci>A_1</ci>
<ci>Er_c</ci>
</apply>
</apply>
<apply>
<times/>
<ci>B_1</ci>
<ci>Er_o</ci>
</apply>
</apply>
<apply>
<times/>
<ci>C_1</ci>
<ci>Er_c</ci>
</apply>
</apply>
<apply>
<times/>
<ci>D_1</ci>
<ci>Er_o</ci>
</apply>
</apply>
</apply>
<apply id="feedback_to_VRG">
<eq/>
<ci>K</ci>
<apply>
<minus/>
<apply>
<plus/>
<apply>
<minus/>
<apply>
<plus/>
<ci>K_n</ci>
<apply>
<times/>
<ci>A_2</ci>
<ci>Er_c</ci>
</apply>
</apply>
<apply>
<times/>
<ci>B_2</ci>
<ci>Er_o</ci>
</apply>
</apply>
<apply>
<times/>
<ci>C_2</ci>
<ci>Er_c</ci>
</apply>
</apply>
<apply>
<times/>
<ci>D_2</ci>
<ci>Er_o</ci>
</apply>
</apply>
</apply>
</math>
</component>
<component name="pre_Botzinger_complex">
<variable cmeta:id="activity_of_preBotC_population" initial_value="0.0" name="A" public_interface="out" units="dimensionless"/>
<variable cmeta:id="inactivation_gating_of_persistent_sodium" initial_value="0.0" name="h_p" public_interface="out" units="dimensionless"/>
<variable cmeta:id="activation_rate_constant" name="alpha" units="per_s"/>
<variable cmeta:id="inactivation_rate_constant" name="beta" units="per_s"/>
<variable cmeta:id="external_drive" name="gamma" units="per_s"/>
<variable cmeta:id="activation_gating_persistent_sodium" name="m_p" units="dimensionless"/>
<variable cmeta:id="parameter_affecting_hp_1" name="alpha_hp" units="dimensionless"/>
<variable cmeta:id="parameter_affecting_hp_2" name="beta_hp" units="dimensionless"/>
<variable cmeta:id="parameter_affecting_mp_1" initial_value="0.367" name="theta_mp" units="dimensionless"/>
<variable cmeta:id="parameter_affecting_mp_2" initial_value="-0.033" name="sigma_mp" units="dimensionless"/>
<variable cmeta:id="parameter_affecting_hp_4" initial_value="0.313" name="theta_hp" units="dimensionless"/>
<variable cmeta:id="parameter_affecting_hp_5" initial_value="0.04" name="sigma_hp" units="dimensionless"/>
<variable cmeta:id="parameter_affecting_hp_3" initial_value="10" name="tau_hp" units="second"/>
<variable cmeta:id="A_activating_rate_constant" initial_value="133.33" name="g_nap" units="per_s"/>
<variable cmeta:id="A_inactivating_rate_constant" initial_value="98" name="g_L" units="per_s"/>
<variable cmeta:id="scaling_parameter" initial_value="0.6667" name="b" units="dimensionless"/>
<variable cmeta:id="muscle_recoil_rate_constant" initial_value="0.212" name="E_L" units="dimensionless"/>
<variable cmeta:id="control_parameter" name="g_t" public_interface="in" units="per_s"/>
<variable cmeta:id="environment_time" name="time" public_interface="in" units="second"/>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="dynamics_of_preBotC_population_activity">
<eq/>
<apply>
<diff/>
<bvar>
<ci>time</ci>
</bvar>
<ci>A</ci>
</apply>
<apply>
<plus/>
<apply>
<minus/>
<apply>
<times/>
<ci>alpha</ci>
<apply>
<minus/>
<cn cellml:units="dimensionless">1</cn>
<ci>A</ci>
</apply>
</apply>
<apply>
<times/>
<ci>beta</ci>
<ci>A</ci>
</apply>
</apply>
<ci>gamma</ci>
</apply>
</apply>
<apply id="dynamics_of_hp">
<eq/>
<apply>
<diff/>
<bvar>
<ci>time</ci>
</bvar>
<ci>h_p</ci>
</apply>
<apply>
<minus/>
<apply>
<times/>
<ci>alpha_hp</ci>
<apply>
<minus/>
<cn cellml:units="dimensionless">1</cn>
<ci>h_p</ci>
</apply>
</apply>
<apply>
<times/>
<ci>beta_hp</ci>
<ci>h_p</ci>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>alpha_hp</ci>
<apply>
<times/>
<apply>
<divide/>
<cn cellml:units="dimensionless">0.5</cn>
<ci>tau_hp</ci>
</apply>
<apply>
<exp/>
<apply>
<divide/>
<apply>
<times/>
<apply>
<minus/>
<cn cellml:units="dimensionless">0.5</cn>
</apply>
<apply>
<minus/>
<ci>A</ci>
<ci>theta_hp</ci>
</apply>
</apply>
<ci>sigma_hp</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>beta_hp</ci>
<apply>
<times/>
<apply>
<divide/>
<cn cellml:units="dimensionless">0.5</cn>
<ci>tau_hp</ci>
</apply>
<apply>
<exp/>
<apply>
<divide/>
<apply>
<times/>
<cn cellml:units="dimensionless">0.5</cn>
<apply>
<minus/>
<ci>A</ci>
<ci>theta_hp</ci>
</apply>
</apply>
<ci>sigma_hp</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>m_p</ci>
<apply>
<divide/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<plus/>
<cn cellml:units="dimensionless">1</cn>
<apply>
<exp/>
<apply>
<divide/>
<apply>
<minus/>
<ci>A</ci>
<ci>theta_mp</ci>
</apply>
<ci>sigma_mp</ci>
</apply>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>alpha</ci>
<apply>
<times/>
<ci>g_nap</ci>
<ci>m_p</ci>
<ci>h_p</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>beta</ci>
<apply>
<plus/>
<ci>g_L</ci>
<ci>g_t</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>gamma</ci>
<apply>
<plus/>
<apply>
<times/>
<ci>b</ci>
<ci>g_t</ci>
</apply>
<apply>
<times/>
<ci>E_L</ci>
<ci>g_L</ci>
</apply>
</apply>
</apply>
</math>
</component>
<component name="diaphragm">
<variable cmeta:id="ramp_signal" name="R_p" public_interface="in" units="dimensionless"/>
<variable cmeta:id="diaphragm_displacement" initial_value="0.0" name="x_m" units="meter"/>
<variable cmeta:id="pleural_pressure" name="P_L" public_interface="out" units="mmHg"/>
<variable cmeta:id="pleural_pressure_constant" initial_value="4.5" name="P_L0" units="mmHg"/>
<variable cmeta:id="mouth_pressure" initial_value="760.0" name="P_m" units="mmHg"/>
<variable cmeta:id="active_stiffness" initial_value="2.5" name="k_p" units="mmHg_per_m"/>
<variable cmeta:id="empirical_parameter_1" initial_value="2" name="k_1" units="per_s"/>
<variable cmeta:id="empirical_parameter_2" initial_value="0.001" name="k_2" units="per_s"/>
<variable cmeta:id="environment_time" name="time" public_interface="in" units="second"/>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply id="diaphragm_displacement">
<eq/>
<apply>
<diff/>
<bvar>
<ci>time</ci>
</bvar>
<ci>x_m</ci>
</apply>
<apply>
<plus/>
<apply>
<times/>
<apply>
<minus/>
<ci>k_1</ci>
</apply>
<ci>x_m</ci>
</apply>
<apply>
<times/>
<ci>k_2</ci>
<ci>R_p</ci>
</apply>
</apply>
</apply>
<apply id="pleural_pressure">
<eq/>
<ci>P_L</ci>
<apply>
<minus/>
<apply>
<minus/>
<ci>P_m</ci>
<ci>P_L0</ci>
</apply>
<apply>
<times/>
<ci>k_p</ci>
<ci>x_m</ci>
</apply>
</apply>
</apply>
</math>
</component>
<!-- def comp lung as
// Variables-->
<!-- var{pleural_pressure} P_L: mmHg {pub: in};
var{alveolar_pressure} P_A: mmHg;
var{alveoli_gas_influx} Q_A: l_per_s;
var{lung_volume} V_A: cm3;
var{alveoli_pressure_auxiliary} P_x: mmHg {init: 0.0};
var{air_flow} q: l_per_s;
var{inspired_air_flow} q_i: l_per_s;
var{O2_blood_partial_pressure} p_o: mmHg {init: 0.0};
var{O2_alveolar_partial_pressure} p_ao: mmHg;
var{CO2_blood_partial_pressure} p_c: mmHg {init: 0.0};
var{CO2_alveolar_partial_pressure} p_ac: mmHg;
var{inspired_O2_concentration} f_oi: dimensionless;
var{inspired_CO2_concentration} f_ci: dimensionless;
var{alveoli_O2_concentration} f_o: dimensionless {init: 0.1368};
var{alveoli_CO2_concentration} f_c: dimensionless {init: 0.05263};
var{blood_HCO3_concentration} z: mM {init: 0.00003};
var{environment_time} time: second {pub: in};-->
<!-- // Parameters-->
<!-- var{mouth_pressure} P_m: mmHg {init: 760};
var{water_vapor_pressure} P_w: mmHg {init: 47};
var{mouth_O2_concentration} f_om: dimensionless {init: 0.21};
var{mouth_CO2_concentration} f_cm: dimensionless {init: 0.0};
var{lung_tidal_volume} V_T: dimensionless {init: 0.41};
var{lung_dead_space} V_D: dimensionless {init: 0.151};
var{collapsed_lung_volume} V_0: dimensionless {init: 0.0};
var{capillaries_volume} V_c: dimensionless {init: 0.071};
var{airways_resistance} R: mmHg_s_per_l {init: 1};
var{lung_elastance} E: mmHg_per_l {init: 2.5};
var{respiration_frequency} omega: per_s {init: 1.257};
var{time_between_heartbeats} T_L: second {init: 60};
var{O2_diffusion_capacity} D_o: l_per_mmHg_per_s {init: 3.5e-4};
var{CO2_diffusion_capacity} D_c: l_per_mmHg_per_s {init: 7.08e-3};
var{O2_solubility_in_plasma} sigma: mM_per_mmHg {init: 1.4e-3};
var{CO2_solubility_in_plasma} sigma_c: mM_per_mmHg {init: 3.3e-2};
var{hemoglobin_concentration} T_h: mM {init: 2};
var{H_concentration} h: mM {init: 0.00004};
var{dehydration_reaction_rate} r_2: per_s {init: 0.12};
var{hydration_reaction_rate} l_2: per_s_per_M {init: 164e3};
var{acceleration_rate} delta: dimensionless {init: 79.433};-->
<!-- //// Flexible Lung ////-->
<!-- P_x ={auxiliary_variable} P_A-P_L;
V_A ={lung_volume} (P_A-P_L)/E+V_0;
q ={air_flow} (P_m-P_A)/R;
Q_A ={net_gas_flux_into_alveoli} q+D_o*(p_o-p_ao)+D_c*(p_c-p_ac);
ode(P_x, time) ={i-flexible_lung_model} P_m*E/P_A*Q_A;-->
<!-- //// Gas Exchange ////-->
<!-- ode(f_o, time) ={ii-O2_concentration_rate_of_change} (D_o*(p_o-p_ao)+(f_oi-f_o)*q_i-f_o*(D_c*(p_c-p_ac)+D_o*(p_o-p_ao)))/V_A;
ode(f_c, time) ={iii-CO2_concentration_rate_of_change} (D_c*(p_c-p_ac)+(f_ci-f_c)*q_i-f_c*(D_o*(p_o-p_ao)+D_c*(p_c-p_ac)))/V_A;
q_i ={inspired_airflow} q;-->
<!-- f_oi ={inspired_O2_concentration} sel
case V_T >= V_D:
(f_o*V_D+f_om*(V_T-V_D))/V_T;
case V_T < V_D:
f_o;
endsel;-->
<!-- f_ci ={inspired_CO2_concentration} sel
case V_T >= V_D:
(f_c*V_D+f_cm*(V_T-V_D))/V_T;
case V_T < V_D:
f_c;
endsel;-->
<!-- //// Gas Transport ////-->
<!-- ode(p_o, time) ={iv_O2_partial_pressure_rate_of_change} D_o*(p_ao-p_o)/(sigma*V_c*(1{dimensionless}+4{dimensionless}*T_h/sigma));
ode(p_c, time) ={v_CO2_partial_pressure_rate_of_change} D_c*(p_ac-p_c)/(sigma_c*V_c)+delta*l_2*h*z/sigma_c-delta*r_2*p_c;
ode(z, time) ={vi_bicarbonate_concentration} delta*r_2*sigma_c*p_c-delta*l_2*h*z;
p_ao ={O2_partial_pressure} f_o*(P_A-P_w);
p_ac ={CO2_partial_pressure} f_c*(P_A-P_w);
enddef;-->
<component name="environment">
<variable cmeta:id="environment_time" name="time" public_interface="out" units="second"/>
</component>
<connection>
<map_components component_1="environment" component_2="pre_Botzinger_complex"/>
<map_variables variable_1="time" variable_2="time"/>
</connection>
<connection>
<map_components component_1="feedback_function" component_2="pre_Botzinger_complex"/>
<map_variables variable_1="g_t" variable_2="g_t"/>
</connection>
<connection>
<map_components component_1="diaphragm" component_2="pre_Botzinger_complex"/>
<map_variables variable_1="R_p" variable_2="A"/>
</connection>
<connection>
<map_components component_1="environment" component_2="diaphragm"/>
<map_variables variable_1="time" variable_2="time"/>
</connection>
<!-- def map between environment and lung for
vars time and time;
enddef;-->
<!-- def map between diaphragm and lung for
vars P_L and P_L;
enddef;-->
</model>