Michael Thomas Flanagan's Java Scientific Library

Class Donnan:      Donnan Equilibria and Donnan Potentials

     

Last update: 7 July 2008
Main Page of Michael Thomas Flanagan's Java Scientific Library

Theory Java class implementing the above theory

Model of the Donnan equilibrium used by this class

This class contains the methods needed to calculate Ions may be distributed between the two compartments with different partition coefficients. Compartment B may contain a single ionophore. One of the ionic species may bind to, or more than one of the ionic species may compete for, this ionophore's single binding site, i.e.


where there are n ionic species, Si, of which m are cationic, Si = Ci, and n-m are anionic, Si = Ai and I is the ionophore. There may be any number of anionic and catonic species as long as overall charge neutrality is maintained, i.e.


where [ST,i] is the total concentration of the ith ionic species, zi is the charge on ionic species i in signed units of electronic charge (e.g. +2 for Ca++, -1 for Cl-), [SA,i] is the concentration of the ith ionic species in compartment A, [SB,i] is the concentration of the ith ionic species in compartment B, [SC,i] is the concentration of the ith ionic species that has complexed with the ionophore, I, [CT,i] is the total concentration of the ith cationic species and [AT,i] is the total concentration of the ith anionic species. The unit of concentration used in the calculation, described on this page, is mol m-3. However, note that concentrations entered through the set methods of this class are entered as mol dm-3, i.e. as Molar concentrations.

The partition of each ionic species between compartments A and B is characterised by a partition coefficient, Pi, whose value may be provided by the user or calculated from the Born charging equation (see below).

The interaction of each ionic species with the ionophore, I, to form an ion-ionophore complex, SC,i, is characterised by an association constant, Ki, where

In many uses of this class only one or two of the ionic species will form a complex with the ionophore, i.e. most Ki = 0.

Overall charge neutrality must exist in the bulk solutions in both compartment A and Compartment B, i.e.


This requirement and the different partition coefficients and and different affinities for the ionophore, for the different ionic species, leads to the establishment of an electrochemical gradient across the interface between compartments A and B, charactertised by a potential difference, the Donnan potential, ψD. This potential will lead to a small excess charge either side of the interface.

The Partition Cofficient, Pi, for a given Donnan potential, is given by

where e is the absolute value of the quantity of charge on the electron (1.60219 X 10-19 C), k is the Boltzmann constant (1.38066 x 10-23 J/K), T is the absolute temperature and Poi is the partition coefficient in the absence of an interfacial potential. This class allows the partition coefficient in the absence of an interfacial potential, Po,i, to either be The Donnan potential gives rise to a small positive excess charge on the positive side of the interface, +σD, and an equal in magnitude, but opposite in sign, -σD, charge on the negative side. This class assumes that the distribution of ionic species in the neighbourhood of the interface obeys a Boltzmann equation, i.e.

where x is the distance from the interface, [Sx,i] is the concentration of the ith ionic species at x and ψx is the potential at x. The 'thickness' of these exponentially decaying diffuse layers may be described by their Debye lengths, δDebye, A and δDebye, B, where


The finite size of the ions will lead to a Stern layers either side of the interface with a thickness, δStern,A and δStern,B. The Donnan potential can thus be seen has dropping over three capacitors, compartment A diffuse double layer capacitance, Cdiff,A, Stern capacitance, CStern and compartment B diffuse double layer capacitance, Cdiff,B:

The diffuse double layer potentials, ψdiff,A and ψdiff,B, may be obtained by applying the Poisson-Boltzmann equation [Ref: R. Aveyard and D.A. Haydon (1973), An introduction to the principles of surface chemistry, Cambridge University Press, Chapter 2 - 'Electrical potentials at interfaces', pp 31-57] to give:


where AIF is the interfacial area between Compartments A and B and NA is Avagadro's Number (6.02205 x 1023 mol-1).
The Stern potential, ψStern, may be calculated from the Stern capacitance:


