A Cardiovascular Simulator for Research 1.0.0

File: <base>/src/read_param.m (12,875 bytes)
% The function read_param.m reads a file which contains the
% parameter values characterizing the human cardiovascular model
% and its execution.
% 
% Note that if the parameters characterizing the model are modified,
% then this file must be accordingly modified.
%
% Function argument
%	inputfileid - id of the file containing the parameter values
%
% Function output
%       th - 113x1 MATLAB vector containing the read-in parameter values
%	waveform - string of numerical values corresponding to the waveforms
%                   to be viewed on-line
%

function [th,waveform] = read_param(inputfileid)

% Pre-allocating all of the parameters.
Cls = [];
Cld = [];
Ca = [];
Cv = [];
Crs = [];
Crd = [];
Cpa = [];
Cpv = [];
Qlo = [];
Qao = [];
Qvo = [];
Qro = [];
Qpao = [];
Qpvo = [];
Rl = [];
Ra = [];
Rv = [];
Rr = [];
Rpa = [];
Rpv = [];
Qtot = [];
F = [];
Qlmax = [];
Qrmax = [];
Ppa = [];
Pa = [];
Pv = [];
Plmax = [];
Prmax = [];
Pms = [];
Qfrs = [];
againr = [];
bgain = [];
pgain = [];
Pasp = [];
Pratrsp = [];
Tr = [];
fcp = [];
Sa = [];
stdwr = []; 
stdwf = [];
dgainp = [];
dgains = [];
againq = [];
cgainr = [];
cgainq = [];
cgainfp = [];
Sc = [];
Qt = [];
Pvs = [];
Crds = [];
Pas = [];
Pvc = [];
again = [];
againc = [];
cgainc = [];
againfs = [];
cgainfs = [];
againfp = [];
Qfr = [];
Qds = [];
Rair = [];
Clu = [];
Qluo = [];
window = [];
annotations = [];
numerics = [];
alpha = [];
step = [];

% Reading in each of the values of each of the above parameters
% from the input file according to the prescribed format of the
% file.
line = fgetl(inputfileid);
while (strcmp(line,'%%%END OF FILE%%%') == 0)

	 if (isempty(findstr(line,'%')) == 1)

	    if (isempty(line) == 1)
	       ;
	    elseif (isempty(findstr(line,':')) == 1)
	       ;   
	    else

	       index = findstr(line,':');
	       tstr = char(line(1:index-1));
	       count = 1;
	       x = isspace(tstr(count));
	       mbintscalar(x)
	       while (x)	    
		  count=count+1;	       
		  x = isspace(tstr(count));
		  mbintscalar(x);
	       end;
	       start = count;
	       count = index-1;
	       x = isspace(tstr(count));
	       mbintscalar(x)
	       while (x)	    
		  count=count-1;
		  x = isspace(tstr(count));
		  mbintscalar(x);
	       end
	       finish = count;
	       tstr = char(tstr(start:finish));	    
	       if (strcmp(tstr,'Cls') == 1)
		  tmp = sscanf(line,'%s %f');
		  Cls = tmp(length(tmp));
	       elseif (strcmp(tstr,'Cld') == 1)
	          tmp = sscanf(line,'%s %f');
	          Cld = tmp(length(tmp));
	       elseif (strcmp(tstr,'Ca') == 1)
	          tmp = sscanf(line,'%s %f');
	          Ca = tmp(length(tmp));
	       elseif (strcmp(tstr,'Cv') == 1)
	          tmp = sscanf(line,'%s %f');
	          Cv = tmp(length(tmp));
	       elseif (strcmp(tstr,'Crs') == 1)
	          tmp = sscanf(line,'%s %f');
	          Crs = tmp(length(tmp));
	       elseif (strcmp(tstr,'Crd') == 1)
	          tmp = sscanf(line,'%s %f');
	          Crd = tmp(length(tmp));
	       elseif (strcmp(tstr,'Cpa') == 1)
	          tmp = sscanf(line,'%s %f');
	          Cpa = tmp(length(tmp));
	       elseif (strcmp(tstr,'Cpv') == 1)
	          tmp = sscanf(line,'%s %f');
	          Cpv = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qlo') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qlo = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qao') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qao = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qvo') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qvo = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qro') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qro = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qpao') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qpao = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qpvo') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qpvo = tmp(length(tmp));
	       elseif (strcmp(tstr,'Rl') == 1)
	          tmp = sscanf(line,'%s %f');
	          Rl = tmp(length(tmp));
	       elseif (strcmp(tstr,'Ra') == 1)
	          tmp = sscanf(line,'%s %f');
	          Ra = tmp(length(tmp));
	       elseif (strcmp(tstr,'Rv') == 1)
	          tmp = sscanf(line,'%s %f');
	          Rv = tmp(length(tmp));
	       elseif (strcmp(tstr,'Rr') == 1)
	          tmp = sscanf(line,'%s %f');
	          Rr = tmp(length(tmp));
	       elseif (strcmp(tstr,'Rpa') == 1)
	          tmp = sscanf(line,'%s %f');
	          Rpa = tmp(length(tmp));
	       elseif (strcmp(tstr,'Rpv') == 1)
	          tmp = sscanf(line,'%s %f');
	          Rpv = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qtot') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qtot = tmp(length(tmp));
	       elseif (strcmp(tstr,'F') == 1)
	          tmp = sscanf(line,'%s %f');
	          F = tmp(length(tmp));
