mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-27 20:58:47 +00:00
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:
parent
21916d67de
commit
630ec88dd4
19 changed files with 59 additions and 60 deletions
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
24
deco.c
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
2
pref.h
|
@ -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;
|
||||
|
|
10
profile.c
10
profile.c
|
@ -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) *
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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!") :
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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, "},");
|
||||
}
|
||||
|
|
|
@ -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
5
terms
|
@ -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
|
||||
|
|
6
uemis.c
6
uemis.c
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue