Courses: The GoldSim Contaminant Transport Module:

Unit 7 - Modeling Complex Transport Processes in Environmental Compartments

Lesson 5 - Representing Solubility Constraints

In many cases, we are interested in modeling solutes that are present at relatively low concentrations (and all the Examples and Exercises we have looked at so far involved such solutes).  In some cases, however, at some locations in the system the solutes may be present at high enough concentrations such that they precipitate out of solution (i.e., exist in both a dissolved state as well as a solid or liquid state). For example, an anion like Ca2+ could precipitate out to form the solid calcite or an organic compound may be present in such quantities that it cannot totally dissolve and some would be present as a separate liquid phase.

In these situations, the solute concentration is fixed at a solubility limit. As long as the solid (or in the case of the organic, pure liquid) phase exists, the solute will be present at the solubility limit.  It can drop below the solubility limit (e.g., if all of the solid or liquid phase is removed and the water is subsequently mixed with water at a lower concentration), but (except under very special circumstances) cannot exceed the solubility limit.

This process can have an enormous impact on mass transport, since it limits the dissolved concentration (and hence impacts the advective and diffusive flux) of contaminants through a system. In fact, solubility plays the key role in many treatment processes (chemicals are added to cause precipitation and/or sorption and then the solid is removed from the system).

In many systems, the concentration of the contaminant at its source (e.g., in an engineered disposal facility) is effectively fixed by solubility constraints.  Ignoring these in a model could overestimate the actual concentration by many orders of magnitude.

Of course, modeling the chemical processes controlling solubility can be quite complex.  For some applications, it may be necessary to model the various geochemical processes in great detail. GoldSim itself cannot carry out detailed geochemical calculations (it does not have a database of geochemical data, nor does it “understand” the various chemical reactions). You could, however, dynamically link GoldSim to a tool that specifically does so. Doing so, however, is quite complex and would require very advanced GoldSim (as well as geochemical) skills, and we will not discuss this again until the final Unit. 

In many cases, however, such an approach may not be necessary or appropriate at all. A simpler approach, such as specifying a solubility value for each species that you are modelling (representing it as a constant, or describing how it changes temporally and spatially) may be appropriate. GoldSim does support this approach and that is what we will discuss in this Lesson.

To illustrate how this is done, we will explore a very simple example model. This model, named ExampleCT13_Solubility.gsm, can be found in the “Examples” subfolder of the “Contaminant Transport Course” folder. Open it now.

This model has two Cells, Cell1 and a Sink:

Open up Cell1:

The Cell contains Water and Sand (whose values are constant), and has an Initial Inventory of 100 g (as we shall see, for each of three different species). If you go to the Outflows tab, you will see that there is a constant outflow from Cell1 to Sink (of 0.1 m3/day).

Go inside the Material Container and open the Species element.  You will see that there are three species (A, B and C).  None of them decay. 

Close the Species element and open the Water element (the Reference Fluid):

Solubilities are a property of the Reference Fluid in GoldSim. Solubilities need to be entered for every species. That is, we need to enter them as a vector of Species.

Note: If your list of species included isotopes of the same element, you would need to specify Solubilities for every element (rather than species).   This is because they are actually an elemental property, as opposed to a species property (solubilities are “shared” across all isotopes of the same element). That is, they would need to be entered as a vector of Elements. If you are not simulating isotopes (and we are not in this example), however, you need not be concerned with this, and they can be entered as a vector of Species. We will discuss entering these as a vector of Elements (when simulating isotopes) in Unit 10.

As was discussed in Unit 5, Lesson 6, media properties like Solubilities can be defined locally (which means that you can edit them directly from a pop-up dialog accessed by pressing the Edit… button to the right of the input field).  However, you will rarely want to do that (and that is not what was done here).  This is because it is much better to create a single element (a vector) containing all of the values, as opposed to entering each separately in this dialog. As can be seen, an element named “Solubility” was created (you can find it in the Inputs Container) and entered here. If you look at that element, you will see that it is a vector of Species, with the values defined as follows:

Note that the first two species (A and B)  have a defined solubility (of 7 mg/l and 6 mg/l, respectively), and the third one (C) has a solubility of -1 mg/l.  What does a negative solubility mean? This is the default setting for all solubilities. GoldSim interprets a negative solubility as indicating that the species (or element) is infinitely soluble (i.e., no solubility constraint will be applied).

It should also be noted that although the Cell contains Sand, the Sand itself has zero partition coefficients for all of the species (i.e., none of the species partition onto the Sand).

So in this simple model, we start with the same initial mass for all three species, and they are flushed out of the Cell with a constant outflow rate.  We therefore expect the amount of mass of all three species in the Cell to decrease with time as the mass is flushed out of the Cell.

Before looking at the results, let’s refresh our memory on the governing equations for such a model. Recalling our discussion from Unit 6, Lesson 5, we know that the governing equation for Cell1 is simply:

