A Cardiovascular Simulator for Research 1.0.0
(1,622 bytes)
% The function var_cap.m computes the ventricular elastance and
% derivative of the elastance at a desired time step. This function
% is valid for all pulsatile heart and circulation preparations
% save the one with contracting atria. For this preparation, see
% var_vcap.m.
%
% Function arguments:
% Cs - end-systolic OR differential end-systolic compliance
% value at the unstressed volume (ml/mmHg)
% Cd - diastolic OR differential diastolic compliance value
% at the unstressed volume (ml/mmHg)
% Tp - previous cardiac cycle length (s)
% sumdeltaT - time surpassed in current cardiac cycle (s)
%
% Function outputs:
% E - elastance or differential elastance value at the unstressed volume
% for the desired time step (mmHg/ml)
% dE - derivative of E at the desired time step (mmHg/ml-s)
%
function [E,dE] = var_cap(Cs,Cd,Tp,sumdeltaT)
% Making the ventricle a passive element, if Cd is less
% than Cs.
if (Cd <= Cs)
E = 1/Cd;
dE = 0;
else
% Assigning variables.
Ts = .3*sqrt(Tp);
Tir = Ts/2;
% Calculating values during isovolumic contraction phase.
mbrealscalar(sumdeltaT < Ts);
if (sumdeltaT < Ts)
E = (((1/Cs)-(1/Cd))/2) * (1-cos((pi/Ts)*sumdeltaT)) + (1/Cd);
dE = (pi/Ts)*(((1/Cs)-(1/Cd))/2) * sin((pi/Ts)*sumdeltaT);
mbrealscalar(sumdeltaT >= Ts+Tir);
% Setting values during diastolic filling phase.
elseif (sumdeltaT >= Ts+Tir)
E = 1/Cd;
dE = 0;
% Calculating values during isovolumic relaxation phase.
else
E = (((1/Cs)-(1/Cd))/2) * (1+cos((pi/Tir)*(sumdeltaT-Ts))) + (1/Cd);
dE = -(pi/Tir)*(((1/Cs)-(1/Cd))/2) * sin((pi/Tir)*(sumdeltaT-Ts));
end
end