where εStern,A and εStern,B are the relative electrical permittivities in the Stern layers. Note that these may not be the same as the bulk values, e.g. water has been reported to have values of εStern in the range 5 to 10 at a silver iodide / aqueous electrolyte intetrface [Ref: Duncan J Shaw (2003) Colloid and Surface Chemistry, Butterworth-Heinemann, Fourth Edition, 'The inner part of the double layer', pp 181-185].
Each Stern Layer thickness has been approximated to the number average radius of the ions in that Stern layer:

where rionophore is the radius of a sphere equal in volume to the volume of the ionophore.

Calculation of the Donnan Potential

The Donnan potential is calculated using a Nelder and Mead simplex non-linear minimisation procedure which minimises the square of the total bulk charge in Compartment B, which should equal zero at equilibrium, i.e

Calculation of the ionic concentrations for a given estimate of ψD



The ionic concentrations are also calculated using a Nelder and Mead simplex non-linear minimisation procedure which minimises the sum of the squares of the equilibrium mass conservation equations described below, i.e In detail:



Limitations of the model

  1. Donnan Potential
    The calculation of the Donnan potential will be reasonably accurate if:
    1. Realistic partition coefficients are provided and the solutions are dilute enough for concentrations to be equivalent to activities.
      Partition coefficients calculated using the Born-charging equation will be very approximate as most liquids do not conform to a simple dielectric continuum model.
    2. The interface charge is small by comparison with the ionic concentrations.
      The calculation of the interface charge is included, as much for checking this point, as for obtaining a value in its own right as this calculation is very crude (see Section 2 below)
    3. .
    4. The width of the compartments is greater than the Debye length. This is normally the case as Debye lengths are generally very short but very thin low ionic strength films may cause problems.
  2. Interface charge
    The calculation of the interface charge is approximate as:
    1. It is based on a very simple model - the Gouy-Chapman-Stern model.
      See any standard surface physics/electrochemistry text, e.g. A J Bard and L R Faulkner, "Electrochemical Methods - Fundamentals and Applications", John Wiley and Sons, New York, 1980, Chapter 12, Double-Layer Structure and Adsorbed Intermediates in Electrode Processes, pp 488-515., for the limitations of this model.
    2. This does not detract greatly, in most situations, from the calculation of the Donnan potential as the interface ion concentration is usually a very small fraction of the total ion concentration and the inclusion of the interface charge in the calculation of the Donnan potential allows:
      • a more accurate calculation of the Donnan potential albeit a small correction.
      • an estimate of whether the interfacial charge is small and hence whether the above model is a realistic one.
      • an estimate of the surface charges, diffuse and Stern layer potential differences and capacitances though these will all be crude approximations.


Details of the Java class Donnan

import directive: import flanagan.physchem.Donnan;
Related classes

SUMMARY OF CONSTRUCTORS AND METHODS

Constructor public Donnan()
 
Interface charge options include interface charge
(default option)
public void includeInterfaceCharge()
ignore interface charge public void ignoreInterfaceCharge()
Ionic radii options
(if Born charging used or interface charge included)
hydrated radii
(default option)
public void setHydratedRadii()
bare radii public void setBareRadii()
 
Enter an ion Born charging option public void setIon(String ion, double concnA, double concnB, double assocK, double radius, int charge)
public void setIon(String ion, double concnA, double concnB, double radius, int charge)
public void setIon(String ion, double concnA, double concnB, double assocK)
public void setIon(String ion, double concnA, double concnB)
user supplied partition coefficients public void setIon(double partCoeff, String ion, double concnA, double concnB, double assocK, double radius, int charge)
public void setIon(double partCoeff, String ion, double concnA, double concnB, double radius, int charge)
public void setIon(double partCoeff, String ion, double concnA, double concnB, double assocK)
public void setIon(double partCoeff, String ion, double concnA, double concnB)
Enter the ionophore public void setIonophore(String ionophore, double concentration, double radius)
public void setIonophore(double concentration, double radius)
public void setIonophore(String ionophore, double concentration)
public void setIonophore(double concentration)
Enter volumes and interface area public void setVolumes(double volumeA, double volumeB, double area)
public void setVolumes(double volumeA, double volumeB)
Enter relative electrical permittivities public void setRelPerm(double relPermA, double relPermB, double sternPermA, double sternPermB)
public void setRelPerm(double relPermA, double relPermB)
Enter the temperature public void setTemp(double temp)
 
