A Cardiovascular Simulator for Research 1.0.0

File: <base>/src/var_vcap.m (1,732 bytes)
% The function var_vcap.m computes the ventricular elastance and 
% derivative of the elastance for a desired time step.  This
% function is valid for the intact circulation with contracting
% atria.
%
% 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 dead unstressed (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 ste[ (mmHg/ml-s)
%

function [E,dE] = var_vcap(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.
	Tinit = 0.125*sqrt(Tp);
	Ts = .3*sqrt(Tp);
	Tir = Ts/2;

	x = (sumdeltaT < Tinit);
	y = (sumdeltaT < Tinit+Ts); 
	z = (sumdeltaT < Tinit+Ts+Tir);
	mbintscalar(x);
	mbintscalar(y);
	mbintscalar(z);

	% Setting values during diastolic filling phase.
	if (x)

	        E = 1/Cd;
		dE = 0;

	% Calculating values during isovolumic contraction phase.
	elseif (y)

		E = (((1/Cs)-(1/Cd))/2) * (1-cos((pi/Ts)*(sumdeltaT-Tinit))) + (1/Cd);
		dE = (pi/Ts)*(((1/Cs)-(1/Cd))/2) * sin((pi/Ts)*(sumdeltaT-Tinit));


	% Calculating values during isovolumic relaxation phase.
	elseif (z)

		E = (((1/Cs)-(1/Cd))/2) * (1+cos((pi/Tir)*(sumdeltaT-Ts-Tinit))) + (1/Cd);
		dE = -(pi/Tir)*(((1/Cs)-(1/Cd))/2) * sin((pi/Tir)*(sumdeltaT-Ts-Tinit));

	% Setting values during diastolic filling phase.
	else

		E = 1/Cd;
		dE = 0;

	end

end