mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 08:38:23 +01:00
added modify methods for restart files
This commit is contained in:
parent
1150a4a2aa
commit
fa7776b8fe
@ -2244,6 +2244,40 @@ namespace Utilities
|
||||
return phreeqc_cookie->cleanup_after_parser(parser);
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
int SB_read_modify(std::map < int, T > &m, CParser &parser)
|
||||
{
|
||||
typename std::map < int, T >::iterator it;
|
||||
|
||||
std::string key_name;
|
||||
std::string::iterator b = parser.line().begin();
|
||||
std::string::iterator e = parser.line().end();
|
||||
CParser::copy_token(key_name, b, e);
|
||||
|
||||
cxxNumKeyword nk;
|
||||
nk.read_number_description(parser);
|
||||
T * entity_ptr = Utilities::Rxn_find(m, nk.Get_n_user());
|
||||
if (!entity_ptr)
|
||||
{
|
||||
std::ostringstream errstr;
|
||||
errstr << "Could not find " << key_name << " " << nk.Get_n_user() << ", ignoring modify data.\n";
|
||||
//io->warning_msg(errstr.str().c_str());
|
||||
|
||||
// Don't throw, read data into dummy entity, then ignore
|
||||
T entity;
|
||||
entity_ptr = &entity;
|
||||
entity_ptr->read_raw(parser, false);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
entity_ptr->read_raw(parser, false);
|
||||
entity_ptr->Set_n_user(nk.Get_n_user());
|
||||
entity_ptr->Set_n_user_end(nk.Get_n_user_end());
|
||||
entity_ptr->Set_description(nk.Get_description());
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
void Rxn_mix(std::map <int, cxxMix> &mix_map, std::map < int, T > &entity_map, Phreeqc * phreeqc_cookie)
|
||||
{
|
||||
|
||||
@ -1006,6 +1006,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
Solutions[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_SOLUTION_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->Solutions, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_EXCHANGE_RAW:
|
||||
{
|
||||
cxxExchange entity(this->Get_io());
|
||||
@ -1013,6 +1018,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
Exchangers[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_EXCHANGE_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->Exchangers, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_GAS_PHASE_RAW:
|
||||
{
|
||||
cxxGasPhase entity(this->Get_io());
|
||||
@ -1020,6 +1030,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
GasPhases[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_GAS_PHASE_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->GasPhases, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_KINETICS_RAW:
|
||||
{
|
||||
cxxKinetics entity(this->Get_io());
|
||||
@ -1027,7 +1042,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
Kinetics[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
|
||||
case Keywords::KEY_KINETICS_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->Kinetics, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_EQUILIBRIUM_PHASES_RAW:
|
||||
{
|
||||
cxxPPassemblage entity(this->Get_io());
|
||||
@ -1035,7 +1054,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
PPassemblages[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
|
||||
case Keywords::KEY_EQUILIBRIUM_PHASES_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->PPassemblages, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_SOLID_SOLUTIONS_RAW:
|
||||
{
|
||||
cxxSSassemblage entity;
|
||||
@ -1043,7 +1066,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
SSassemblages[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
|
||||
case Keywords::KEY_SOLID_SOLUTIONS_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->SSassemblages, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_SURFACE_RAW:
|
||||
{
|
||||
cxxSurface entity(this->Get_io());
|
||||
@ -1051,7 +1078,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
Surfaces[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
|
||||
case Keywords::KEY_SURFACE_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->Surfaces, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_REACTION_TEMPERATURE_RAW:
|
||||
{
|
||||
cxxTemperature entity(this->Get_io());
|
||||
@ -1059,7 +1090,6 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
Temperatures[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
|
||||
case Keywords::KEY_REACTION_RAW:
|
||||
{
|
||||
cxxReaction entity;
|
||||
@ -1067,6 +1097,11 @@ cxxStorageBin::read_raw(CParser & parser)
|
||||
Reactions[entity.Get_n_user()] = entity;
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_REACTION_MODIFY:
|
||||
{
|
||||
Utilities::SB_read_modify(this->Reactions, parser);
|
||||
}
|
||||
break;
|
||||
case Keywords::KEY_MIX_RAW:
|
||||
{
|
||||
cxxMix entity;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user