TPCCLIB
Toggle main menu visibility
Loading...
Searching...
No Matches
libtpcmodel
o2.c
Go to the documentation of this file.
1
5
/*****************************************************************************/
6
#include "
libtpcmodel.h
"
7
/*****************************************************************************/
8
9
/*****************************************************************************/
10
/* Default variables for oxygen */
12
double
SaO2
=0.97;
14
double
p50Hb
=3.6;
16
double
p50Mb
=0.319;
18
double
nHb
=2.7;
20
double
cHb
=150.0;
22
double
cMb
=4.7;
23
/*****************************************************************************/
24
25
/*****************************************************************************/
29
double
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
/*****************************************************************************/
83
double
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
/*****************************************************************************/
libtpcmodel.h
Header file for libtpcmodel.
p50Mb
double p50Mb
Definition
o2.c:16
nHb
double nHb
Definition
o2.c:18
mo2pO2
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
mo2k1k2
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
p50Hb
double p50Hb
Definition
o2.c:14
cHb
double cHb
Definition
o2.c:20
SaO2
double SaO2
Definition
o2.c:12
cMb
double cMb
Definition
o2.c:22
Generated on
for TPCCLIB by
1.17.0