Enter minimisation parameters initial estimate of the Donnan potential public void setEstimate(double potential)
initial step size public void setStep(double step)
convergence tolerance public void setTolerance(double tolerance)
maximum number of iterations public void setMaxIterations(double maxN)
 
Perform calculation public double calcPotential()
 
Get the calculated potentials Donnan potential public double getDonnanPotential()
Diffuse layer potential difference public double getDiffuseLayerPotentialA()
public double getDiffuseLayerPotentialB()
Stern layer potential difference public double getSternLayerPotential()
Get the calculated concentrations Bulk concentrations public double[] getConcnA()
public double[] getConcnB()
public double[] getComplex()
Interface excess concentrations public double[] getExcessConcnA()
public double[] getExcessConcnB()
public double[] getExcessComplex()
Excess over bulk ratios public double[] getRatioA()
public double[] getRatioB()
public double[] getRatioC()
Get the calculated interface charge   public double getInterfaceCharge()
public double getInterfaceChargeDensity()
Get the calculated lengths Debye lengths public double getDebyeLengthA()
public double getDebyeLengthB()
Stern layer thicknesses public double getSternThicknessA()
public double getSternThicknessB()
Get the calculated capacitances Total interface capacitance public double getDonnanCapacitance()
Diffuse double layer capacitance public double getDiffuseLayerCapacitanceA()
public double getDiffuseLayerCapacitanceB()
Stern layer capacitance public double getSternCapacitance()
Get the calculated partition coefficients at eqilibrium public double[] getPartitionCoefficients()
at zero potential public double[] getPartitionCoefficientsZero()
Born charging energy differences public double[] getDeltaMu0
 
Write the calculation results to a text file public void printToFile(String filename)
public void printToFile()



CONSTRUCTOR

public Donnan()
Usage:                      Donnan don = new Donnan();
This creates a new instance, in this example, don, of Donnan().
On creation of this instance the following default option are automatically set:

METHODS

Set options

Interface charge

The Donnan Potential, ψD, may be calculated
 i.  by a method that includes the excess charge that arises either side of the interface between compartments A and B as a consequence of the potential drop across that interface.
or
 ii. by a method that neglects that interface charge.
The former (option i) is the default option set on creating an instance of Donnan().

public void ignoreIc()
Usage:                      don.ignoreIc();
This method sets the calculation of the Donnan potential so that the interface charge is ignored (option ii above).

public void includeIc()
Usage:                      don.includeIc();
This method resets the option to include the interface charge in the calculation of the Donnan potential (option i above).

Radii

The radii, ri, are needed if the interface charge is to be included in the calculation of the Donnan potential. They may be entered by the user or taken from the class IonicRadii. If they are taken from the class IonicRadii either the hydrated ionic radii or the bare ionic radii may be selected. The default option, set on creating an instance of Donnan(), is the hydrated radius.

public void setBareRadii()
Usage:                      don.setBareRadii();
This method sets the option to select bare radii from the class IonicRadii.

public void setHydratedRadii()
Usage:                      don.setHydratedRadii();
This method resets the option to select hydrated radii from the class IonicRadii.



Entering the details of the Donnan equilibrium to be simulated

Entering an ion

Any number of ions may be entered. There must be overall charge neutrality when all the ions have been entered.

