From bc9ab58d16539fa4c3580b66a7cd309db1c3568e Mon Sep 17 00:00:00 2001 From: Darth Vader Date: Tue, 7 Mar 2023 01:00:20 +0000 Subject: [PATCH] Squashed 'phreeqcpp/' changes from 0b60d1a..f8cd55c f8cd55c Merge branch 'master' of code.chs.usgs.gov:coupled/phreeqc3 56731ea updated RELEASE.TXT, revised PR_P and PR_PHI functions and the test case PR_error_incremental 35190be added Thermoddem database. Fixed error in PR_P and PR_PHI. Added test case to check PR_P and PR_PHI are fixed. git-subtree-dir: phreeqcpp git-subtree-split: f8cd55c27c133f195a16f21cb6e07a46d280b2f3 --- basicsubs.cpp | 87 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 28 deletions(-) diff --git a/basicsubs.cpp b/basicsubs.cpp index 69eed0ed..1a6d11df 100644 --- a/basicsubs.cpp +++ b/basicsubs.cpp @@ -1676,26 +1676,41 @@ molality(const char *species_name) } /* ---------------------------------------------------------------------- */ LDBLE Phreeqc:: -pr_pressure(const char *phase_name) +pr_pressure(const char* phase_name) /* ---------------------------------------------------------------------- */ { - class phase *phase_ptr; - int l; - phase_ptr = phase_bsearch(phase_name, &l, FALSE); - if (phase_ptr == NULL) + cxxGasPhase* gas_phase_ptr = use.Get_gas_phase_ptr(); + if (gas_phase_ptr != NULL) { - error_string = sformatf( "Gas %s, not found.", phase_name); - warning_msg(error_string); - return (1e-99); + int l; + class phase* phase_ptr = phase_bsearch(phase_name, &l, FALSE); + if (phase_ptr == NULL) + { + error_string = sformatf("Gas %s, not found.", phase_name); + warning_msg(error_string); + return (1e-99); + } + for (size_t i = 0; i < gas_phase_ptr->Get_gas_comps().size(); i++) + { + const cxxGasComp* gas_comp_ptr = &(gas_phase_ptr->Get_gas_comps()[i]); + int j; + class phase* phase_ptr_gas = phase_bsearch(gas_comp_ptr->Get_phase_name().c_str(), &j, FALSE); + if (phase_ptr == phase_ptr_gas) + { + if (gas_phase_ptr->Get_pr_in()) + { + return phase_ptr->pr_p; + } + else + { + return gas_comp_ptr->Get_p(); + } + } + } } - else if (phase_ptr->in != FALSE && phase_ptr->pr_in) - { - return phase_ptr->pr_p; - } - return (0.0); + return(0.0); } - /* ---------------------------------------------------------------------- */ LDBLE Phreeqc:: pressure(void) @@ -1703,26 +1718,42 @@ pressure(void) { return (patm_x); } + /* ---------------------------------------------------------------------- */ LDBLE Phreeqc:: -pr_phi(const char *phase_name) +pr_phi(const char* phase_name) /* ---------------------------------------------------------------------- */ { - class phase *phase_ptr; - int l; - - phase_ptr = phase_bsearch(phase_name, &l, FALSE); - if (phase_ptr == NULL) + cxxGasPhase* gas_phase_ptr = use.Get_gas_phase_ptr(); + if (gas_phase_ptr != NULL) { - error_string = sformatf( "Gas %s, not found.", phase_name); - warning_msg(error_string); - return (1e-99); + int l; + class phase* phase_ptr = phase_bsearch(phase_name, &l, FALSE); + if (phase_ptr == NULL) + { + error_string = sformatf("Gas %s, not found.", phase_name); + warning_msg(error_string); + return (1e-99); + } + for (size_t i = 0; i < gas_phase_ptr->Get_gas_comps().size(); i++) + { + const cxxGasComp* gas_comp_ptr = &(gas_phase_ptr->Get_gas_comps()[i]); + int j; + class phase* phase_ptr_gas = phase_bsearch(gas_comp_ptr->Get_phase_name().c_str(), &j, FALSE); + if (phase_ptr == phase_ptr_gas) + { + if (gas_phase_ptr->Get_pr_in()) + { + return phase_ptr->pr_phi; + } + else + { + return gas_comp_ptr->Get_phi(); + } + } + } } - else if (phase_ptr->in != FALSE && phase_ptr->pr_in) - { - return phase_ptr->pr_phi; - } - return (1.0); + return(1.0); } /* ---------------------------------------------------------------------- */ LDBLE Phreeqc::