-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Surface complexation functionality #254
base: main
Are you sure you want to change the base?
Conversation
c0c6895
to
b32b24a
Compare
// warning(aqueous_phases.size() > 1, | ||
// "While creating an AqueousProps object, it has been detected ", | ||
// "more than one aqueous phase in the system. The AqueousProps object " | ||
// "created will correspond to the first aqueous phase found."); | ||
const auto idx = system.phases().findWithAggregateState(AggregateState::Aqueous); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's talk about this here. The original convention was to pick the first phase with AggregateState::Aqueous
. I think this is more generic than by finding with name "AqueousPhase"
, which the user may change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree. However, is it general enough for the case when there are more then one aqueous phases. Or is this scenario is unlikely?
864bfd9
to
1be1261
Compare
…ace potential of the ComplexationSurfaceState 3) Output of the Complexation surface
…ainesThomas activity model
…complexation surface initialisation everywhere
…ComplexationProperties
…on of a single species in the `ComplexationSurfaceProps`.
…a given T, I, and sigma
…ach site is assumed as a separate phase
…e each site is assumed as a separate phase
…e complexation site that works reasonably for "metals sorption"
…tion is considered a phase and leave only those who consider sites as phases
…e surface species `ActivityModelSurfaceComplexationSiteWithDDLOld`.
…update and track the states of the sites and surface in the `extra` field
…nd phases represented by the surface sites
…rops`, `SurfacePhase`, `ActivityModelSorptionNoDDL`,
…roperties from << function to the update() method, and add python binding for added functions
3ad9909
to
018393c
Compare
This PR implements a mechanism of surface complexation on the charged surface. The surface complexation phases are formed by the species collected from the PHREEQC database. The creation of the phases replies to the functionality provided by the class
GenericPhase
.The current implementation assumes only the default surface
Hfo
with two sitesHfo_s
andHfo_w
and the species sorbed on them (defined by the PHREEQC databases).For the activity model of the surface complexation, the no double layer and double layer base on Dzombak and Morel 1990 are implemented.
Tasks:
Phases
withDoubleLayerPhase
andSurfaceComplexationPhase
classes.ComplexationSurface
,ComplexationSurfaceSite
, andDoubleLayer
classes to be used for the activity models used inDoubleLayerPhase
andSurfaceComplexationPhase
.ActivityModelSurfaceComplexation
andComplexationSurface
classes with activity models described above.DoubleLayerProps
andComplexationSurfaceProps
classes to output the properties of the double layer and complexion surface, respectively.