mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 16:44:49 +01:00
Added delta_h_species, delta_h_phase, dh_a0, dh_bdot Basic functions
This commit is contained in:
parent
81e862db5d
commit
fcee4d5da4
45
PBasic.cpp
45
PBasic.cpp
@ -1387,6 +1387,22 @@ listtokens(FILE * f, tokenrec * l_buf)
|
||||
output_msg("LK_SPECIES");
|
||||
break;
|
||||
|
||||
case tokdelta_h_species:
|
||||
output_msg("DELTA_H_SPECIES");
|
||||
break;
|
||||
|
||||
case tokdelta_h_phase:
|
||||
output_msg("DELTA_H_PHASE");
|
||||
break;
|
||||
|
||||
case tokdh_a0:
|
||||
output_msg("DH_A0");
|
||||
break;
|
||||
|
||||
case tokdh_bdot:
|
||||
output_msg("DH_BDOT");
|
||||
break;
|
||||
|
||||
case toklk_named:
|
||||
output_msg("LK_NAMED");
|
||||
break;
|
||||
@ -2457,6 +2473,31 @@ factor(struct LOC_exec * LINK)
|
||||
}
|
||||
break;
|
||||
|
||||
case tokdelta_h_phase:
|
||||
{
|
||||
const char* str = stringfactor(STR1, LINK);
|
||||
n.UU.val = (parse_all) ? 1 : PhreeqcPtr->calc_deltah_p(str);
|
||||
}
|
||||
break;
|
||||
|
||||
case tokdelta_h_species:
|
||||
{
|
||||
const char* str = stringfactor(STR1, LINK);
|
||||
n.UU.val = (parse_all) ? 1 : PhreeqcPtr->calc_deltah_s(str);
|
||||
}
|
||||
break;
|
||||
case tokdh_a0:
|
||||
{
|
||||
const char* str = stringfactor(STR1, LINK);
|
||||
n.UU.val = (parse_all) ? 1 : PhreeqcPtr->dh_a0(str);
|
||||
}
|
||||
break; case tokdh_bdot:
|
||||
{
|
||||
const char* str = stringfactor(STR1, LINK);
|
||||
n.UU.val = (parse_all) ? 1 : PhreeqcPtr->dh_bdot(str);
|
||||
}
|
||||
break;
|
||||
|
||||
case toklk_named:
|
||||
{
|
||||
const char* str = stringfactor(STR1, LINK);
|
||||
@ -7416,7 +7457,11 @@ const std::map<const std::string, PBasic::BASIC_TOKEN>::value_type temp_tokens[]
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("lk_species", PBasic::toklk_species),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("lk_named", PBasic::toklk_named),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("lk_phase", PBasic::toklk_phase),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("delta_h_phase", PBasic::tokdelta_h_phase),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("delta_h_species", PBasic::tokdelta_h_species),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("sum_species", PBasic::toksum_species),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("dh_a0", PBasic::tokdh_a0),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("dh_bdot", PBasic::tokdh_bdot),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("sum_gas", PBasic::toksum_gas),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("sum_s_s", PBasic::toksum_s_s),
|
||||
std::map<const std::string, PBasic::BASIC_TOKEN>::value_type("calc_value", PBasic::tokcalc_value),
|
||||
|
||||
4
PBasic.h
4
PBasic.h
@ -259,6 +259,10 @@ public:
|
||||
toklk_species,
|
||||
toklk_named,
|
||||
toklk_phase,
|
||||
tokdelta_h_phase,
|
||||
tokdelta_h_species,
|
||||
tokdh_a0,
|
||||
tokdh_bdot,
|
||||
toksum_species,
|
||||
toksum_gas,
|
||||
toksum_s_s,
|
||||
|
||||
@ -114,6 +114,10 @@ public:
|
||||
LDBLE calc_logk_n(const char *name);
|
||||
LDBLE calc_logk_p(const char *name);
|
||||
LDBLE calc_logk_s(const char *name);
|
||||
LDBLE calc_deltah_s(const char* name);
|
||||
LDBLE calc_deltah_p(const char* name);
|
||||
LDBLE dh_a0(const char* name);
|
||||
LDBLE dh_bdot(const char* name);
|
||||
LDBLE calc_surface_charge(const char *surface_name);
|
||||
LDBLE calc_t_sc(const char *name);
|
||||
LDBLE diff_layer_total(const char *total_name, const char *surface_name);
|
||||
@ -1701,7 +1705,7 @@ protected:
|
||||
bool output_newline;
|
||||
inline void Set_output_newline(bool tf) { this->output_newline = tf;}
|
||||
inline bool Get_output_newline() { return this->output_newline;}
|
||||
LDBLE *llnl_temp, *llnl_adh, *llnl_bdh, *llnl_bdot, *llnl_co2_coefs, a_llnl, b_llnl;
|
||||
LDBLE *llnl_temp, *llnl_adh, *llnl_bdh, *llnl_bdot, *llnl_co2_coefs, a_llnl, b_llnl, bdot_llnl;
|
||||
int llnl_count_temp, llnl_count_adh, llnl_count_bdh, llnl_count_bdot,
|
||||
llnl_count_co2_coefs;
|
||||
|
||||
|
||||
112
basicsubs.cpp
112
basicsubs.cpp
@ -729,6 +729,117 @@ calc_logk_s(const char *name)
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
LDBLE Phreeqc::
|
||||
dh_a0(const char* name)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
{
|
||||
char token[MAX_LENGTH];
|
||||
struct species* s_ptr;
|
||||
double a = -999.99;
|
||||
|
||||
strcpy(token, name);
|
||||
s_ptr = s_search(token);
|
||||
if (s_ptr != NULL)
|
||||
{
|
||||
a = s_ptr->dha;
|
||||
}
|
||||
return (a);
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
LDBLE Phreeqc::
|
||||
dh_bdot(const char* name)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
{
|
||||
char token[MAX_LENGTH];
|
||||
struct species* s_ptr;
|
||||
double b = -999.99;
|
||||
if (llnl_count_temp > 0)
|
||||
{
|
||||
b = bdot_llnl;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(token, name);
|
||||
s_ptr = s_search(token);
|
||||
if (s_ptr != NULL)
|
||||
{
|
||||
b = s_ptr->dhb;
|
||||
}
|
||||
}
|
||||
return (b);
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
LDBLE Phreeqc::
|
||||
calc_deltah_p(const char* name)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
{
|
||||
int i, j;
|
||||
char token[MAX_LENGTH];
|
||||
struct phase* phase_ptr;
|
||||
LDBLE lkm, lkp;
|
||||
LDBLE l_logk[MAX_LOG_K_INDICES];
|
||||
double dh = -999.99;
|
||||
strcpy(token, name);
|
||||
phase_ptr = phase_bsearch(token, &j, FALSE);
|
||||
|
||||
if (phase_ptr != NULL)
|
||||
{
|
||||
struct reaction* reaction_ptr;
|
||||
if (phase_ptr->replaced)
|
||||
reaction_ptr = phase_ptr->rxn_s;
|
||||
else
|
||||
reaction_ptr = phase_ptr->rxn;
|
||||
/*
|
||||
* Print saturation index
|
||||
*/
|
||||
reaction_ptr->logk[delta_v] = calc_delta_v(reaction_ptr, true) -
|
||||
phase_ptr->logk[vm0];
|
||||
if (reaction_ptr->logk[delta_v])
|
||||
mu_terms_in_logk = true;
|
||||
for (i = 0; i < MAX_LOG_K_INDICES; i++)
|
||||
{
|
||||
l_logk[i] = 0.0;
|
||||
}
|
||||
//lk = k_calc(reaction_ptr->logk, tk_x, patm_x * PASCAL_PER_ATM);
|
||||
select_log_k_expression(reaction_ptr->logk, l_logk);
|
||||
add_other_logk(l_logk, phase_ptr->count_add_logk, phase_ptr->add_logk);
|
||||
lkm = k_calc(l_logk, tk_x - 1.0, patm_x * PASCAL_PER_ATM);
|
||||
lkp = k_calc(l_logk, tk_x + 1.0, patm_x * PASCAL_PER_ATM);
|
||||
dh = (lkp - lkm) / 2.0 * LOG_10 * R_KJ_DEG_MOL * pow(tk_x, 2.0);
|
||||
}
|
||||
return (dh);
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
LDBLE Phreeqc::
|
||||
calc_deltah_s(const char* name)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
{
|
||||
int i;
|
||||
char token[MAX_LENGTH];
|
||||
struct species* s_ptr;
|
||||
LDBLE lkm, lkp, l_logk[MAX_LOG_K_INDICES];
|
||||
double dh = -999.99;
|
||||
strcpy(token, name);
|
||||
s_ptr = s_search(token);
|
||||
if (s_ptr != NULL)
|
||||
{
|
||||
/* calculate delta_v for the reaction... */
|
||||
s_ptr->logk[delta_v] = calc_delta_v(s_ptr->rxn, false);
|
||||
for (i = 0; i < MAX_LOG_K_INDICES; i++)
|
||||
{
|
||||
l_logk[i] = 0.0;
|
||||
}
|
||||
select_log_k_expression(s_ptr->logk, l_logk);
|
||||
mu_terms_in_logk = true;
|
||||
add_other_logk(l_logk, s_ptr->count_add_logk, s_ptr->add_logk);
|
||||
lkm = k_calc(l_logk, tk_x-1.0, patm_x * PASCAL_PER_ATM);
|
||||
lkp = k_calc(l_logk, tk_x + 1.0, patm_x * PASCAL_PER_ATM);
|
||||
dh = (lkp - lkm) / 2.0 * LOG_10 * R_KJ_DEG_MOL * pow(tk_x,2.0);
|
||||
return (dh);
|
||||
}
|
||||
return (0.0);
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
LDBLE Phreeqc::
|
||||
calc_surface_charge(const char *surface_name)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
{
|
||||
@ -738,7 +849,6 @@ calc_surface_charge(const char *surface_name)
|
||||
LDBLE charge;
|
||||
struct rxn_token_temp *token_ptr;
|
||||
struct master *master_ptr;
|
||||
|
||||
/*
|
||||
* Go through species, sum charge
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user