TPCCLIB
Loading...
Searching...
No Matches
o2.c
Go to the documentation of this file.
1
5/*****************************************************************************/
6#include "libtpcmodel.h"
7/*****************************************************************************/
8
9/*****************************************************************************/
10/* Default variables for oxygen */
12double SaO2=0.97;
14double p50Hb=3.6;
16double p50Mb=0.319;
18double nHb=2.7;
20double cHb=150.0;
22double cMb=4.7;
23/*****************************************************************************/
24
25/*****************************************************************************/
29double mo2k1k2(
31 const double OER,
33 const double SaO2,
36 const double p50Hb,
39 const double p50Mb,
41 const double nHb,
43 const double cHb,
45 const double cMb,
47 const int verbose
48) {
49 if(verbose>0) printf("mo2k1k2()\n");
50 if(verbose>1) {
51 printf("input:\n");
52 printf(" OER := %g\n", OER);
53 printf(" SaO2 := %g\n", SaO2);
54 printf(" p50Hb := %g\n", p50Hb);
55 printf(" p50Mb := %g\n", p50Mb);
56 printf(" nHb := %g\n", nHb);
57 printf(" cHb := %g\n", cHb);
58 printf(" cMb := %g\n", cMb);
59 }
60 double SHb=(1.0-OER)*SaO2;
61 if(verbose>2) printf("SHb := %g\n", SHb);
62
63 double pO2=p50Hb*pow(SHb/(1.0-SHb), 1.0/nHb);
64 if(verbose>2) printf("pO2 := %g\n", pO2);
65
66 double SMb=pO2/(pO2+p50Mb);
67 if(verbose>2) printf("SMb := %g\n", SMb);
68
69 double rO2=cMb/cHb;
70 if(verbose>2) printf("rO2 := %g\n", rO2);
71
72 double k1k2=rO2*(SMb/SHb);
73 if(verbose>1) printf("K1/k2 := %g\n", k1k2);
74
75 return(k1k2);
76}
77/*****************************************************************************/
78
79/*****************************************************************************/
83double mo2pO2(
85 const double OER,
87 const double K1k2,
89 const double SaO2,
92 const double p50Mb,
94 const double cHb,
96 const double cMb,
98 const int verbose
99) {
100 if(verbose>0) printf("mo2pO2()\n");
101 if(verbose>1) {
102 printf("input:\n");
103 printf(" OER := %g\n", OER);
104 printf(" K1/k2 := %g\n", K1k2);
105 printf(" SaO2 := %g\n", SaO2);
106 printf(" cHb := %g\n", cHb);
107 printf(" cMb := %g\n", cMb);
108 printf(" p50Mb := %g\n", p50Mb);
109 }
110 double SHb=(1.0-OER)*SaO2;
111 if(verbose>2) printf("SHb := %g\n", SHb);
112
113 double rO2=cMb/cHb;
114 if(verbose>2) printf("rO2 := %g\n", rO2);
115
116 double SMb=K1k2*(1.0-OER)*SaO2/rO2;
117 if(verbose>2) printf("SMb := %g\n", SMb);
118
119 double pO2=SMb*p50Mb/(1.0-SMb);
120 if(verbose>1) printf("pO2 := %g\n", pO2);
121
122 return(pO2);
123}
124/*****************************************************************************/
125
126/*****************************************************************************/
Header file for libtpcmodel.
double p50Mb
Definition o2.c:16
double nHb
Definition o2.c:18
double mo2pO2(const double OER, const double K1k2, const double SaO2, const double p50Mb, const double cHb, const double cMb, const int verbose)
Definition o2.c:83
double mo2k1k2(const double OER, const double SaO2, const double p50Hb, const double p50Mb, const double nHb, const double cHb, const double cMb, const int verbose)
Calculates K1/k2 ratio for [O-15]O2 in muscle, based on OER.
Definition o2.c:29
double p50Hb
Definition o2.c:14
double cHb
Definition o2.c:20
double SaO2
Definition o2.c:12
double cMb
Definition o2.c:22