Entering an ion when the Born charging option has been chosen
public void setIon(String ion, double concnA, double concnB, double assocK, double radius, int charge)
public void setIon(String ion, double concnA, double concnB, double radius, int charge)
public void setIon(String ion, double concnA, double concnB, double assocK)
public void setIon(String ion, double concnA, double concnB)
Usage:                      don.setIon(ionName, concnA, concnB, assocK, radius, charge);
The argument list is: Usage:                      don.setIon(ionName, concnA, concnB, radius, charge);
The arguments as above with the exception that the association constant, assocK, of the ion with the ionophore is automatically set to zero.

Usage:                      don.setIon(ionName, concnA, concnB, assocK);
The arguments as above with the exceptions that the charge is taken from the class IonicRadii and the ion name, ionName, must conform to one of the conventions used by IonicRadii, i.e. the ion should be entered as the atomic symbol [see list in IonicRadii], e.g. Ag, or symbols, e.g. NH4, followed by the signed units of charge. This combination of symbol and valency may be represented in any of the following ways, e.g. Ca(+2), Ca(2+), Ca(++), Ca+2, Ca2+ or Ca++. If the option to include the interface charge has been chosen, the radius, is also taken from the class IonicRadii. If the option to neglect the interface charge has been chosen the radius is not required.

Usage:                      don.setIon(ionName, concnA, concnB);
The arguments as above with the exceptions that the association constant, assocK, of the ion with the ionophore is automatically set to zero, that the charge is taken from the class IonicRadii and that the ion name, ionName, must conform to one of the conventions used by IonicRadii, i.e. the ion should be entered as the atomic symbol [see list in IonicRadii], e.g. Ag, or symbols, e.g. NH4, followed by the signed units of charge. This combination of symbol and valency may be represented in any of the following ways, e.g. Ca(+2), Ca(2+), Ca(++), Ca+2, Ca2+ or Ca++. If the option to include the interface charge has been chosen, the radius, is also taken from the class IonicRadii. If the option to neglect the interface charge has been chosen the radius is not required.

Entering an ion when the partition coefficient is to be entetred by the user
public void setIon(double partCoeff, String ion, double concnA, double concnB, double assocK, double radius, int charge)
public void setIon(double partCoeff, String ion, double concnA, double concnB, double radius, int charge)
public void setIon(double partCoeff, String ion, double concnA, double concnB, double assocK)
public void setIon(double partCoeff, String ion, double concnA, double concnB)
Usage:                      don.setIon(partCoeff, ionName, concnA, concnB, assocK, radius, charge);
The argument list is: Usage:                      don.setIon(partCoeff, ionName, concnA, concnB, radius, charge);
The arguments as above with the exception that the association constant, assocK, of the ion with the ionophore is automatically set to zero.

Usage:                      don.setIon(ionName, concnA, concnB, assocK);
The arguments as above with the exceptions that the charge is taken from the class IonicRadii and the ion name, ionName, must conform to one of the conventions used by IonicRadii, i.e. the ion should be entered as the atomic symbol [see list in IonicRadii], e.g. Ag, or symbols, e.g. NH4, followed by the signed units of charge. This combination of symbol and valency may be represented in any of the following ways, e.g. Ca(+2), Ca(2+), Ca(++), Ca+2, Ca2+ or Ca++. If the option to include the interface charge has been chosen, the radius, is also taken from the class IonicRadii. If the option to neglect the interface charge has been chosen the radius is not required.

Usage:                      don.setIon(partCoeff, ionName, concnA, concnB);
The arguments as above with the exceptions that the association constant, assocK, of the ion with the ionophore is automatically set to zero, that the charge is taken from the class IonicRadii and that the ion name, ionName, must conform to one of the conventions used by IonicRadii, i.e. the ion should be entered as the atomic symbol [see list in IonicRadii], e.g. Ag, or symbols, e.g. NH4, followed by the signed units of charge. This combination of symbol and valency may be represented in any of the following ways, e.g. Ca(+2), Ca(2+), Ca(++), Ca+2, Ca2+ or Ca++. If the option to include the interface charge has been chosen, the radius, is also taken from the class IonicRadii. If the option to neglect the interface charge has been chosen the radius is not required.



