mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Cleanup: pass gasmix by value
In a previous commit, the get_gasmix_* functions were changed to return by value. For consistency, also pass gasmix by value. Note that on common 64-bit platforms struct gasmix is the size of a pointer [2 * 32 bit vs. 64 bit] and therefore uses the same space on the stack. On 32-bit platforms, the stack use is probably doubled, but in return a dereference is avoided. Supporting arbitrary gas-mixes (H2, Ar, ...) will be such an invasive change that going back to pointers is probably the least of our worries. This commit is a step in const-ifying input parameters (passing by value is the ultimate way of signaling that the input parameter will not be changed [unless there are references to said parameter]). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
5c4569247a
commit
360f07e453
28 changed files with 214 additions and 215 deletions
|
@ -26,7 +26,7 @@
|
|||
* NOTE! Helium coefficients are a linear mix operation between the
|
||||
* 323K and one for 273K isotherms, to make everything be at 300K.
|
||||
*/
|
||||
double gas_compressibility_factor(struct gasmix *gas, double bar)
|
||||
double gas_compressibility_factor(struct gasmix gas, double bar)
|
||||
{
|
||||
static const double o2_coefficients[3] = {
|
||||
-7.18092073703e-04,
|
||||
|
@ -69,15 +69,15 @@ double gas_compressibility_factor(struct gasmix *gas, double bar)
|
|||
/* Compute the new pressure when compressing (expanding) volome v1 at pressure p1 bar to volume v2
|
||||
* taking into account the compressebility (to first order) */
|
||||
|
||||
double isothermal_pressure(struct gasmix *gas, double p1, int volume1, int volume2)
|
||||
double isothermal_pressure(struct gasmix gas, double p1, int volume1, int volume2)
|
||||
{
|
||||
double p_ideal = p1 * volume1 / volume2 / gas_compressibility_factor(gas, p1);
|
||||
|
||||
return p_ideal * gas_compressibility_factor(gas, p_ideal);
|
||||
}
|
||||
|
||||
inline double gas_density(struct gasmix *gas, int pressure) {
|
||||
int density = gas->he.permille * HE_DENSITY + gas->o2.permille * O2_DENSITY + (1000 - gas->he.permille - gas->o2.permille) * N2_DENSITY;
|
||||
inline double gas_density(struct gasmix gas, int pressure) {
|
||||
int density = gas.he.permille * HE_DENSITY + gas.o2.permille * O2_DENSITY + (1000 - gas.he.permille - gas.o2.permille) * N2_DENSITY;
|
||||
|
||||
return density * (double) pressure / gas_compressibility_factor(gas, pressure / 1000.0) / SURFACE_PRESSURE / 1000000.0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue