/* * Guyton Model: pulmonary_O2_uptake * * Model Status * * This CellML model has been validated. Due to the differences * between procedural code (in this case C-code) and declarative * languages (CellML), some aspects of the original model were * not able to be encapsulated by the CellML model (such as the * damping of variables). This may effect the transient behaviour * of the model, however the steady-state behaviour would remain * the same. The equations in this file and the steady-state output * from the model conform to the results from the MODSIM program. * * Model Structure * * Arthur Guyton (1919-2003) was an American physiologist who became * famous for his 1950s experiments in which he studied the physiology * of cardiac output and its relationship with the peripheral circulation. * The results of these experiments challenged the conventional * wisdom that it was the heart itself that controlled cardiac * output. Instead Guyton demonstrated that it was the need of * the body tissues for oxygen which was the real regulator of * cardiac output. The "Guyton Curves" describe the relationship * between right atrial pressures and cardiac output, and they * form a foundation for understanding the physiology of circulation. * * The Guyton model of fluid, electrolyte, and circulatory regulation * is an extensive mathematical model of human circulatory physiology, * capable of simulating a variety of experimental conditions, * and contains a number of linked subsystems relating to circulation * and its neuroendocrine control. * * This is a CellML translation of the Guyton model of the regulation * of the circulatory system. The complete model consists of separate * modules each of which characterise a separate physiological * subsystems. The Circulation Dynamics is the primary system, * to which other modules/blocks are connected. The other modules * characterise the dynamics of the kidney, electrolytes and cell * water, thirst and drinking, hormone regulation, autonomic regulation, * cardiovascular system etc, and these feedback on the central * circulation model. The CellML code in these modules is based * on the C code from the programme C-MODSIM created by Dr Jean-Pierre * Montani. * * This particular CellML model describes the dynamics of oxygen * uptake by the lungs, and also calculates the dynamics of the * process of hemoglobin-oxygen binding in the blood. * * model diagram * * [[Image file: full_model.png]] * * A systems analysis diagram for the full Guyton model describing * circulation regulation. * * model diagram * * [[Image file: pulmonary_o2.png]] * * A schematic diagram of the components and processes described * in the current CellML model. * * There are several publications referring to the Guyton model. * One of these papers is cited below: * * Circulation: Overall Regulation, A.C. Guyton, T.G. Coleman, * and H.J. Granger, 1972, Annual Review of Physiology , 34, 13-44. * PubMed ID: 4334846 */ import nsrunit; unit conversion on; unit minute=60 second^1; unit per_minute=.01666667 second^(-1); //Warning: unit mmHg_ renamed from mmHg, as the latter is predefined in JSim with different fundamental units. unit mmHg_=133.322 kilogram^1*meter^(-1)*second^(-2); unit per_mmHg=.00750064 kilogram^(-1)*meter^1*second^2; unit per_mmHg2=5.6259564E-5 kilogram^(-2)*meter^2*second^4; unit mmHg3=2.369766E6 kilogram^3*meter^(-3)*second^(-6); unit monovalent_mEq=.001 mole^1; unit monovalent_mEq_per_minute=1.6666667E-5 second^(-1)*mole^1; unit monovalent_mEq_per_litre=1 meter^(-3)*mole^1; unit monovalent_mEq_per_litre_per_minute=.01666667 meter^(-3)*second^(-1)*mole^1; unit litre2_per_monovalent_mEq_per_minute=1.6666667E-5 meter^6*second^(-1)*mole^(-1); unit L_per_minute=1.6666667E-5 meter^3*second^(-1); unit mL=1E-6 meter^3; unit mL_per_L=.001 dimensionless; unit mL_per_L_per_mmHg=7.5006376E-6 kilogram^(-1)*meter^1*second^2; unit mL_per_L_per_minute=1.6666667E-5 second^(-1); unit mL_per_minute_per_mmHg=1.2501063E-10 kilogram^(-1)*meter^4*second^1; unit L_mL_per_minute_per_mmHg=1.2501063E-13 kilogram^(-1)*meter^7*second^1; unit L_per_mL=1E3 dimensionless; unit mL_per_minute=1.6666667E-8 meter^3*second^(-1); unit L_per_minute_per_mmHg=1.2501063E-7 kilogram^(-1)*meter^4*second^1; unit mmHg_per_mL=1.33322E8 kilogram^1*meter^(-4)*second^(-2); math main { realDomain time minute; time.min=0; extern time.max; extern time.delta; real VPF litre; VPF=0.0123238; real DOB mL_per_minute; DOB=163.508; real QRO L_per_minute; QRO=4.97838; real RMO mL_per_minute; RMO=56.8057; real HM dimensionless; HM=40.0381; real O2UTIL mL_per_minute; real O2VAD2(time) dimensionless; real O2VTS2(time) dimensionless; real ALVENT(time) L_per_minute; real VNTSTM dimensionless; VNTSTM=1; real PO2ALV(time) mmHg_; real PO2AMB mmHg_; PO2AMB=150; real PO2ART(time) mmHg_; real O2DFS(time) mL_per_minute; real PL2 L_mL_per_minute_per_mmHg; PL2=1.8; real VPTISS litre; VPTISS=0.0175; real RSPDFC mL_per_minute_per_mmHg; real OVA(time) mL_per_L; when(time=time.min) OVA=204.497; real DOVA(time) mL_per_L_per_minute; real OSA(time) dimensionless; real O2VTST(time) dimensionless; real O2VTST1(time) dimensionless; real DO2VAD(time) per_minute; real O2VAD1(time) dimensionless; when(time=time.min) O2VAD1=2.368e-07; // // // O2UTIL=(DOB+RMO); // ALVENT=(O2UTIL*VNTSTM*(.026667 L_per_mL)*O2VTS2*O2VAD2); // PO2ALV=(PO2AMB-O2UTIL/ALVENT/(.761 mL_per_L_per_mmHg)); // RSPDFC=(PL2/(VPTISS+VPF)); O2DFS=((PO2ALV-PO2ART)*RSPDFC); // DOVA=((O2DFS-O2UTIL)/(QRO*(1 minute))); OVA:time=DOVA; // OSA=(OVA/HM/5.25); PO2ART=(if (OSA>1) (114 mmHg_)+(OSA-1)*(6667 mmHg_) else if ((OSA>.936) and (OSA<=1)) (74 mmHg_)+(OSA-.936)*(625 mmHg_) else if ((OSA>.8) and (OSA<=.936)) (46 mmHg_)+(OSA-.8)*(205.882 mmHg_) else OSA*(57.5 mmHg_)); // // O2VTST1=((PO2ART-(67 mmHg_))/(30 mmHg_)); O2VTST=(if (O2VTST1>1) 1 else if (O2VTST1<.6) .6 else O2VTST1); O2VTS2=(1/O2VTST); // DO2VAD=(((O2VTS2-1)*3-O2VAD1)*(5E-4 per_minute)); O2VAD1:time=DO2VAD; O2VAD2=(O2VAD1+1); // }