Entering the ionophore

public void setIonophore(String ionophore, double concentration, double radius)
public void setIonophore(double concentration, double radius)
public void setIonophore(String ionophore, double concentration)
public void setIonophore(double concentration)
Usage:                      don.setIonophore(ionophoreName, concentration, radius);
This method allows the ionophore details to be entered if the interface charge is to be included in the Donnan potential calculation. The argument list is: Usage:                      don.setIonophore(concentration, radius);
This method allows the ionophore details to be entered if the interface charge is to be included in the Donnan potential calculation. The argument list is: Usage:                      don.setIonophore(ionophoreName, concentration);
This method allows the ionophore details to be entered if the interface charge is to be neglected in the Donnan potential calculation. The argument list is: Usage:                      don.setIonophore(concentration);
This method allows the ionophore details to be entered if the interface charge is to be neglected in the Donnan potential calculation. The argument list is:

Entering the compartment volumes and interface area

public void setVolumes(double volumeA, double volumeB, double area)
public void setVolumes(double volumeA, double volumeB)
Usage:                      don.setvolumes(volumeA, volumeB, interArea);
This method allows the volumes of compartments A (volumeA in cubic metres) and B (volumeB in cubic metres) and the interface area (interArea in square metres) between them to be entered if the interface charge is to be included in the Donnan potential calculation.

Usage:                      don.setvolumes(volumeA, volumeB);
This method allows the volumes of compartments A (volumeA in cubic metres) and B (volumeB in cubic metres) to be entered if the interface charge is to be neglected in the Donnan potential calculation. The interface area is not needed in this case.



Entering the relative electrical permittivities

public void setRelPerm(double relPermA, double relPermB, double sternPermA, double sternPermB)
public void setRelPerm(double relPermA, double relPermB)
Usage:                      don.setRelPerm(epsA, epsB, epsSternA, epsSternB);
This method allows the relative electrical permitivities (dielectric constants) of the bulk phases in compartment A (epsA) and compartment A (epsB) and their values in the Stern layer regions of compartment A (epsSternA) and compartment B (epsSternB) to be entered. The latter two are needed if the interfacial charge is to be included in the calculation. See the comment and reference after Equations 11 and 12 (above) on the values of 'Stern permittivities'.

Usage:                      don.setRelPerm(epsA, epsB);
This method allows the relative electrical permitivities (dielectric constants) of the bulk phases in compartment A (epsA) and compartment A (epsB) to be entered when the interfacial charge is to be neglectedin the calculation. The 'Stern permittivities' are not required in this case.



Entering the temperature

public void setTemp(double temp)
Usage:                      don.setTemp(temp);
This method allows the temperature (argument, e.g. temp, in degrees Celsius) to be entered. The default value, on not calling this method, is 25 degrees Celsius.



Entering the minimisation parameters

Initial estimate of the Donnan potential
public void setEstimate(double potential)
Usage:                      don.setEstimate(estimateOfDonnanPotential);
The initial estimate of the Donnan Potential, in volts, is entered using this method.

Initial estimate of the step size
public void setEstimate(double potential)
Usage:                      don.setStep(step);
The initial estimate of the step that the minimisation procedure uses in searching for the best estimate of the Donnan potential is entered using this method. It is entered as an increment in the initial estimate, i.e. as volts.