In this equation, Mi is the mass of species i in the Cell, Ci is the concentration (in water), and Q is the flow rate. So how do solubility constraints impact this equation? Normally, the concentration would simply be computed as Mi/V, where V is the volume of water (the equation would be a bit more complicated if the species partitioned onto solids, but in this model, the partition coefficients are zero). But if a species has a defined solubility, the following equation is used:

where Csoli is the solubility of species i.  Hence, solubility constraints can act to limit the concentration, which in turn limits the mass transfer rate out of the Cell.

Note: When simulating isotopes of the same element, Csoli is actually computed as a function of the amount of mass of all isotopes of the element present at that location (since the solubility is "shared" among the isotopes). This results in the governing equation being non-linear.

Run the model now and double-click on the Time History Result element named “Mass” (which plots the mass of all three species in the Cell):

As can be seen, all three species start at 100 g, but C decreases at the fastest rate, and B decreases at the slowest rate.  To understand why this is the case, double-click on the Time History Result element named “Concentration in Water” (which plots the concentration of all three species in Water in the Cell):

Species C has an infinite solubility, so its concentration is never limited.  As a result, the mass transfer rate from the Cell is never limited.  Species A has a solubility of 7 mg/l, and for approximately the first 43 days of the simulation (until enough mass has been flushed out such that the concentration drops below the solubility limit), the concentration is limited to this value (hence limiting the mass transfer rate). Species B has a solubility of 6 mg/l, and for approximately the first 68 days of the simulation, the concentration is limited to this value (hence limiting the mass transfer rate even more).

We can also plot the actual mass transfer rate from Cell1 to the Sink (we discussed how to do this in Unit 6, Lesson 5).  To do so, double-click on the Time History Result element named “Mass Transfer Rate”.  You will see that the shape of the curves are identical to those in the concentration plot (since the flow rate is constant):

Now open Cell1 again.  You will notice that at the bottom of the dialog, the checkbox Output Precipitated Mass is checked.  Because of this, GoldSim is not only saving the total mass in the Cell, but also just the precipitated mass.  In fact, you can see this if you click the output port for the Cell (to see all of the outputs):

Now double-click on the Time History Result element named “Precipitated Mass”:

As can be seen, the value is always zero for Species C, and has a highest value for species B (which has a lower solubility than species A).  The amount of precipitated mass for A and B decrease linearly until the species are no longer controlled by solubility.  This happens at about 43 days for A and 68 days for B (which is consistent with the concentration plot we looked at previously).

When this mass precipitates, it is no longer in the water, so where does it go? If any Solids are present in the Cell, the mass is assumed to be precipitated onto those solids. (If multiple Solids are present, the mass is distributed among the Solids based on the quantity of Solids present). We can see this if we plot the concentration on the solid (by double-clicking on the Time History Result element named “Concentration in Sand”:

Note that the precipitated mass results in a Sand concentration (in a way that exactly mimics the amount of precipitated mass we viewed previously).  When there is no precipitated mass remaining, the Sand concentration is zero.  Recall that the species all had zero partition coefficients. Had they had non-zero partition coefficients, mass could contribute to the Sand concentration in two ways: due to partitioning and due to precipitation onto the Solid.

Note: As described in Unit 5, Lesson 7, you can specify that a Solid is suspended in the Fluid in the Cell. Note, however, that precipitated mass is assumed to be precipitated only onto those Solids that are not suspended.  That is, precipitated mass is never associated with suspended Solids. We will discuss this again later in this Unit when we describe the transport of suspended Solids.

Several additional points should be noted regarding simulating solubility constraints:

  • In many systems, solubilities will vary spatially throughout your system (e.g., due to local chemical conditions). In this case you will need to specify multiple sets of solubilities in your model and instruct GoldSim where they should be applied.  This advanced topic will be discussed in Unit 12.
  • Solubilities are one of the properties that most likely to be highly uncertain in most models.  Moreover, the solubilities of various species are likely to be correlated to some degree.  We will discuss this very important topic in Unit 12.
  • Solving the Cell equations with solubility constraints adds considerable complexity to the solution algorithm (among other things, they become non-linear).  You don’t need to be concerned with the details of this (although if you are interested, you can follow the GoldSim Help link below). However, you do need to be aware that the manner in which GoldSim solves the equations (i.e., the degree of precision in the calculations) is determined by the selected Solution precision. In fact, in some situations (most commonly, when simulating isotopes), GoldSim may have difficulty in solving the equations, in which case it will generate warning messages (which may require that you increase the Solution Precision). This is one of the reasons in the previous Lesson we recommended avoiding use of the Low Precision approach for addressing the problem associated with emptying Cells, as by doing so you lose some of the precision provided by Medium and High Precision settings when dealing with complex models (such as those with solubility constraints).
  • In this Example, we entered the solubilities as mass/volume (mg/l).  However, you may also choose to enter solubilities in terms of moles/volume (e.g., mol/l).  We will describe how to do that in the next Lesson in which we will work through an Exercise involving solubilities.