%	       elseif (strcmp(tstr,'Pth') == 1)
%	          tmp = sscanf(line,'%s %f');
%	          Pth = tmp(length(tmp));
%	       elseif (strcmp(tstr,'Ppac') == 1)
%	          tmp = sscanf(line,'%s %f');
%	          Ppac = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qlmax') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qlmax = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qrmax') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qrmax = tmp(length(tmp));
	       elseif (strcmp(tstr,'Ppa') == 1)
	          tmp = sscanf(line,'%s %f');
	          Ppa = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pa') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pa = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pv') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pv = tmp(length(tmp));
	       elseif (strcmp(tstr,'Plmax') == 1)
	          tmp = sscanf(line,'%s %f');
	          Plmax = tmp(length(tmp));
	       elseif (strcmp(tstr,'Prmax') == 1)
	          tmp = sscanf(line,'%s %f');
                  Prmax = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pms') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pms = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qfrs') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qfrs = tmp(length(tmp));
	       elseif (strcmp(tstr,'againr') == 1)
	          tmp = sscanf(line,'%s %f');
	          againr = tmp(length(tmp));
	       elseif (strcmp(tstr,'bgain') == 1)
	          tmp = sscanf(line,'%s %f');
	          bgain = tmp(length(tmp));
	       elseif (strcmp(tstr,'pgain') == 1)
	          tmp = sscanf(line,'%s %f');
	          pgain = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pasp') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pasp = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pratrsp') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pratrsp = tmp(length(tmp));
	       elseif (strcmp(tstr,'Tr') == 1)
	          tmp = sscanf(line,'%s %f');
	          Tr = tmp(length(tmp));
	       elseif (strcmp(tstr,'fco') == 1)
	          tmp = sscanf(line,'%s %f');
	          fco = tmp(length(tmp));
	       elseif (strcmp(tstr,'Sa') == 1)
	          tmp = sscanf(line,'%s %f');
	          Sa = tmp(length(tmp));
	       elseif (strcmp(tstr,'stdwr') == 1)
	          tmp = sscanf(line,'%s %f');
	          stdwr = tmp(length(tmp));
	       elseif (strcmp(tstr,'stdwf') == 1)
	          tmp = sscanf(line,'%s %f');
	          stdwf = tmp(length(tmp));
	       elseif (strcmp(tstr,'dgainp') == 1)
	          tmp = sscanf(line,'%s %f');
	          dgainp = tmp(length(tmp));
	       elseif (strcmp(tstr,'dgains') == 1)
	          tmp = sscanf(line,'%s %f');
	          dgains = tmp(length(tmp));
	       elseif (strcmp(tstr,'againq') == 1)
	          tmp = sscanf(line,'%s %f');
	          againq = tmp(length(tmp));
	       elseif (strcmp(tstr,'cgainr') == 1)
	          tmp = sscanf(line,'%s %f');
	          cgainr = tmp(length(tmp));
	       elseif (strcmp(tstr,'cgainq') == 1)
	          tmp = sscanf(line,'%s %f');
	          cgainq = tmp(length(tmp));
	       elseif (strcmp(tstr,'cgainfp') == 1)
	          tmp = sscanf(line,'%s %f');
	          cgainfp = tmp(length(tmp));
	       elseif (strcmp(tstr,'Sc') == 1)
	          tmp = sscanf(line,'%s %f');
	          Sc = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qt') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qt = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pvs') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pvs = tmp(length(tmp));
	       elseif (strcmp(tstr,'Crds') == 1)
	          tmp = sscanf(line,'%s %f');
	          Crds = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pas') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pas = tmp(length(tmp));
	       elseif (strcmp(tstr,'Pvc') == 1)
	          tmp = sscanf(line,'%s %f');
	          Pvc = tmp(length(tmp));
	       elseif (strcmp(tstr,'again') == 1)
	          tmp = sscanf(line,'%s %f');
	          again = tmp(length(tmp));
	       elseif (strcmp(tstr,'againc') == 1)
	          tmp = sscanf(line,'%s %f');
	          againc = tmp(length(tmp));
	       elseif (strcmp(tstr,'cgainc') == 1)
	          tmp = sscanf(line,'%s %f');
	          cgainc = tmp(length(tmp));
	       elseif (strcmp(tstr,'againfs') == 1)
	          tmp = sscanf(line,'%s %f');
	          againfs = tmp(length(tmp));
	       elseif (strcmp(tstr,'cgainfs') == 1)
	          tmp = sscanf(line,'%s %f');
	          cgainfs = tmp(length(tmp));
	       elseif (strcmp(tstr,'againfp') == 1)
	          tmp = sscanf(line,'%s %f');
	          againfp = tmp(length(tmp));
	       elseif (strcmp(tstr,'time') == 1)
	          tmp = sscanf(line,'%s %f');
	          time = tmp(length(tmp));
	       elseif (strcmp(tstr,'preparation') == 1)
	          tmp = sscanf(line,'%s %f');
	          preparation = tmp(length(tmp));
	       elseif (strcmp(tstr,'breathing') == 1)
	          tmp = sscanf(line,'%s %f');
	          breathing = tmp(length(tmp));
	       elseif (strcmp(tstr,'dncm') == 1)
	          tmp = sscanf(line,'%s %f');
	          dncm = tmp(length(tmp));
	       elseif (strcmp(tstr,'baro') == 1)
	          tmp = sscanf(line,'%s %f');
	          baro = tmp(length(tmp));
	       elseif (strcmp(tstr,'dra') == 1)
	          tmp = sscanf(line,'%s %f');
	          dra = tmp(length(tmp));
	       elseif (strcmp(tstr,'df') == 1)
	          tmp = sscanf(line,'%s %f');
	          df = tmp(length(tmp));
	       elseif (strcmp(tstr,'Fs') == 1)
	          tmp = sscanf(line,'%s %f');
	          Fs = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qfr') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qfr = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qds') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qds = tmp(length(tmp));
	       elseif (strcmp(tstr,'Rair') == 1)
	          tmp = sscanf(line,'%s %f');
	          Rair = tmp(length(tmp));
	       elseif (strcmp(tstr,'Clu') == 1)
	          tmp = sscanf(line,'%s %f');
	          Clu = tmp(length(tmp));
	       elseif (strcmp(tstr,'Qluo') == 1)
	          tmp = sscanf(line,'%s %f');
	          Qluo = tmp(length(tmp));