Convergence tolerance
public void setTolerance(double tolerance)
Usage:                      don.setTolerance(tolerance);
The tolerance used by the minimisation procedure in deciding whether convergence on the best estimate of the Donnan potential is entered using this method. It is the value of the standard deviation of the function to be minimised, taken at all the apices of the simplex that has been contracted about the putative best estimate postion, that is deemed sufficiently close enough to zero to retun the current value of the Donnan potential as the best estimate. The function being minimised is the square of the net charge in compartment B, (zT,B)2, where zT,B is expressed as described in Equation 14 above.

Maximum number of iterations
public void setMaxIterations(double maxN)
Usage:                      don.setMaxIterations(maxN);
The maximum number of iterations that the minimisation procedure is allowed is entered using this method.



Calculating the Donnan Potential

public double calcPotential()
Usage:                      don.calcPotential();
The method calculates: If the interface charge is included in the calculation, it also calculates: The method returns the Donnan potential in volts.



Getting the results of the calculation

Getting the potentials

Getting the Donnan potential
public double getDonnanPotential()
Usage:                      double dPot = don.getDonnanPotential();
This method returns the Donnan potential, i>ψD, in volts.

Getting the diffuse layer potentials
public double getDiffuseLayerPotentialA()
public double getDiffuseLayerPotentialB()
Usage:                      double diffPotA = don.getDiffuseLayerPotentialA();
This method returns the diffuse layer potential differencein compartment A, ψdiff, A, in volts, if the interface charge has been included in the calculation. Otherwise zero is returned.

Usage:                      double diffPotB = don.getSternLayerPotentialB();
This method returns the diffuse layer potential differencein compartment B, ψdiff, B, in volts, if the interface charge has been included in the calculation. Otherwise zero is returned.

Getting the Stern layer potential
public double getSternLayerPotential()
Usage:                      double sPot = don.getSternLayerPotential();
This method returns the Stern layer potential difference, ψStern, in volts, if the interface charge has been included in the calculation. Otherwise zero is returned.



Getting the concentrations

Getting the bulk concentrations
public double[] getConcnA()
public double[] getConcnB()
public double[] getComplex()
Usage:                      double[] bulkA = don.getconcnA();
This method returns the ionic concentrations in the bulk phase of compartment A, [SA,bulk,i], in units of mol dm-3.

Usage:                      double[] bulkB = don.getconcnB();
This method returns the ionic concentrations in the bulk phase of compartment B, [SB,bulk,i], in units of mol dm-3.

Usage:                      double[] bulkC = don.getComplex();
This method returns the concentrations of the ion-ionophore complexes in the bulk phase of compartment B, [SC,bulk,i], in units of mol dm-3.

Getting the excess concentrations
public double[] getExcessConcnA()
public double[] getExcessConcnB()
public double[] getExcessComplex()
Usage:                      double[] excessA = don.getExcessconcnA();
This method returns the excess ionic concentrations, MIF,A,i/VA, arising from the interface carge in compartment A, in units of mol dm-3. If the interrface charge is not included in the calculation zero values are returned.

Usage:                      double[] excessB = don.getExcessconcnB();
This method returns the excess ionic concentrations, MIF,B,i/VB, arising from the interface carge in compartment B, in units of mol dm-3. If the interrface charge is not included in the calculation zero values are returned.

Usage:                      double[] excessC = don.getExcessconcnC();
This method returns the excess ion-ionophore complex concentrations, MIF,C,i/VB, arising from the interface carge in compartment B, in units of mol dm-3. If the interrface charge is not included in the calculation zero values are returned.

Getting the excess concentration to bulk concentration ratios
public double[] getRatioA()
public double[] getRatioB()
public double[] getRatioC()
Usage:                      double[] ratioA = don.getRatioA();
This method returns the ratios of excess ionic concentration to the bulk ionic concentration, MIF,A,i/VA/[SA,bulk,i], in compartment A. If the interrface charge is not included in the calculation zero values are returned.

Usage:                      double[] ratioB = don.getRatioB();
This method returns the ratios of excess ionic concentration to the bulk ionic concentration, MIF,B,i/VB/[SB,bulk,i], in compartment B. If the interrface charge is not included in the calculation zero values are returned.

