#ifndef lint static char *rcs="$Header: /mit/hst/src/sim/RCS/estimate.c,v 2.1 90/08/18 18:40:12 tldavis Exp $"; #endif /* R. Sah August 1983 * G. Moody 18 December 1984 * T. Davis June 1985 * Copyright 1988 Timothy L. Davis * $Source: /mit/hst/src/sim/RCS/estimate.c,v $ * Estimate initial pressures at the six nodes in the model by setting up an * 8x8 system of linear equations. NOTE: uses lineqs() in libm.a. */ #include "CVDefs.h" extern double Tsystole(); /* from eqns.c */ estimate(p,x) SIMULATION *p; double x[]; { double a[8][8], b[8]; double T, Tsys, Tdias; T = 60./p->hr; Tsys = Tsystole(p->hr); Tdias = T - Tsys; a[0][0] = p->Cldias; a[1][0] = 0.; a[2][0] = p->Crdias; a[3][0] = 0.; a[4][0] = p->Ca; a[5][0] = p->Cv; a[6][0] = p->CPa; a[7][0] = p->CPv; a[0][1] = p->Cldias; a[1][1] = -p->Clsys; a[2][1] = -p->Crdias; a[3][1] = p->Crsys; a[4][1] = 0.; a[5][1] = 0.; a[6][1] = 0.; a[7][1] = 0.; a[0][2] = -p->Cldias*p->Rv/Tdias; a[1][2] = p->Clsys*(p->Rv)/Tdias; a[2][2] = -1.; a[3][2] = 0.; a[4][2] = 0.; a[5][2] = 1.; a[6][2] = 0.; a[7][2] = 0.; a[0][3] = -p->Cldias*(p->Rro)/Tsys; a[1][3] = p->Clsys*(p->Rro)/Tsys; a[2][3] = 0.; a[3][3] = 1.; a[4][3] = 0.; a[5][3] = 0.; a[6][3] = -1.; a[7][3] = 0.; a[0][4] = -p->Cldias*(p->Rlo)/Tsys; a[1][4] = 1. + p->Clsys*(p->Rlo)/Tsys; a[2][4] = 0.; a[3][4] = 0.; a[4][4] = -1.; a[5][4] = 0.; a[6][4] = 0.; a[7][4] = 0.; a[0][5] = -p->Cldias*(p->Ra)/T; a[1][5] = p->Clsys*(p->Ra)/T; a[2][5] = 0.; a[3][5] = 0.; a[4][5] = 1.; a[5][5] = -1.; a[6][5] = 0.; a[7][5] = 0.; a[0][6] = -p->Cldias*(p->RPv)/T; a[1][6] = p->Clsys*(p->RPv)/T; a[2][6] = 0.; a[3][6] = 0.; a[4][6] = 0.; a[5][6] = 0.; a[6][6] = 1.; a[7][6] = -1.; a[0][7] = -1.-p->Cldias*(p->Rli)/Tdias; a[1][7] = p->Clsys*(p->Rli)/Tdias; a[2][7] = 0.; a[3][7] = 0.; a[4][7] = 0.; a[5][7] = 0.; a[6][7] = 0.; a[7][7] = 1.; b[0] = p->bv - (p->Va0+p->Vv0+p->Vr0+p->VPa0+ p->VPv0+p->Vl0) + p->pth* (p->Cldias+p->Crdias+p->CPa+p->CPv); b[1] = p->pth*(p->Cldias-p->Clsys-p->Crdias+p->Crsys); b[4] = p->pth*(p->Rlo)*(p->Clsys-p->Cldias)/Tsys; b[3] = p->pth*(p->Rro)*(p->Clsys-p->Cldias)/Tsys; b[5] = p->pth*(p->Ra )*(p->Clsys-p->Cldias)/T; b[6] = p->pth*(p->RPv)*(p->Clsys-p->Cldias)/T; b[2] = p->pth*(p->Rv )*(p->Clsys-p->Cldias)/Tdias; b[7] = p->pth*(p->Rli)*(p->Clsys-p->Cldias)/Tdias; lineqs(a,b); xpl=b[0]; /* put the estimated pressure vals in x[] using macros */ xpr=b[2]; xpa=b[4]; xpv=b[5]; xpPa=b[6]; xpPv=b[7]; xt = 0.0; xCl = p->Cldias; xCr = p->Crdias; x[9] = 0.0; }