Be more consistent in partial pressure naming

Lets just use pO₂ instead of PO2, ppO2, ppO₂, PO₂.
They all mean the same, but it's better to be
consistent

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Henrik Brautaset Aronsen 2014-06-22 16:41:44 +02:00 committed by Dirk Hohndel
parent 21916d67de
commit 630ec88dd4
19 changed files with 59 additions and 60 deletions

View file

@ -911,7 +911,7 @@ data, one record per line. CSV files can be opened with a normal text editor.
Following is a highly simplified and shortened example of a CSV file from an
APD rebreather:
Dive Time (s) Depth (m) PPO2 - Setpoint (Bar) PPO2 - C1 Cell
Dive Time (s) Depth (m) pO₂ - Setpoint (Bar) pO₂ - C1 Cell
1 (Bar) Ambient temp. (Celsius)
0 0.0 0.70 0.81 13.1
0 1.2 0.70 0.71 13.1
@ -949,7 +949,7 @@ instance for the above example:
Time: column 1
Depth: column 2
Temperature: column 5
ppO2: column 4
pO₂: column 4
Armed with this information, importing the data into _Subsurface_ is
straightforward. Select
@ -1965,7 +1965,7 @@ specified in the _Preferences_ panel of _Subsurface_.
been activated on the left part of the *Dive Profile* panel.
- Ensure that the appropriate button(s) for the display of the partial pressures of gases
(PO2, PN2, PHe) have been activated on the left part of the *Dive Profile* panel.
(pO₂, pN₂, pHe) have been activated on the left part of the *Dive Profile* panel.
The dive profile is shown in conjunction with the relevant dive ceiling. The dive profile
should not closely approach the calculated ceiling. The partial gas pressures selected for

View file

@ -866,7 +866,7 @@ a un registro por línea. Los archivos CSV pueden abrirse con cualquier editor d
texto. A continuación un ejemplo muy simplificado y acortado de un archivo CSV
de un rebreather aPD:
Dive Time (s) Depth (m) PPO2 - Setpoint (Bar) PPO2 - C1 ...
Dive Time (s) Depth (m) pO₂ - Setpoint (Bar) pO₂ - C1 ...
0 0.0 0.70 0.81 13.1
0 1.2 0.70 0.71 13.1
0 0.0 0.70 0.71 13.1
@ -900,7 +900,7 @@ ejemplo anterior:
Time: columna 1
Depth: columna 2
Temperature: columna 5
ppO2: columna 4
pO₂: columna 4
Armado con esta información, importar en _Subsurface_ es muy fácil. Selecciona
_Importar→Importar CSV_ en el menú principal. Aparecerá el siguiente dialogo:

View file

@ -66,7 +66,7 @@ New in version 4.1 (compared to Subsurface 4.0.3):
Known issues:
- (Windows specific) Many Windows fonts don't support specific characters,
specifically subscript "2" (eg in pO2). New installations of Subsurface
specifically subscript "2" (eg in pO). New installations of Subsurface
will automatically pick a font that contains this character, but if you
had Subsurface installed on a specific system before, it likely has
saved the previous font in its settings. In that case the best solution
@ -192,16 +192,16 @@ New in version 3.1 (compared to Subsurface 3.0.2):
New in version 3.0.2 (compared to Subsurface 3.0.1):
----------------------------------------------------
This update was mainly triggered by a bug in the handling of pO2
This update was mainly triggered by a bug in the handling of pO
values read from CCR / rebreather dive computers. This bug can lead to
incorrect data being stored in the Subsurface XML file. Installing
Subsurface 3.0.2 and re-downloading the dives will correct the
incorrect data. In order to re-download the dives connect your dive
computer (this should only affect people with certain tec dive
computers like the Shearwater Petrel or Predator that store pO2 values
read from a pO2 sensor in their dive log), open the download dialog,
computers like the Shearwater Petrel or Predator that store pO values
read from a pO sensor in their dive log), open the download dialog,
check the box "Force download of all dives" and download your
dives. After you save your data file the correct pO2 data should be
dives. After you save your data file the correct pO data should be
stored in the samples.
If you are using one of those dive computers, have saved data files
@ -268,7 +268,7 @@ New in version 3.0 (compared to Subsurface 2.1):
- TriMix support
- CCR support (fixed or variable setpoint, on dive computers that support
this)
- Optional pO2, pN2 and pHe graphs
- Optional pO₂, pN₂ and pHe graphs
- CNS tracking for supported divecomputers
- Lots of bug fixes

24
deco.c
View file