Usage:                      double[] ratioC = don.getRatioC();
This method returns the ratios of excess ion-ionophore complex concentration to the bulk ion-ionophore complex concentration, MIF,C,i/VB/[SC,bulk,i], in compartment B. If the interrface charge is not included in the calculation zero values are returned.



Getting the calculated interface charge

public double getInterfaceCharge()
public double getInterfaceChargeDensity()
Usage:                      double ifc = don.getInterfaceCharge();
This method returns the total charge in the positive layer of the interface charge, σD, in Coulombs.

Usage:                      double ifc = don.getInterfaceChargeDensity();
This method returns the charge density in the positive layer of the interface charge, σD/AIF, in Coulombs per square metre.



Getting the calculated lengths

Getting the Debye lengths
public double getDebyeLengthA()
public double getDebyeLengthB()
Usage:                      double dLenA = don.getDebyeLengthA();
This method returns the Debye length in compartment A, δDebye,A [Equation 8b], in metres.

Usage:                      double dLenB = don.getDebyeLengthB();
This method returns the Debye length in compartment B, δDebye,B [Equation 8c], in metres.

Getting the Stern thicknesses
public double getSternThichknessA()
public double getSternThichknessB()
Usage:                      double sLenA = don.getSternThichknessA();
This method returns the Debye length in compartment A, δStern,A, in metres.

Usage:                      double dLenB = don.getgetSternThichknessB();
This method returns the Debye length in compartment B, δStern,B, in metres.



Getting the capacitances

Getting the total interface capacitance
public double getDonnanCapacitance()
Usage:                      double tCap = don.getDonnanCapacitance();
This method returns the total interface capacitance, CDonnan, in Farads.

Getting the diffuse layer capacitances
public double getDiffuseLayerCapacitanceA()
public double getDiffuseLayerCapacitanceB()
Usage:                      double dCapA = don.getDiffuseLayerCapacitanceA();
This method returns the diffuse layer capacitance in compartment A, Cdiff,A, in Farads.

Usage:                      double dCapB = don.getDiffuseLayerCapacitanceB();
This method returns the diffuse layer capacitance in compartment B, Cdiff,B, in Farads.

Getting the Stern layer capacitance
public double getSternCapacitance()
Usage:                      double sCap = don.getSternCapacitance();
This method returns the Stern layer capacitance, CStern, in Farads.



Getting the partition coefficients

Getting the partition coefficients at equilibrium
public double[] getPartitionCoefficients()
Usage:                      double[] partCoeff = don.getPartitionCoefficients();
This method returns the partition coefficients, Pi, for an equilibrium with the Donnan potential difference between the compartments A and B.

Getting the partition coefficients at zero potential difference
public double[] getPartitionCoefficientsZero()
Usage:                      double[] partCoeff0 = don.getPartitionCoefficientsZero();
This method returns the partition coefficients, Po,i, for a zero potential difference between the compartments A and B. These may have been entered by the user or calculated using the Born charging equation.

Getting the Born charging energy differences
public double[] getDeltaMu0()
Usage:                      double[] deltaMu0 = don.getDeltaMu0();
This method returns the difference in Born charging energy, Δμo,i, in Joules, on transferring the ith ion from compartment A to compartment B.



Write the calculation results to a text file

public void printToFile(String filename)
public void printToFile()
Usage:                      don.printToFile(filename);
This method prints to a time and date stamped text file, whose file name is passed as the arguments method, e.g. filename: and if the interface charge is included in the calculation: Usage:                      don.printToFile();
This method prints to a time and date stamped text file, called DonnanOutputFile.txt, the same data as listed immediately above.



OTHER CLASSES USED BY THIS CLASS

This class uses the following classes in Michael Thomas Flanagan's library:



This page was prepared by Dr Michael Thomas Flanagan