mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 16:44:49 +01:00
Bug showed up in PHAST. Errors in definition of surface related to mineral or kinetics were not detected.
git-svn-id: svn://136.177.114.72/svn_GW/phreeqc3/trunk@10606 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
parent
c6f09779a8
commit
4dc54757e6
58
prep.cpp
58
prep.cpp
@ -9,6 +9,7 @@
|
||||
#include "SSassemblage.h"
|
||||
#include "SS.h"
|
||||
#include "Solution.h"
|
||||
#include "cxxKinetics.h"
|
||||
/* ---------------------------------------------------------------------- */
|
||||
int Phreeqc::
|
||||
prep(void)
|
||||
@ -3655,6 +3656,23 @@ setup_surface(void)
|
||||
*/
|
||||
if (use.Get_surface_ptr()->Get_related_phases())
|
||||
{
|
||||
cxxPPassemblage *pp_ptr = Utilities::Rxn_find(Rxn_pp_assemblage_map, use.Get_n_surface_user());
|
||||
for (size_t i = 0; i < (int) use.Get_surface_ptr()->Get_surface_comps().size(); i++)
|
||||
{
|
||||
if (use.Get_surface_ptr()->Get_surface_comps()[i].Get_phase_name().size() > 0)
|
||||
{
|
||||
if (pp_ptr == NULL ||
|
||||
(pp_ptr->Get_pp_assemblage_comps().find(use.Get_surface_ptr()->Get_surface_comps()[i].Get_phase_name()) ==
|
||||
pp_ptr->Get_pp_assemblage_comps().end()))
|
||||
{
|
||||
Rxn_new_surface.insert(use.Get_n_surface_user());
|
||||
cxxSurface *surf_ptr = Utilities::Rxn_find(Rxn_surface_map, use.Get_n_surface_user());
|
||||
surf_ptr->Set_new_def(true);
|
||||
this->tidy_min_surface();
|
||||
return (FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < count_unknowns; i++)
|
||||
{
|
||||
if (x[i]->type != SURFACE_CB)
|
||||
@ -3702,7 +3720,21 @@ setup_surface(void)
|
||||
* check related kinetics
|
||||
*/
|
||||
if (use.Get_surface_ptr()->Get_related_rate())
|
||||
{
|
||||
{
|
||||
cxxKinetics *kinetics_ptr = Utilities::Rxn_find(Rxn_kinetics_map, use.Get_n_surface_user());
|
||||
for (size_t i = 0; i < (int) use.Get_surface_ptr()->Get_surface_comps().size(); i++)
|
||||
{
|
||||
if (use.Get_surface_ptr()->Get_surface_comps()[i].Get_rate_name().size() > 0)
|
||||
{
|
||||
if (kinetics_ptr == NULL ||
|
||||
(kinetics_ptr->Find(use.Get_surface_ptr()->Get_surface_comps()[i].Get_rate_name()) == NULL))
|
||||
{
|
||||
Rxn_new_surface.insert(use.Get_n_surface_user());
|
||||
this->tidy_kin_surface();
|
||||
return (FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < count_unknowns; i++)
|
||||
{
|
||||
if (x[i]->type != SURFACE_CB)
|
||||
@ -6099,6 +6131,30 @@ check_same_model(void)
|
||||
if (last_model.surface_comp[i] !=
|
||||
string_hsave(use.Get_surface_ptr()->Get_surface_comps()[i].Get_formula().c_str()))
|
||||
return (FALSE);
|
||||
if (use.Get_surface_ptr()->Get_surface_comps()[i].Get_phase_name().size() > 0)
|
||||
{
|
||||
cxxPPassemblage *pp_ptr = Utilities::Rxn_find(Rxn_pp_assemblage_map, use.Get_n_surface_user());
|
||||
if (pp_ptr == NULL || (pp_ptr->Get_pp_assemblage_comps().find(use.Get_surface_ptr()->Get_surface_comps()[i].Get_phase_name()) ==
|
||||
pp_ptr->Get_pp_assemblage_comps().end()))
|
||||
{
|
||||
Rxn_new_surface.insert(use.Get_n_surface_user());
|
||||
cxxSurface *surf_ptr = Utilities::Rxn_find(Rxn_surface_map, use.Get_n_surface_user());
|
||||
surf_ptr->Set_new_def(true);
|
||||
this->tidy_min_surface();
|
||||
return (FALSE);
|
||||
}
|
||||
}
|
||||
if (use.Get_surface_ptr()->Get_surface_comps()[i].Get_rate_name().size() > 0)
|
||||
{
|
||||
cxxKinetics *kinetics_ptr = Utilities::Rxn_find(Rxn_kinetics_map, use.Get_n_surface_user());
|
||||
if (kinetics_ptr == NULL ||
|
||||
(kinetics_ptr->Find(use.Get_surface_ptr()->Get_surface_comps()[i].Get_rate_name()) == NULL))
|
||||
{
|
||||
Rxn_new_surface.insert(use.Get_n_surface_user());
|
||||
this->tidy_kin_surface();
|
||||
return (FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (i = 0; i < (int) use.Get_surface_ptr()->Get_surface_charges().size(); i++)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user