@ -177,8 +177,8 @@ double add_segment(double pressure, const struct gasmix *gasmix, int period_in_s
{
int ci;
int fo2 = get_o2(gasmix), fhe = get_he(gasmix);
double ppn2 = (pressure - WV_PRESSURE) * (1000 - fo2 - fhe) / 1000.0;
double pphe = (pressure - WV_PRESSURE) * fhe / 1000.0;
double pn2 = (pressure - WV_PRESSURE) * (1000 - fo2 - fhe) / 1000.0;
double phe = (pressure - WV_PRESSURE) * fhe / 1000.0;
if (buehlmann_config.gf_low_at_maxdepth && pressure > gf_low_pressure_this_dive)
gf_low_pressure_this_dive = pressure;
@ -188,24 +188,24 @@ double add_segment(double pressure, const struct gasmix *gasmix, int period_in_s
rel_o2_amb = ccpo2 / pressure / 1000;
f_dilutent = (1 - rel_o2_amb) / (1 - fo2 / 1000.0);
if (f_dilutent < 0) { /* setpoint is higher than ambient pressure -> pure O2 */
ppn2 = 0.0;
pphe = 0.0;
pn2 = 0.0;
phe = 0.0;
} else if (f_dilutent < 1.0) {
ppn2 *= f_dilutent;
pphe *= f_dilutent;
pn2 *= f_dilutent;
phe *= f_dilutent;
}
}
for (ci = 0; ci < 16; ci++) {
double ppn2_oversat = ppn2 - tissue_n2_sat[ci];
double pphe_oversat = pphe - tissue_he_sat[ci];
double pn2_oversat = pn2 - tissue_n2_sat[ci];
double phe_oversat = phe - tissue_he_sat[ci];
double n2_f = n2_factor(period_in_seconds, ci);
double he_f = he_factor(period_in_seconds, ci);
double n2_satmult = ppn2_oversat > 0 ? buehlmann_config.satmult : buehlmann_config.desatmult;
double he_satmult = pphe_oversat > 0 ? buehlmann_config.satmult : buehlmann_config.desatmult;
double n2_satmult = pn2_oversat > 0 ? buehlmann_config.satmult : buehlmann_config.desatmult;
double he_satmult = phe_oversat > 0 ? buehlmann_config.satmult : buehlmann_config.desatmult;
tissue_n2_sat[ci] += n2_satmult * ppn2_oversat * n2_f;
tissue_he_sat[ci] += he_satmult * pphe_oversat * he_f;
tissue_n2_sat[ci] += n2_satmult * pn2_oversat * n2_f;
tissue_he_sat[ci] += he_satmult * phe_oversat * he_f;
}
return tissue_tolerance_calc(dive);
}

View file

@ -1727,7 +1727,7 @@ extern int dm4_events(void *handle, int columns, char **data, char **column)
cur_event.name = strdup("OLF");
break;
case 12:
/* 12 High ppO2 */
/* 12 High pO₂ */
cur_event.name = strdup("PO2");
break;
case 13:

View file

@ -116,14 +116,14 @@ int get_gasidx(struct dive *dive, struct gasmix *mix)
return -1;
}
double interpolate_transition(struct dive *dive, int t0, int t1, int d0, int d1, const struct gasmix *gasmix, int ppo2)
double interpolate_transition(struct dive *dive, int t0, int t1, int d0, int d1, const struct gasmix *gasmix, int po2)
{
int j;
double tissue_tolerance = 0.0;
for (j = t0; j < t1; j++) {
int depth = interpolate(d0, d1, j - t0, t1 - t0);
tissue_tolerance = add_segment(depth_to_mbar(depth, dive) / 1000.0, gasmix, 1, ppo2, dive);
tissue_tolerance = add_segment(depth_to_mbar(depth, dive) / 1000.0, gasmix, 1, po2, dive);
}
return tissue_tolerance;
}

2
pref.h
View file