%	       elseif (strcmp(tstr,'timeql') == 1)
%	          tmp = sscanf(line,'%s %f');
%	          timeql = tmp(length(tmp));
	       elseif (strcmp(tstr,'window') == 1)
	          tmp = sscanf(line,'%s %f');
	          window = tmp(length(tmp));
	       elseif (strcmp(tstr,'annotations') == 1)
	          tmp = sscanf(line,'%s %f');
	          annotations = tmp(length(tmp));
	       elseif (strcmp(tstr,'numerics') == 1)
	          tmp = sscanf(line,'%s %f');
	          numerics = tmp(length(tmp));
	       elseif (strcmp(tstr,'waveform') == 1)
		  lnum = findstr(line,':');
		  waveform = line(lnum+2:length(line));
	       elseif (strcmp(tstr,'alpha') == 1)
	          tmp = sscanf(line,'%s %f');
	          alpha = tmp(length(tmp));
	       elseif (strcmp(tstr,'step') == 1)
	          tmp = sscanf(line,'%s %f');
	          step = tmp(length(tmp));
	       end
         end
      end	 
      tstr = [];
      line = [];
      line = fgetl(inputfileid);

end

% Assigning these values to the th vector.
theta = [Cls*((Plmax)/(Qlmax-Qlo)) Cld*((Plmax)/(Qlmax-Qlo)) Ca Cv Crs*((Prmax)/(Qrmax-Qro)) Crd*((Prmax)/(Qrmax-Qro)) Cpa Cpv Qlo Qao Qvo Qro Qpao Qpvo Rl Ra Rv Rr Rpa Rpv Qtot F Pvc-((Qfr-Qluo)/Clu) 1/F Pvc Qlmax Qrmax Ppa Pa Pv Plmax Prmax Pms 3 5 Qfrs againr bgain pgain Pasp Pratrsp Tr 50 fco 2 Sa stdwr stdwf 2 2 2 dgainp dgains againq cgainr cgainq 0 cgainfp alpha Sc 0.05 0.05 6 0.0575 0.1 0.00016 6.75 numerics 0.025 -0.01 865.4 1.45 0.15 647.9687 67.0312 784.2687 Qt step 0 1.25 2.5 5 0.003 2 4 5 0.003 Pvs]';

theta = [theta; Crds; Pas; Pvc; again; againc; cgainc; againfs; cgainfs; againfp; Qfr; Qds; Rair; Clu; Qluo; 300; window; annotations];

th = [theta; time*Fs; preparation; breathing; dncm; baro; dra; df; Fs];

% If 113 parameters have not been assigned numerical values,
% then return a scalar -1 which will cause rcvsim to abort.
if (length(th) < 113)
   th = [];
   th = -1;
end