/* * Computational modeling of cardiovascular response to orthostatic * stress * * Model Status * * This CellML model runs in both COR and PCEnv to reproduce the * published results. The units have been checked and they balance. * This is a lumped parameter model for cardiac activation based * on the work of Heldt et al. 2002. This CellMl model represents * the whole heart (all four chambers) connected to a lumped parameter * model of the circulatory system including systemic circulation, * a coronary circulation, and a pulmonary circulation. The model * and results are exactly the same as the JSim model of the same * name. * * Model Structure * * ABSTRACT: The objective of this study is to develop a model * of the cardiovascular system capable of simulating the short-term * (less than or equal to 5 min) transient and steady-state hemodynamic * responses to head-up tilt and lower body negative pressure. * The model consists of a closed-loop lumped-parameter representation * of the circulation connected to set-point models of the arterial * and cardiopulmonary baroreflexes. Model parameters are largely * based on literature values. Model verification was performed * by comparing the simulation output under baseline conditions * and at different levels of orthostatic stress to sets of population-averaged * hemodynamic data reported in the literature. On the basis of * experimental evidence, we adjusted some model parameters to * simulate experimental data. Orthostatic stress simulations are * not statistically different from experimental data (two-sided * test of significance with Bonferroni adjustment for multiple * comparisons). Transient response characteristics of heart rate * to tilt also compare well with reported data. A case study is * presented on how the model is intended to be used in the future * to investigate the effects of post-spaceflight orthostatic intolerance. * * model diagram * * [[Image file: heldt_2002b.png]] * * Schematic diagram of the Heldt et al. 2002 circulation model. * * The original paper reference is cited below: * * Computational modeling of cardiovascular response to orthostatic * stress, T. Heldt, E.B. Shim, R.D. Kamm, and R.G. Mark, 2002, * Journal of Applied Physiology, 92, 1239-1254. PubMed ID: 11842064 */ import nsrunit; // Warning: unit conversion turned off due to unit errors in 1 equation(s) unit conversion off; //Warning: unit mmHg_ renamed from mmHg, as the latter is predefined in JSim with different fundamental units. unit mmHg_=133.322 kilogram^1*meter^(-1)*second^(-2); unit elastance=1.33322E8 kilogram^1*meter^(-4)*second^(-2); unit mL=1E-6 meter^3; unit s=1 second^1; unit Hz=1 second^(-1); unit flow=1E-6 meter^3*second^(-1); unit flowLm=.06 meter^3*second^(-1); unit inductance=1.33322E8 kilogram^1*meter^(-4); unit resistance=1.33322E8 kilogram^1*meter^(-4)*second^(-1); unit capacitance=7.5006376E-9 kilogram^(-1)*meter^4*second^2; unit concentration=1 dimensionless; unit ratepm=60 second^(-1); unit Hz2rpm=60 second^(-2); unit mmHgmlm2=1.33322E14 kilogram^1*meter^(-7)*second^(-2); unit mV=.001 kilogram^1*meter^2*second^(-3)*ampere^(-1); unit perml=1E6 meter^(-3); math main { realDomain t s; t.min=0; extern t.max; extern t.delta; real Vlvrd mL; Vlvrd=72; real Vlvrs mL; Vlvrs=23; real Vrvrd mL; Vrvrd=103; real Vrvrs mL; Vrvrs=53; real Vlard mL; Vlard=10; real Vlars mL; Vlars=8; real Vrard mL; Vrard=10; real Vrars mL; Vrars=8; real Rra resistance; Rra=0.001; real Rla resistance; Rla=0.001; real PRint s; PRint=0.12; real Emaxlv elastance; Emaxlv=5.6; real Eminlv elastance; Eminlv=0.186874659; real Emaxrv elastance; Emaxrv=0.67; real Eminrv elastance; Eminrv=0.1041640922; real Emaxra elastance; Emaxra=0.1091675077; real Eminra elastance; Eminra=0.0992431888; real Emaxla elastance; Emaxla=0.1446191772; real Eminla elastance; Eminla=0.1314719793; real Pbs mmHg_; Pbs=0; real Vmyo mL; Vmyo=238; real TsvK s; TsvK=0.35; real TsaK s; TsaK=0.2; real HR ratepm; HR=77; real Elv(t) elastance; real Erv(t) elastance; real Era(t) elastance; real Ela(t) elastance; real Vlvr(t) mL; real Vrvr(t) mL; real Vlar(t) mL; real Vrar(t) mL; real Fra(t) flow; real Frv(t) flow; real Fla(t) flow; real Flv(t) flow; real Pra(t) mmHg_; real Prac(t) mmHg_; real Prv(t) mmHg_; real Prvc(t) mmHg_; real Pla(t) mmHg_; real Plac(t) mmHg_; real Plv(t) mmHg_; real Plvc(t) mmHg_; real Vra(t) mL; when(t=t.min) Vra=78.2537; real Vrv(t) mL; when(t=t.min) Vrv=167.4806; real Vla(t) mL; when(t=t.min) Vla=85.9126; real Vlv(t) mL; when(t=t.min) Vlv=125.360568; real COutput flow; COutput=108.56912706; real SV mL; real P_QRSwave(t) mV; real Tsv s; real Tsa s; real trela(t) s; real trelv(t) s; real Rav resistance; Rav=1e-4; real Raop resistance; Raop=1e-4; real Rcrb resistance; Rcrb=6.8284472205; real Raod resistance; Raod=0.025; real Rtaop resistance; Rtaop=0.2; real Rtaod resistance; Rtaod=0.3; real Rsap resistance; Rsap=0.025; real Rsc resistance; Rsc=0.1545054945; real Rsv resistance; Rsv=0.1381298227; real Rsao resistance; Rsao=0.5508058134; real Caop capacitance; Caop=0.3445734208; real Caod capacitance; Caod=1.4544677036; real Csap capacitance; Csap=1.4843409851; real Csc capacitance; Csc=7.9822364317; real Laop inductance; Laop=3.5e-4; real Laod inductance; Laod=3.5e-4; real Kc mmHg_; Kc=497.7852450367; real Do mL; Do=50; real Vsa_o mL; Vsa_o=485.7624931891; real Vsa_max mL; Vsa_max=577.7106000108; real Kp1 mmHg_; Kp1=0.03; real Kp2 mmHgmlm2; Kp2=0.05; real Kr resistance; Kr=0.01; real tau_p perml; tau_p=0.1; real Kv mmHg_; Kv=21.83; real Vmax_sv mL; Vmax_sv=3379.545; real D2 mmHg_; D2=-5; real K1 dimensionless; K1=0.0968305478; real K2 mmHg_; K2=0.4; real KR resistance; KR=0.001; real Ro resistance; Ro=0.025; real Vo mL; Vo=129.6486; real Vmax_vc mL; Vmax_vc=350.5314; real Vmin_vc mL; Vmin_vc=50.010747; real COtau s; COtau=15; real Pplc mmHg_; Pplc=-5.6; real Px2 mmHg_; Px2=2; real Vx8 mL; Vx8=8; real Vx75 mL; Vx75=75; real Vx1 mL; Vx1=1; real Px1 mmHg_; Px1=1; real F_vaso dimensionless; F_vaso=0.5; real Rvc(t) resistance; real Rsa(t) resistance; real Paop(t) mmHg_; real Paopc(t) mmHg_; when(t=t.min) Paopc=87.93968; real Paod(t) mmHg_; real Paodc(t) mmHg_; real Psa_a(t) mmHg_; real Psa_p(t) mmHg_; real Psa(t) mmHg_; real Psap(t) mmHg_; real Psc(t) mmHg_; real Psv(t) mmHg_; real Pvc(t) mmHg_; real Pvcc(t) mmHg_; real MAP(t) mmHg_; when(t=t.min) MAP=90.6179; real Faop(t) flowLm; when(t=t.min) Faop=0.698577; real Faod(t) flow; when(t=t.min) Faod=23.5957; real Fsap(t) flow; real Fsa(t) flow; real Fsc(t) flow; real Fsv(t) flow; real Fvc(t) flow; real Fcrb(t) flow; real Vaop(t) mL; when(t=t.min) Vaop=31.1705; real Vaod(t) mL; when(t=t.min) Vaod=138.4476; real Vsa(t) mL; when(t=t.min) Vsa=519.7915; real Vsap(t) mL; when(t=t.min) Vsap=129.6439; real Vsc(t) mL; when(t=t.min) Vsc=256.8555; real Vsv(t) mL; when(t=t.min) Vsv=2961.6507; real Vvc(t) mL; when(t=t.min) Vvc=232.46638962; real Vtot(t) mL; real SysArtVol(t) mL; real SysVenVol(t) mL; real PulArtVol(t) mL; real PulVenVol(t) mL; real VBcirc(t) mL; real Ppl mmHg_; real Rpuv resistance; Rpuv=1e-4; real Rtpap resistance; Rtpap=0.05; real Rtpad resistance; Rtpad=0.05; real Rpap resistance; Rpap=1e-4; real Rpad resistance; Rpad=0.03; real Rps resistance; Rps=4.2958026137; real Rpa resistance; Rpa=0.0565149137; real Rpc resistance; Rpc=0.0309026688; real Rpv resistance; Rpv=1e-4; real Ctpap capacitance; Ctpap=1.5365929068; real Ctpad capacitance; Ctpad=2.6893667388; real Cpa capacitance; Cpa=3.1321449506; real Cpc capacitance; Cpc=7.7147; real Cpv capacitance; Cpv=27.87028922; real Lpa inductance; Lpa=1.801907e-4; real Lpad inductance; Lpad=1.932239e-4; real Ppapc(t) mmHg_; real Ppapc1(t) mmHg_; real Ppapc2(t) mmHg_; real Ppap(t) mmHg_; real Ppad(t) mmHg_; real Ppadc(t) mmHg_; real Ppa(t) mmHg_; real Ppac(t) mmHg_; real Ppc(t) mmHg_; real Ppcc(t) mmHg_; real Ppv(t) mmHg_; real Ppvc(t) mmHg_; real Vpap(t) mL; when(t=t.min) Vpap=33.1398; real Vpad(t) mL; when(t=t.min) Vpad=60.11203897; real Vpa(t) mL; when(t=t.min) Vpa=58.926; real Vpc(t) mL; when(t=t.min) Vpc=107.57022; real Vpv(t) mL; when(t=t.min) Vpv=293.0398; real Fpap(t) flowLm; when(t=t.min) Fpap=1.2282; real Fpad(t) flow; when(t=t.min) Fpad=57.1876; real Fps(t) flow; real Fpa(t) flow; real Fpc(t) flow; real Fpv(t) flow; real K_pcd mmHg_; K_pcd=1; real phi_pcd mL; phi_pcd=40; real Vpcd_o mL; Vpcd_o=785; real perifl mL; perifl=15; real Ppcd(t) mmHg_; real Ppcdc(t) mmHg_; real Vpcd(t) mL; real Rcorao resistance; Rcorao=2.642367; real Rcorea resistance; Rcorea=2.642367; real Rcorla resistance; Rcorla=5.073345; real Rcorsa resistance; Rcorsa=5.073345; real Rcorcap resistance; Rcorcap=4.227788; real Rcorsv resistance; Rcorsv=0.4932479; real Rcorlv resistance; Rcorlv=0.4932479; real Rcorev resistance; Rcorev=0.4932479; real Ccorao capacitance; Ccorao=0.13; real Ccorea capacitance; Ccorea=0.05507; real Ccorla capacitance; Ccorla=0.09129; real Ccorsa capacitance; Ccorsa=0.15602; real Ccorcap capacitance; Ccorcap=1.8; real Ccorsv capacitance; Ccorsv=0.58155; real Ccorlv capacitance; Ccorlv=0.68372; real Ccorev capacitance; Ccorev=0.832299; real Pcorisfc(t) mmHg_; real Pcoraoc(t) mmHg_; real Pcoreac(t) mmHg_; real Pcorlac(t) mmHg_; real Pcorsac(t) mmHg_; real Pcorcapc(t) mmHg_; real Pcorsvc(t) mmHg_; real Pcorlvc(t) mmHg_; real Pcorevc(t) mmHg_; real Pcorao(t) mmHg_; real Pcorea(t) mmHg_; real Pcorla(t) mmHg_; real Pcorsa(t) mmHg_; real Pcorcap(t) mmHg_; real Pcorsv(t) mmHg_; real Pcorlv(t) mmHg_; real Pcorev(t) mmHg_; real Vcorao(t) mL; when(t=t.min) Vcorao=2.76087; real Vcorea(t) mL; when(t=t.min) Vcorea=4.41135; real Vcorla(t) mL; when(t=t.min) Vcorla=4.992799; real Vcorsa(t) mL; when(t=t.min) Vcorsa=4.22047; real Vcorcap(t) mL; when(t=t.min) Vcorcap=8.55228; real Vcorsv(t) mL; when(t=t.min) Vcorsv=7.8362; real Vcorlv(t) mL; when(t=t.min) Vcorlv=8.213955; real Vcorev(t) mL; when(t=t.min) Vcorev=8.76758; real Vcorcirc(t) mL; real Fcorao(t) flow; real Fcorea(t) flow; real Fcorla(t) flow; real Fcorsa(t) flow; real Fcorcap(t) flow; real Fcorsv(t) flow; real Fcorlv(t) flow; real Fcorev(t) flow; real beattime(t) s; real yla(t) dimensionless; real yra(t) dimensionless; real ylv(t) dimensionless; real yrv(t) dimensionless; real hrf Hz; // hrf=((60 Hz2rpm)/HR); beattime=(t-floor(t/hrf)*hrf); Tsv=(TsvK*sqrt((1 ratepm)*1/HR)*7.745966692414832); Tsa=(TsaK*sqrt((1 Hz)/HR)*7.745966692414832); trelv=(beattime-PRint); trela=beattime; yla=(if ((trela>=(0 s)) and (trela<=Tsa)) (1-cos(3.141592653589793*trela/Tsa))/2 else if ((trela<(1.5*Tsa)) and (trela>=Tsa)) (1+cos(2*3.141592653589793*(trela-Tsa)/Tsa))/2 else 0); yra=yla; ylv=(if ((trelv>=(0 s)) and (trelv<=Tsv)) (1-cos(3.141592653589793*trelv/Tsv))/2 else if ((trelv<(1.5*Tsv)) and (trelv>=Tsv)) (1+cos(2*3.141592653589793*(trelv-Tsv)/Tsv))/2 else 0); yrv=ylv; Era=((Emaxra-Eminra)*yra+Eminra); Erv=((Emaxrv-Eminrv)*yrv+Eminrv); Ela=((Emaxla-Eminla)*yla+Eminla); Elv=((Emaxlv-Eminlv)*ylv+Eminlv); Faod:t=((Paodc-Faod*Raod-Psap)/Laod); Faop:t=((Paopc-Faop*Raop*16.66666666666667-Paodc)/Laop*.059999999999999984); Fcorao=((Pcoraoc-Pcoreac)/Rcorao); Fcorcap=((Pcorcapc-Pcorsvc)/Rcorcap); Fcorea=((Pcoreac-Pcorlac)/Rcorea); Fcorev=((Pcorevc-Prac)/Rcorev); Fcorla=((Pcorlac-Pcorsac)/Rcorla); Fcorlv=((Pcorlvc-Pcorevc)/Rcorlv); Fcorsa=((Pcorsac-Pcorcapc)/Rcorsa); Fcorsv=((Pcorsvc-Pcorlvc)/Rcorsv); Fcrb=((Paodc-Pvcc)/Rcrb); Fla=(if (Plac>Plvc) (Plac-Plvc)/Rla else (0 flow)); Flv=(if (Plvc>Paopc) (Plvc-Paopc)/Rav else (0 flow)); Fpa=((Ppac-Ppcc)/Rpa); Fpad:t=((Ppadc-Ppac-Fpad*Rpad)/Lpad); Fpap:t=((Ppapc-Ppadc-Fpap*Rpap*16.66666666666667)/Lpa*.059999999999999984); Fpc=((Ppcc-Ppvc)/Rpc); Fps=((Ppac-Ppvc)/Rps); Fpv=((Ppvc-Plac)/Rpv); Fra=(if (Prac>Prvc) (Prac-Prvc)/Rra else (0 flow)); Frv=(if (Prvc>Ppapc) (Prvc-Ppapc)/Rpuv else (0 flow)); Fsa=((Psa-Psc)/Rsa); Fsap=((Psap-Psa)/Rsap); Fsc=((Psc-Psv)/Rsc); Fsv=((Psv-Pvcc)/Rsv); Fvc=((Pvcc-Prac)/Rvc); MAP:t=((Psa-MAP)/COtau); P_QRSwave=(if ((t>beattime) and (t<(beattime+(.02 s)))) (5 mV) else if ((t>(beattime+PRint)) and (t<(beattime+PRint+(.02 s)))) (10 mV) else (0 mV)); Paod=(Paodc-Pbs); Paodc=((Rtaod*Rcrb*Faop-Rtaod*Rcrb*Faod*.059999999999999984+Vaod*Rcrb/Caod*.060000000000000005-Rcrb*Px2/(exp(Vaod/Vx8)-1)*.059999999999999984+Pvcc*Rtaod*.059999999999999984)/(Rcrb+Rtaod)*16.66666666666667); Paop=(Paopc-Pplc); Paopc:t=((Flv-Vaop:t-Faop*16.66666666666667-Fcorao)*(1/Ccorao+Px2/(1 mL)*exp(Vcorao/Vx1)/(exp(Vcorao/Vx1)-1)^2)); Pcorao=Paop; Pcoraoc=Paopc; Pcorcap=(Vcorcap/Ccorcap-Px1*1/(exp(Vcorcap/Vx1)-1)); Pcorcapc=(Pcorcap+Pcorisfc); Pcorea=(Vcorea/Ccorea-Px1*1/(exp(Vcorea/Vx1)-1)); Pcoreac=(Pcorea+Ppcdc); Pcorev=(Vcorev/Ccorev-Px2*1/(exp(Vcorev/Vx8)-1)); Pcorevc=(Pcorev+Ppcdc); Pcorisfc=abs((Plvc-Ppcdc)/2); Pcorla=(Vcorla/Ccorla-Px1*1/(exp(Vcorla/Vx1)-1)); Pcorlac=(Pcorla+Pcorisfc); Pcorlv=(Vcorlv/Ccorlv-Px1*1/(exp(Vcorlv/Vx1)-1)); Pcorlvc=(Pcorlv+Ppcdc); Pcorsa=(Vcorsa/Ccorsa-Px1*1/(exp(Vcorsa/Vx1)-1)); Pcorsac=(Pcorsa+Pcorisfc); Pcorsv=(Vcorsv/Ccorsv-Px1*1/(exp(Vcorsv/Vx1)-1)); Pcorsvc=(Pcorsv+Ppcdc); Pla=((Vla-Vlar)*Ela-Px2*1/(exp(Vla/Vx8)-1)); Plac=(Pla+Ppcdc); Plv=((Vlv-Vlvr)*Elv-Px2*1/(exp(Vlv/Vx8)-1)); Plvc=(Plv+Ppcdc); Ppa=(Vpa/Cpa-Px2*1/(exp(Vpa/Vx8)-1)); Ppac=(Ppa+Pplc); Ppad=(Ppadc-Pplc); Ppadc=(Vpad:t*Rtpad+Pplc+Vpad/Ctpad-Px2*1/(exp(Vpad/Vx8)-1)); Ppap=(Ppapc-Pplc); Ppapc1=((Rpuv*Vpap/Ctpap-Rpuv*Px2*1/(exp(Vpap/Vx8)-1)+Prvc*Rtpap-Rpuv*Rtpap*Fpap*16.666666666666668+Pplc*Rpuv)/(Rtpap+Rpuv)); Ppapc2=(Vpap/Ctpap+Pplc-Rtpap*Fpap*16.666666666666668-Px2*1/(exp(Vpap/Vx8)-1)); Ppapc=(if (Prvc>Ppapc1) Ppapc1 else Ppapc2); Ppc=(Vpc/Cpc-Px2*1/(exp(Vpc/Vx8)-1)); Ppcc=(Ppc+Pplc); Ppcd=(K_pcd*exp((Vpcd-Vpcd_o)/phi_pcd)-Px2*1/(exp(Vpcd/Vx75)-1)); Ppcdc=(Ppcd+Pplc); Ppl=(Pplc-Pbs); Ppv=(Vpv/Cpv-Px2*1/(exp(Vpv/Vx8)-1)); Ppvc=(Ppv+Pplc); Pra=((Vra-Vrar)*Era-Px2*1/(exp(Vra/Vx8)-1)); Prac=(Pra+Ppcdc); Prv=((Vrv-Vrvr)*Erv-Px2*1/(exp(Vrv/Vx8)-1)); Prvc=(Prv+Ppcdc); Psa_a=(Kc*log((Vsa-Vsa_o)/Do+1)); Psa=(F_vaso*Psa_a+(1-F_vaso)*Psa_p); Psa_p=(Kp1*exp(tau_p*(Vsa-Vsa_o))+Kp2*(Vsa-Vsa_o)^2); Psap=(Vsap/Csap-Px2*1/(exp(Vsap/Vx8)-1)); Psc=(Vsc/Csc-Px2*1/(exp(Vsc/Vx8)-1)); Psv=(Kv*log(Vmax_sv/Vsv-.99)*((-1)*1)); PulArtVol=(Vpap+Vpad+Vpa); PulVenVol=Vpv; Pvc=(if (Vvc>Vo) D2+K2*exp(Vo/Vmin_vc)+K1*(Vvc-Vo)/(1 capacitance)-Px2/(exp(Vvc/Vx8)-1) else D2+K2*exp(Vvc/Vmin_vc)-Px2/(exp(Vvc/Vx8)-1)); Pvcc=(Pvc+Pplc); Rsa=(Rsao+Kr*exp(4*F_vaso)+Kr*(Vsa_max/Vsa)^2); Rvc=(KR*(Vmax_vc/Vvc)^2+Ro); SV=(COutput/HR*60); SysArtVol=(Vaop+Vaod+Vsa+Vsap); SysVenVol=(Vsv+Vvc); VBcirc=(Vtot-perifl); Vaod:t=((Faop-Faod*.059999999999999984-Fcrb*.059999999999999984)*16.66666666666667); Vaop:t=((Paopc-Vaop/Caop+Px2*1/(exp(Vaop/Vx8)-1))/Rtaop); Vcorao:t=(Flv-Vaop:t-Faop*16.66666666666667-Fcorao); Vcorcap:t=(Fcorsa-Fcorcap); Vcorcirc=(Vcorao+Vcorea+Vcorla+Vcorsa+Vcorcap+Vcorsv+Vcorlv+Vcorev); Vcorea:t=(Fcorao-Fcorea); Vcorev:t=(Fcorlv-Fcorev); Vcorla:t=(Fcorea-Fcorla); Vcorlv:t=(Fcorsv-Fcorlv); Vcorsa:t=(Fcorla-Fcorsa); Vcorsv:t=(Fcorcap-Fcorsv); Vla:t=(Fpv-Fla); Vlar=((1-yla)*(Vlard-Vlars)+Vlars); Vlv:t=(Fla-Flv); Vlvr=((1-ylv)*(Vlvrd-Vlvrs)+Vlvrs); Vpa:t=(Fpad-Fps-Fpa); Vpad:t=((Fpap-Fpad*.059999999999999984)*16.66666666666667); Vpap:t=(Frv-Fpap*16.66666666666667); Vpc:t=(Fpa-Fpc); Vpcd=(Vrv+Vra+Vlv+Vla+perifl+Vmyo+Vcorcirc); Vpv:t=(Fpc+Fps-Fpv); Vra:t=(Fvc-Fra+Fcorev); Vrar=((1-yra)*(Vrard-Vrars)+Vrars); Vrv:t=(Fra-Frv); Vrvr=((1-yrv)*(Vrvrd-Vrvrs)+Vrvrs); Vsa:t=(Fsap-Fsa); Vsap:t=(Faod-Fsap); Vsc:t=(Fsa-Fsc); Vsv:t=(Fsc-Fsv); Vtot=(Vra+Vrv+Vpap+Vpad+Vpa+Vpc+Vpv+Vla+Vlv+Vaop+Vaod+Vsa+Vsap+Vsc+Vsv+Vvc+perifl+Vcorcirc); Vvc:t=(Fsv+Fcrb-Fvc); }