@ -23,7 +23,7 @@ struct preferences {
double font_size;
partial_pressure_graphs_t pp_graphs;
short mod;
double modppO2;
double modpO2;
short ead;
short dcceiling;
short redceiling;

View file

@ -1141,7 +1141,7 @@ static void calculate_gas_information_new(struct dive *dive, struct plot_info *p
fhe = get_he(&dive->cylinder[cylinderindex].gasmix);
if (entry->po2) {
/* we have an O2 partial pressure in the sample - so this
/* we have an O partial pressure in the sample - so this
* is likely a CC dive... use that instead of the value
* from the cylinder info */
if (entry->po2 >= amb_pressure || fo2 == 1000) {
@ -1160,10 +1160,10 @@ static void calculate_gas_information_new(struct dive *dive, struct plot_info *p
/* Calculate MOD, EAD, END and EADD based on partial pressures calculated before
* so there is no difference in calculating between OC and CC
* END takes O2 + N2 (air) into account ("Narcotic" for trimix dives)
* EAD just uses N2 ("Air" for nitrox dives) */
pressure_t modppO2 = { .mbar = (int) (prefs.modppO2 * 1000) };
entry->mod = (double) gas_mod(&dive->cylinder[cylinderindex].gasmix, modppO2).mm;
* END takes O + N (air) into account ("Narcotic" for trimix dives)
* EAD just uses N ("Air" for nitrox dives) */
pressure_t modpO2 = { .mbar = (int) (prefs.modpO2 * 1000) };
entry->mod = (double) gas_mod(&dive->cylinder[cylinderindex].gasmix, modpO2).mm;
entry->end = (entry->depth + 10000) * (1000 - fhe) / 1000.0 - 10000;
entry->ead = (entry->depth + 10000) * (1000 - fo2 - fhe) / (double)N2_IN_AIR - 10000;
entry->eadd = (entry->depth + 10000) *

View file

@ -600,11 +600,11 @@ bool DivePlannerPointsModel::addGas(struct gasmix mix)
if (cylinder_nodata(cyl)) {
fill_default_cylinder(cyl);
cyl->gasmix = mix;
/* The depth to change to that gas is given by the depth where its pO2 is 1.6 bar.
/* The depth to change to that gas is given by the depth where its pO is 1.6 bar.
* The user should be able to change this depth manually. */
pressure_t modppO2;
modppO2.mbar = 1600;
cyl->depth = gas_mod(&mix, modppO2);
pressure_t modpO2;
modpO2.mbar = 1600;
cyl->depth = gas_mod(&mix, modpO2);
CylindersModel::instance()->setDive(stagingDive);
return true;
}

View file

@ -249,9 +249,9 @@ bool CylindersModel::setData(const QModelIndex &index, const QVariant &value, in
case O2:
if (CHANGED()) {
cyl->gasmix.o2 = string_to_fraction(vString.toUtf8().data());
pressure_t modppO2;
modppO2.mbar = 1600;
cyl->depth = gas_mod(&cyl->gasmix, modppO2);
pressure_t modpO2;
modpO2.mbar = 1600;
cyl->depth = gas_mod(&cyl->gasmix, modpO2);
changed = true;
}
break;

View file

@ -65,14 +65,14 @@
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string> bottom ppO2</string>
<string> bottom pO₂</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>deco ppO2</string>
<string>deco pO₂</string>
</property>
</widget>
</item>

View file

@ -54,7 +54,7 @@ void PreferencesDialog::setUiFromPrefs()
ui.pheThreshold->setValue(prefs.pp_graphs.phe_threshold);
ui.po2Threshold->setValue(prefs.pp_graphs.po2_threshold);
ui.pn2Threshold->setValue(prefs.pp_graphs.pn2_threshold);
ui.maxppo2->setValue(prefs.modppO2);
ui.maxpo2->setValue(prefs.modpO2);
ui.red_ceiling->setChecked(prefs.redceiling);
ui.units_group->setEnabled(ui.personalize->isChecked());
@ -187,7 +187,7 @@ void PreferencesDialog::syncSettings()
s.setValue("phethreshold", ui.pheThreshold->value());
s.setValue("po2threshold", ui.po2Threshold->value());
s.setValue("pn2threshold", ui.pn2Threshold->value());
s.setValue("modppO2", ui.maxppo2->value());
s.setValue("modpO2", ui.maxpo2->value());
SB("redceiling", ui.red_ceiling);
s.setValue("gflow", ui.gflow->value());
s.setValue("gfhigh", ui.gfhigh->value());
@ -280,7 +280,7 @@ void PreferencesDialog::loadSettings()
GET_DOUBLE("pn2threshold", pp_graphs.pn2_threshold);
GET_DOUBLE("phethreshold", pp_graphs.phe_threshold);
GET_BOOL("mod", mod);
GET_DOUBLE("modppO2", modppO2);
GET_DOUBLE("modpO2", modpO2);
GET_BOOL("ead", ead);
GET_BOOL("redceiling", redceiling);
GET_BOOL("dcceiling", dcceiling);

View file

@ -633,12 +633,12 @@
<bool>true</bool>
</property>
<property name="text">
<string>max ppO₂ when showing MOD</string>
<string>max pO₂ when showing MOD</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="maxppo2">
<widget class="QDoubleSpinBox" name="maxpo2">
<property name="enabled">
<bool>true</bool>
</property>

View file

@ -92,7 +92,7 @@ void DiveEventItem::setupToolTipString()
}
} else if (type == SAMPLE_EVENT_PO2 && name == "SP change") {
// this is a bad idea - we are abusing an existing event type that is supposed to
// warn of high or low PO2 and are turning it into a set point change event
// warn of high or low pO₂ and are turning it into a set point change event
name += "\n" + tr("Bailing out to OC");
} else {
name += internalEvent->flags == SAMPLE_FLAGS_BEGIN ? tr(" begin", "Starts with space!") :

View file

@ -104,7 +104,7 @@ QVariant DivePlotDataModel::headerData(int section, Qt::Orientation orientation,
case CYLINDERINDEX:
return tr("Cylinder Index");
case SENSOR_PRESSURE:
return tr("Pressure S");
return tr("Pressure S");
case INTERPOLATED_PRESSURE:
return tr("Pressure I");
case CEILING:
@ -112,11 +112,11 @@ QVariant DivePlotDataModel::headerData(int section, Qt::Orientation orientation,
case SAC:
return tr("SAC");
case PN2:
return tr("PN2");
return tr("pN₂");
case PHE:
return tr("PHE");
return tr("pHe");
case PO2:
return tr("PO2");
return tr("pO₂");
}
if (role == Qt::DisplayRole && section >= TISSUE_1 && section <= TISSUE_16) {
return QString("Ceiling: %1").arg(section - TISSUE_1);

View file

@ -33,9 +33,9 @@ static void put_cylinder_HTML(struct membuffer *b, struct dive *dive)
put_pressure(b, cylinder->end, "\"EPressure\":\"", " bar\",");
if (cylinder->gasmix.o2.permille) {
put_format(b, "\"O2\":\"%u.%u%%\",", FRACTION(cylinder->gasmix.o2.permille, 10));
put_format(b, "\"O\":\"%u.%u%%\",", FRACTION(cylinder->gasmix.o2.permille, 10));
} else {
write_attribute(b, "O2", "--");
write_attribute(b, "O", "--");
}
put_string(b, "},");
}

View file

@ -16,7 +16,7 @@ struct preferences default_prefs = {
.phe_threshold = 13.0,
},
.mod = false,
.modppO2 = 1.6,
.modpO2 = 1.6,
.ead = false,
.hrgraph = true,
.dcceiling = true,

5
terms
View file

@ -18,9 +18,8 @@ CNS Central Nervous System Oxygen Toxicity - a
maxCNS the highest CNS value during a dive
PO2, PN2, PHe These are all partial pressures of the three
PO₂, PN₂ gases Oxygen (O2 or O₂), Nitrogen (N2 or N₂)
and Helium (He).
pO₂, pN₂, pHe These are all partial pressures of the three
gases Oxygen (O₂), Nitrogen (N₂) and Helium (He).
O₂%, He% The fraction of Oxygen and Helium in a gas.
The partial pressure is therefore the pressure

View file

@ -200,12 +200,12 @@ static void uemis_event(struct dive *dive, struct divecomputer *dc, struct sampl
if (flags[1] & 0x06) /* both bits 1 and 2 are a warning */
add_event(dc, sample->time.seconds, 0, 0, 0, QT_TRANSLATE_NOOP("gettextFromC", "Speed Warning"));
if (flags[1] & 0x10)
add_event(dc, sample->time.seconds, 0, 0, 0, QT_TRANSLATE_NOOP("gettextFromC", "PO2 Green Warning"));
add_event(dc, sample->time.seconds, 0, 0, 0, QT_TRANSLATE_NOOP("gettextFromC", "pO₂ Green Warning"));
#endif
if (flags[1] & 0x20)
add_event(dc, sample->time.seconds, 0, 0, 0, QT_TRANSLATE_NOOP("gettextFromC", "PO2 Ascend Warning"));
add_event(dc, sample->time.seconds, 0, 0, 0, QT_TRANSLATE_NOOP("gettextFromC", "pO₂ Ascend Warning"));
if (flags[1] & 0x40)
add_event(dc, sample->time.seconds, 0, 0, 0, QT_TRANSLATE_NOOP("gettextFromC", "PO2 Ascend Alarm"));
add_event(dc, sample->time.seconds, 0, 0, 0, QT_TRANSLATE_NOOP("gettextFromC", "pO₂ Ascend Alarm"));
/* flags[2] reflects the deco / time bar
* flags[3] reflects more display details on deco and pO2 */
if (flags[4] & 0x01)