So I assume that we'll be calling this new code similarly to how we already calculate excess oxygen from ferric iron (i.e., by formula charge balance), once again from inside the matrix iteration loop, but this time we're calculating the OH or H2O based on the measured cations and halogens? So the user input will be a mineral formula, to be utilized with these measured molar fractions?
john
Hi John,
That's exactly right.
For the case of an amphibole, for instance, you could even specify constraints on site occupancies and thus get an estimate of Fe
2O
3/FeO simultaneously with the estimate of wt% H
2O. For instance, for the amphibole analysis that I posted above, I know that it experienced metamorphism at high temperature and low pressure, and so it might be reasonable to assume that all Na
+ resides on the A site, i.e., sum cations minus (Na
+ + K
+) equals 15 (per 23 anhydrous oxygens). This recalculation results in an increase in the number of cations per formula unit relative to the case in which some or all Na
+ resides on M4, and so it also results in a lower recalculated value of Fe
2O
3/FeO.
But an easier example is apatite. As long as no C
4+ subsitutes for P
5+ (the case of "carbonate-apatite"), the user could simply specify the presence of 12.5 anhydrous oxygens (i.e., anion charge = 25) and the presence of one monovalent anion site and thus find nOH
- = 1 - nF
- - nCl
- (and then calculate wt% H2O from nOH
- for that iteration). In the case of carbonate-apatite, wt% F can exceed the value for end-member fluorapatite. For instance, the presence of CO
2 has been reported in Durango apatite (I forget the references).
It's easy to specify a number of H
2O molecules as well. For the case of lawsonite, for instance, both OH
- and molecular H
2O are present. In the prompts within my program that creates the settings file, I describe how to handle this particular case (though my directions to myself look a little convoluted).
Note that some of these recalculations have to be applied with care, but, as long as care is taken, these and a variety of others can be performed in automated fashion within the iterations required to determine the matrix correction factors. For instance, you could apply a totally analogous technique to estimate wt% CO
2 in a carbonate, wt% B
2O
3 in a borate, or whatever oxide or element in whatever compound and also account for substitution by some measurable cation or anion (like Al
3+ for B
3+. It can all be done within the recursive algorithm simply by applying some restrictions based on the user-chosen formula unit.
I've been meaning to revise my program to handle easily generalizable cases and also more specific cases (like amphibole), but this will require a serious restructuring of the code and construction of a "library" of templates and specific cases. Like I said, I'll have a look at my code at some point during the long weekend (Canadian Thanksgiving) -- or maybe you already see an easy way to implement the generalizable and specific cases in your code (which I haven't looked at in a while).