diff --git a/phreeqcpp/Phreeqc.h b/phreeqcpp/Phreeqc.h index 75b9267e..02f4ccc9 100644 --- a/phreeqcpp/Phreeqc.h +++ b/phreeqcpp/Phreeqc.h @@ -1400,6 +1400,7 @@ protected: *---------------------------------------------------------------------- */ std::vector x; size_t count_unknowns; + size_t sit_aqueous_unknowns; size_t max_unknowns; class unknown* ah2o_unknown; diff --git a/phreeqcpp/mainsubs.cpp b/phreeqcpp/mainsubs.cpp index 2ebd8fd3..75d0a889 100644 --- a/phreeqcpp/mainsubs.cpp +++ b/phreeqcpp/mainsubs.cpp @@ -73,6 +73,11 @@ initialize(void) change_surf[0].next = TRUE; change_surf[1].cell_no = -99; change_surf[1].next = FALSE; + /* + * define constant named log_k + */ + class logk* logk_ptr = logk_store("XconstantX", TRUE); + read_log_k_only("1.0", &logk_ptr->log_k[0]); #ifdef PHREEQCI_GUI g_spread_sheet.heading = NULL; diff --git a/phreeqcpp/prep.cpp b/phreeqcpp/prep.cpp index f9d995ed..59df4ba1 100644 --- a/phreeqcpp/prep.cpp +++ b/phreeqcpp/prep.cpp @@ -1240,8 +1240,7 @@ build_model(void) } if (dl_type_x != cxxSurface::NO_DL && (/*pitzer_model == TRUE || */sit_model == TRUE)) //DL_pitz { - error_msg("-diffuse_layer option not available for Pizer or SIT model", - STOP); + warning_msg("-diffuse_layer option not tested for SIT model"); } /* * Sum diffuse layer water into hydrogen and oxygen mass balances @@ -1285,6 +1284,7 @@ build_model(void) k++; count_unknowns++; } + sit_aqueous_unknowns = count_unknowns - j0; } /* * Rewrite phases to current master species diff --git a/phreeqcpp/sit.cpp b/phreeqcpp/sit.cpp index 6268e450..27825c26 100644 --- a/phreeqcpp/sit.cpp +++ b/phreeqcpp/sit.cpp @@ -1117,7 +1117,8 @@ model_sit(void) { count_basis_change++; - count_unknowns -= (int)this->s_x.size(); + //count_unknowns -= (int)this->s_x.size(); + count_unknowns -= sit_aqueous_unknowns; reprep(); full_pitzer = false; } diff --git a/phreeqcpp/spread.cpp b/phreeqcpp/spread.cpp index 03cf4439..967c1c9f 100644 --- a/phreeqcpp/spread.cpp +++ b/phreeqcpp/spread.cpp @@ -1136,7 +1136,7 @@ copy_token_tab(std::string& token, const char **cptr) * EOL, * UNKNOWN. */ - int i, j, return_value; + int i, return_value; char c; /* * Strip leading spaces diff --git a/phreeqcpp/tidy.cpp b/phreeqcpp/tidy.cpp index 18c5adca..4c95089b 100644 --- a/phreeqcpp/tidy.cpp +++ b/phreeqcpp/tidy.cpp @@ -1824,7 +1824,9 @@ tidy_punch(void) for (size_t i = 0; i < current_selected_output->Get_totals().size(); i++) { std::pair< std::string, void *> &pair_ptr = current_selected_output->Get_totals()[i]; - pair_ptr.second = master_bsearch(pair_ptr.first.c_str()); + std::string noplus = pair_ptr.first; + replace(noplus, "+", ""); + pair_ptr.second = master_bsearch(noplus.c_str()); } /* molalities */ @@ -3800,6 +3802,21 @@ tidy_min_surface(void) */ for (int jj = 0; jj < count_elts; jj++) { + if (elt_list[jj].elt->primary == NULL) + { + error_string = sformatf("Primary master species missing for %s", + elt_list[jj].elt->name); + error_msg(error_string, CONTINUE); + break; + } + if (elt_list[jj].elt->primary->s == NULL) + { + error_string = sformatf( + "Species missing for %s", elt_list[jj].elt->name); + error_msg(error_string, CONTINUE); + break; + } + if (elt_list[jj].elt->primary->s->type != SURF && elt_list[jj].coef < 0 //&& elt_list[jj].elt->primary->s != s_hplus