% 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