Intermediate Attack in Crevice Corrosion
by Cathodic Focusing
A Dissertation
Presented to
the Faculty of the School of Engineering and Applied Science
University of Virginia
In Partial Fulfillment
of the Requirements for the Degree
Doctor of Philosophy(Materials Science and Engineering)
by Kevin C. Stewart
August 1999
ii
APPROVAL SHEET
This Dissertation is submitted in partial fulfilment of the
requirements for the degree of
Doctor of Philosophy (Materials Science and Engineering)
______________________
Kevin C. Stewart
This dissertation has been read and approved by the examining committee:
______________________
Robert G. Kelly
(Advisor)
______________________
William C. Johnson
(Committee Chairman)
______________________
Andrew C. Hillier
______________________
Robert J. Ribando
______________________
Narasi Sridhar
Accepted for the School of Engineering and Applied Science:
iii
______________________
Richard W. Miksad
Dean, School of Engineering
and Applied Science
Abstract
Intermediate attack (IA) is an interesting phenomenon in crevice corrosion. The typical
morphology of crevice attack shows an unattacked region near the crevice mouth, a region of
extensive damage at slightly greater depths and an additional unattacked region at still greater
depths. This pattern suggests that crevice corrosion is governed by the interaction between two
forces. One force accelerates corrosion with increasing depth into a crevice. The other force
acts to retard dissolution as distance from the crevice mouth increases. This second,
ameliorative force, is not accounted for in conventional theories of crevice corrosion.
Traditionally, the exciting force in crevice corrosion is thought to be either acidification
due to metal cation hydrolysis, the Critical Crevice Solution Model, (CCS ), or depolarization
of a passivated material, the Critical Potential Drop Model (IR*). One potential mitigating force
for corrosion is reduction in driving force due to resistive potential drop. This explanation
lacking in that IR losses can only depolarize a material to its open circuit value. Corrosion rates
can be significant even at open circuit in the highly aggressive, acidic chloride environments
which are thought to exist in crevices.
A superior theory to explain IA is the Cathodic Focusing (CF) model which is
developed in this dissertation. It accounts for the chemical effects of cathodic reactions inside a
crevice. These reactions are especially important in those regions of the crevice that are at or
near the open circuit potential. Many of the likely cathodic reactions generate hydroxyl ions
iv
which will raise the local pH. This pH rise can be very protective of the crevice material.
In order to test and explore the suitability of the CCS and IR* models to predict IA a
new code for modeling crevice corrosion was needed. This dissertation presents the
background and verification of CREVICER, a new code for modeling crevice corrosion. The
code is a 2-D(+), temporal FEM code for the generation and transport of electrochemical
species. One of the code’s major strengths is that it is object-oriented and thus can be easily
modified to model many different material-environment systems of crevice corrosion or
environmental cracking.
This dissertation concludes by using CREVICER to compare each of the three theories,
CCS, IR*, and CF, and their ability to model IA. The superior performance of the CF model
suggests that alkalinization is the ameliorative force in crevice corrosion and that there is the
possibility of augmenting the alkalinization to reduce or prevent crevice corrosion.
v
Acknowledgements
I would like to thank some of the many people who have lent me a hand during my
decade in the Department of Material Science and Engineering here at UVA.
Rob, Dot and Connor Kelly for not only was Rob’s door open, so was the Kelly home.
Ray Taylor and Louie Scribner for bringing me into the CESE and helping me grow through all
(emphasis on all) the newbie mistakes.
Lisa Young and Meredith Leggat for letting me crash on various items of their furniture when I
was homeless.
Lisa DeJong for bringing the CREVICER code into form that is usable by someone other than
ourselves and experimentally verifying the code in ways that are beyond my ability.
Ray Kilmer, Steve Smith, Jeff Poirier, Rusty Wright, Peter Schare and everyone else who
taught me to weigh, mix, saw tighten or scan safely and accurately.
Mom, Dad, Sean and Mara for whom “when” is finally “now”.
Some peoples’ lives have character, mine is full of characters. A few of those who graced my
life in Charlottesville:
Brian Connolly was always ready to talk about corrosion, the world or history.
Rob Leggat participated actively, if unknowingly, in the “sport of kings” when he first arrived.
I’d like to think that negative reinforcement turned him into the careful, wary researcher
he is today.
Chad Hunter and Ted Sheridan introduced me to the other “sport of kings”.
Daryl Little and Kevin Cooper tolerated many slurs on our great neighbor to the north. Guys, In
case we really are warming, save a place for me.
Amber Mierisch. In the battle of man verus nature I suppose someone has to root for the
opposing team. You’d be a fair referee because you make people back up their
numbers.
George Young and Steve Yu. You helped me improve my reflexes, hand-eye coordination and
predictive capabilities. If we are ever invaded by aliens, the world will thank you.
Lysle Montes. Size does not count for as much as heart in either life or the weight room and
yours makes you stand tall in both places.
Dave Kolman, Markus Wittman and Rob Cook. Experimental verification is always a good
thing. The mint could have been lying about the melting temperature of pennies.
Jen Lillard and Doug Wall pioneered the concept of finding a school you liked and sticking with
it. In your footsteps have I followed.
vi
Table of Contents
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
List of Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Phenomenology of Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Importance of Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.3 Causes of Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.4 Unanswered Questions about Crevice Corrosion . . . . . . . . . . . . . . 10
1.3 Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Difficulties with Experimentation in Crevice Corrosion . . . . . . . . 12
1.3.2 Increasing the Utility of Experimental Data . . . . . . . . . . . . . . . . . . 13
1.3.3 Acting as a virtual experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Scope of Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
vii
2.1 Basic Electrochemistry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.1 Electrochemical Reactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.2 Thermodynamics of Electrochemical Reactions . . . . . . . . . . . . . . . 22
2.1.2.1 Thermodynamic Effects of Concentration . . . . . . . . . . . . 23
2.1.2.2 Thermodynamic Effects of Potential . . . . . . . . . . . . . . . . 25
2.1.3 Half-cell Kinetics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1.3.1 Activation Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1.3.1.1 Butler-Volmer Equation . . . . . . . . . . . . . . . . . . 35
2.1.3.2 Mass Transfer Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.1.4 Polarization Curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2 Theories of Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.2.1 CCS Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.2.2 IR* Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.2.3 Comparison of Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.3 Principles of Modeling Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3.1 Governing Equations Commonly Used in Crevice Corrosion . . . . 61
2.3.1.1 Chemical Transport Processes . . . . . . . . . . . . . . . . . . . . . 61
2.3.1.1.1 Convection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.3.1.1.2 Diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.3.1.1.3 Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.3.1.2 Mass Transport Equation . . . . . . . . . . . . . . . . . . . . . . . . . 68
viii
2.3.1.3 Conservation of Mass . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.3.1.4 Electrical Transport Processes . . . . . . . . . . . . . . . . . . . . . 73
2.3.1.5 Alternate Approach to Calculating Electric Field . . . . . . 79
2.3.1.6 Charge Neutrality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.3.2 Examination of Terms Used in Crevice Corrosion Modeling . . . . 84
2.3.2.1 Use of Concentration rather than Activity in Diffusion . . 84
2.3.2.2 Transport Coefficients . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
2.3.2.2.1 Ion/Ion Interaction Effects . . . . . . . . . . . . . . . . 89
2.3.2.2.1.1 Empirical Correlation . . . . . . . . . . . . . 89
2.3.2.2.1.2 Use of Activity Coefficients
for Diffusivities . . . . . . . . . . . . . . . . . . . . 95
2.3.2.2.2 Viscosity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
2.3.2.2.3 Porosity/Tortuousity . . . . . . . . . . . . . . . . . . . . . 97
2.3.2.3 Generation of Chemical Species . . . . . . . . . . . . . . . . . . . 98
2.3.2.3.1 Heterogeneous Reactions . . . . . . . . . . . . . . . . . 99
2.3.2.3.1.1 Stoichiometric Dissolution . . . . . . . 104
2.3.2.3.2 Homogeneous Reactions . . . . . . . . . . . . . . . . . 106
2.3.2.3.2.1 Hydrolysis . . . . . . . . . . . . . . . . . . . . 107
2.3.2.3.2.2 Chemical Precipitation/Hydrolysis . 120
2.3.2.3.2.3 Homogeneous Oxidation . . . . . . . . . 121
2.3.2.4 Potential . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
ix
2.3.2.4.1 Electrochemical Potential . . . . . . . . . . . . . . . . 122
2.3.2.4.2 Solution Potential . . . . . . . . . . . . . . . . . . . . . . 123
2.3.2.4.3 Diffusion Potential . . . . . . . . . . . . . . . . . . . . . 126
2.3.3 Common Simplifications in Modeling Crevice Corrosion . . . . . . 138
2.3.3.1 Elimination of Thermodynamic Variables . . . . . . . . . . . 140
2.3.3.1.1 Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . 140
2.3.3.1.2 Pressure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
2.3.3.2 Simplification of Chemical Effects . . . . . . . . . . . . . . . . 146
2.3.3.2.1 Transport Coefficients . . . . . . . . . . . . . . . . . . 146
2.3.3.2.2 Dilute Solution Approximation . . . . . . . . . . . 147
2.3.3.2.3 Generation Rates . . . . . . . . . . . . . . . . . . . . . . . 147
2.3.3.2.4 Hydrolysis Reactions . . . . . . . . . . . . . . . . . . . 148
2.3.3.3 Simplification of Potential Effects . . . . . . . . . . . . . . . . . 149
2.3.3.3.1 Assuming No Migration . . . . . . . . . . . . . . . . . 149
2.3.3.3.2 Assuming No Diffusion Potential . . . . . . . . . . 149
2.3.3.3.3 Assuming Charge Neutrality . . . . . . . . . . . . . . 149
2.3.3.3.4 Generation Rates . . . . . . . . . . . . . . . . . . . . . . . 150
2.3.3.4 Ignoring Temporal Effects . . . . . . . . . . . . . . . . . . . . . . . 150
2.3.3.5 Simplifying Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . 151
2.3.4 Methods of Solution for Crevice Corrosion Models . . . . . . . . . . . 153
2.3.4.1 Analytic Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
x
2.3.4.1.2 Misuse of Analytic Solutions . . . . . . . . . . . . . 155
2.3.4.2 Numerical Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
2.3.4.2.1 Finite Difference Method . . . . . . . . . . . . . . . . 159
2.3.4.2.2 Boundary Element Method . . . . . . . . . . . . . . . 163
2.3.4.2.3 Finite Element Method . . . . . . . . . . . . . . . . . . 163
2.3.4.3 Issues in Choosing Methods of Solution . . . . . . . . . . . . 167
2.4 Literature Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
3 Definition of the CREVICER Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
3.1 General Aspects of Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
3.2 Object Oriented Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
3.3 Finite Element Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
3.3.1 Spatial FEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
3.3.1.1 Limitations of Spatial FEM . . . . . . . . . . . . . . . . . . . . . . 221
3.3.2 Temporal FD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
3.3.2.1 Limitations of Temporal FD . . . . . . . . . . . . . . . . . . . . . 228
3.4 Applications of FEM to Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . 229
3.5 Program Structure and Simplifications Used in CREVICER . . . . . . . . . . . 232
3.5.1 Program Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
3.5.2 Simplifications in CREVICER . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
3.5.2.1 Governing Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
xi
3.5.2.2 Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
3.5.2.3 Heterogeneous and Homogeneous Reactions . . . . . . . . 242
3.5.2.4 Derived Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
4 Model Verification and Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
4.1
Comparisons of CREVICER to Analytic Solutions . . . . . . . . . . . . . . . 247
4.1.1 Test Cases Evaluating Potential . . . . . . . . . . . . . . . . . . . . . . . . . . 249
4.1.1.1 One-D Crevice With Active Tip and Passive Flanks . . . 249
4.1.1.2 One-D Crevice With Active Flanks and Passive Tip . . . 256
4.1.1.3 Case 3 - One-D Crevice With Active Flanks and
Active Tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
4.1.1.4 Case 4 - One-D Crevice With Active Tip and Varying
Solution Conductivity . . . . . . . . . . . . . . . . . . . . . . . . . . 270
4.1.1.5 One-D Crevice With Active Walls, Passive Tip and
Varying Solution Conductivity . . . . . . . . . . . . . . . . . . . 277
4.1.1.6 Case 6 - Two-D Crevice With Passive Walls and Active
Tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
4.1.1.7 Case 7 - Two-D Crevice With Active Walls . . . . . . . . . 292
4.1.1.8 Case 8 - One-D Wedge with Varying Height and Active .
Tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
4.1.1.9 Case 9 - One-D Wedge With Varying Height and Active
xii
Sides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
4.1.2 Test Cases Evaluating Mass Transport . . . . . . . . . . . . . . . . . . . . . 313
4.1.2.1 Case 10 - One-D Mass Transport of Chemical Species . 313
4.1.2.2 Case 11 - One-D Mass Transport of Chemical Species With
Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
4.1.3 Test Case Evaluating Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
4.1.3.1 Case 12 - Transient Diffusion of Chemical Species . . . 328
4.2 Limitations of Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
4.2.1 Discretization Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
4.2.2 Peclet Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
4.2.3 Courant Limitations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
4.2.4 dI/dE Stability Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
4.2.5 Variable Coefficient-Induced Stability Limitations . . . . . . . . . . . 338
5 Intermediate Attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
5.1 Phenomenology of Intermediate Attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
5.2 “Standard” Theories Applied to IA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
5.2.1 CCS Theory Applied to IA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
5.2.2 IR* Theory applied to IA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
5.2.3 IA as a Transient Phenomenon . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
5.3 Hydrolysis Reactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
xiii
5.4 Cathodic Focusing Theory of IA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
5.5 Modelling of IA by IR*, CCS and CF by CREVICER . . . . . . . . . . . . . . . . 367
5.5.1 IA by the IR* Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
5.5.2 CCS Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
5.5.3 IA by the CCS model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
5.5.4 IA by the CF Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
6 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
7 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
7.1 Code Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
7.2 Model Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Appendix A: CREVICER Code Printout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Appendix B: constant.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Appendix C: tchem.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Appendix D: tchem.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Appendix E: taspecie.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Appendix F: taspecie.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Appendix G: tallspec.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
xiv
Appendix H: tallspec.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Appendix I: treactio.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Appendix J: treactio.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Appendix K: tmateria.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Appendix L: tmateria.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Appendix M: fem.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Appendix N: fem.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Appendix O: solver.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Appendix P: solver.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Appendix Q: chemtest.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Appendix R: nosq8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Appendix S: elsq8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
xv
List of Tables
Chapter 2
1. Formation Quotients for Chromium Species . . . . . . . . . . . . . . . . . . . . . . . . . 109
2. Formation Quotients for Aluminum Species . . . . . . . . . . . . . . . . . . . . . . . . . 111
3. Diffusivities of Various Ions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4. Diffusion Potentials for Various Salts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5. Data and Symbols for Literature Review Table . . . . . . . . . . . . . . . . . . . . . . . 170
6. Literature Review Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Chapter 3
7. Types of Boundary Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
8. Parameter Values of Kt and θ used to Select Time Solution Method . . . . . . 226
9. Relation of Courant Number to Stability . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10. Correspondence Between FEM Coefficients and Physical Terms
(Electrical Transport) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11. Correspondence Between FEM Coefficients and Physical Terms
(Chemical Transport) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Chapter 4
12. Model Conditions for Case 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
xvi
13. Goodness of fit for Case 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
14. Model Conditions for Case 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
15. Goodness of fit for Case 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
16. Model Conditions for Case 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
17. Goodness of fit for Case 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
18. Model Conditions for Case 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
19. Goodness of fit for Case 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
20. Model Conditions for Case 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
21. Goodness of fit for Case 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
22. Model Conditions for Case 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
23. Goodness of fit for Case 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
24. Model Conditions for Case 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
25. Goodness of fit for Case 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
26. Model Conditions for Case 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
27. Goodness of fit for Case 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
28. Model Conditions for Case 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
29. Goodness of fit for Case 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
30. Model Conditions for Case 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
31. FEM Parameters in Terms of Physical Constants for Case 10 . . . . . . . . . . 316
32. Goodness of fit for Case 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
33. Model Conditions for Case 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
xvii
34. FEM Parameters in Terms of Physical Constants for Case 11 . . . . . . . . . . 323
35. Goodness of fit for Case 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
36. Model Conditions for Case 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Chapter 5
37. Equilibrium pH’s for Various Cations when Created Electrochemically . . 358
38. Composition of the Stainless Steel 304 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
39. Model Parameters for Modeling IA by the IR* Model . . . . . . . . . . . . . . . . 368
40. Polynomial Coefficients for fit of Valdes-Moldon Data . . . . . . . . . . . . . . . 369
41. Model Parameters for Modeling the CCS Model . . . . . . . . . . . . . . . . . . . . 375
42. Model Parameters for Modeling IA by the CCS/IA Model . . . . . . . . . . . . . 382
43. Model Parameters for Modeling IA by the CF Model . . . . . . . . . . . . . . . . . 391
xviii
List of Figures
Chapter 1
1.2.1(a) Schematic of Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1(b) Terms and Directions of Crevices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Chapter 2
2.1.3(a) Effect of Potential on Kinetics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.4(a) Evans Diagram of a Single Reaction . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.1.4(b) Evans Diagram of Two Reactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.1.4(c) Evans Diagram of an Active/Passive Metal . . . . . . . . . . . . . . . . . . . . . . 45
2.2.1(a) Illustration of CCS Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.2.1(b) Schematic of CCS Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2.2(a) Illustration of IR* Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.2.2(b) Schematic of IR* Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.3.1.4(b) Translation of Areal into Volume Flux . . . . . . . . . . . . . . . . . . . . . . . . 78
2.3.2.2.1.1(a) Dependence of Equivalent Conductivity on Ionic Strength . . . . . 92
2.3.2.2.1.1(b) Dependence of Diffusivity on Concentration . . . . . . . . . . . . . . . . 93
2.3.2.2.1.1(c) Dependence of Activity on Molality . . . . . . . . . . . . . . . . . . . . . . . 94
2.3.2.3.1(a) Methods of Approximating Polarization Curves . . . . . . . . . . . . . . 103
2.3.2.3.2.1(a) Speciation of Chromium Hydrolysis Products . . . . . . . . . . . . . . 118
xix
2.3.2.3.2.1(b) Speciation of Chromium Hydrolysis Products . . . . . . . . . . . . . . 119
2.3.2.4.2.(a) Relationships between φs, φmetal, and E . . . . . . . . . . . . . . . . . . . . . 125
2.3.2.4.3.(a) Illustration of Diffusion Potential Causes . . . . . . . . . . . . . . . . . . . 136
2.3.2.4.3.(b) Diffusion Potential for Reservoirs of Different Ratios of NaCl . . 137
2.3.4.2.1(a) Illustration of Explicit, Implicit and Crank-Nicolson Methods . . . 162
2.3.4.2.3(a) Shape and Pyramid Functions for FEM . . . . . . . . . . . . . . . . . . . . . 166
Chapter 3
3.2(a) Illustration of an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
3.2(b) Illustration of Encapsulization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
3.2(c) Illustration of Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
3.2(d) Illustration of Classes of Information in CREVICER . . . . . . . . . . . . . . . 215
3.3.1(a) Illustration of a 2-D FEM Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
3.5.1(a) Illustration of Data Flow in CREVICER . . . . . . . . . . . . . . . . . . . . . . . 237
3.5.1(b) Objects of CREVICER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Chapter 4
4.1.1.1(a) Crevice Geometry for Case 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
4.1.1.1(b) Potential Distribution for Case 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
4.1.1.2(a) Crevice Geometry for Case 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
4.1.1.2(b) Potential Distribution for Case 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
xx
4.1.1.3(a) Crevice Geometry for Case 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
4.1.1.3(b) Potential Distribution for Case 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
4.1.1.4(a) Crevice Geometry for Case 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
4.1.1.4(b) Potential Distribution for Case 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
4.1.1.5(a) Crevice Geometry for Case 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
4.1.1.5(b) Potential Distribution for Case 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
4.1.1.6(a) Crevice Geometry for Case 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
4.1.1.6(b) Surface Plot of Potential Distribution for Case 6 . . . . . . . . . . . . . . . 290
4.1.1.6(c) Potential Distribution for Case 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
4.1.1.7(a) Crevice Geometry for Case 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
4.1.1.7(b) Surface Plot of Potential Distribution for Case 7 . . . . . . . . . . . . . . . 298
4.1.1.7(c) Potential Distribution for Case 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
4.1.1.8(a) Crevice Geometry for Case 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
4.1.1.8(b) Potential Distribution for Case 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
4.1.1.9(a) Crevice Geometry for Case 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
4.1.1.9(b) Potential Distribution for Case 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
4.1.2.1(a) Crevice Geometry for Case 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
4.1.2.1(b) Concentration Distributions for Case 10 . . . . . . . . . . . . . . . . . . . . . . 319
4.1.2.2(a) Crevice Geometry for Case 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
4.1.2.2(b) Concentration Distributions for Case 11 . . . . . . . . . . . . . . . . . . . . . . 326
4.1.2.2(c) Migration, Diffusion and Total Fluxes for Case 11 . . . . . . . . . . . . . . 327
xxi
4.1.3.1(a) Crevice Geometry for Case 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
4.1.3.1(b) Concentration Distributions for Case 12 . . . . . . . . . . . . . . . . . . . . . . 333
Chapter 5
5.1.1.1(a) Schematic of Crevice Corrosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
5.1.1.1(b) Photograph of Creviced 304 Sample . . . . . . . . . . . . . . . . . . . . . . . . . 345
5.1.1.1(c) Terms Used to Describe Crevice Corrosion . . . . . . . . . . . . . . . . . . . 346
5.2.1(a) IA by the CCS Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
5.2.2.(a) IA by the IR* Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
5.3(a) OH- Consumption and Speciation via hydrolysis of Cr+3 at Different
pH’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
5.3(b) OH- Consumption via Hydrolysis of 304 and its Components at Different362
pH’s
5.3(c) pH of 304 and its Components When Dissolved Electrochemically at Different
Fractional Cathodic Currents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.4.1(a) IA by the CF Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
5.5.1(a) Geometry for Model of IA by the CCS Mechanism . . . . . . . . . . . . . . 371
5.5.1(b) Polarization Curve for Model of IA by the CCS Mechanism . . . . . . . 372
5.5.1(c) Resulting Current and Potential Distributions for Model of IA by the CCS
Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
5.5.2(a) Geometry for Model of CCS Mechanism . . . . . . . . . . . . . . . . . . . . . . 377
5.5.2(b) Polarization Curves for Model of CCS Mechanism . . . . . . . . . . . . . . 378
xxii
5.5.2(c) pH Distribution at Different Times for Model of CCS Mechanism . . 379
5.5.2(d) Dissolution Current Density Distribution at Different Times for Model of CCS
Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
5.5.3(a) Geometry for Model of CCS/IA Mechanism . . . . . . . . . . . . . . . . . . . 384
5.5.3(b) Polarization Curves for Model of CCS/IA Mechanism . . . . . . . . . . . 385
5.5.3(c) E Distribution at Different Times for Model of CCS/IA
Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
5.5.3(d) pH Distribution at Different Times for Model of CCS/IA
Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
5.5.3(e) Dissolution Current Density Distribution at Different Times for Model of
CCS/IA Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
5.5.3(f) Quasi-Polarization Curves at Different Times for Model of CCS/IA
Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
5.5.4(a) Geometry for Model of CF Mechanism . . . . . . . . . . . . . . . . . . . . . . . 395
5.5.4(b) Polarization Curves for Model of CF Mechanism . . . . . . . . . . . . . . . 396
5.5.4(c) E Distribution at Different Times for Model of CF Mechanism . . . . . 397
5.5.4(d) pH Distribution at Different Times for Model of CF Mechanism . . . 398
5.5.4(e) Dissolution Current Density Distribution at Different Times for Model of CF
Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
5.5.4(f) Quasi-Polarization Curves at Different Times for Model of CCS/IA
Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
xxiii
5.5.4(g) Distribution of Cathodic/Anodic Current Ratios at Different Times for Model
of CF Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
5.5.4(h) pH Distribution at Different Times for Model of CF Mechanism for
5 cm crevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
xxiv
List of Symbols
a . . . . . . . . . . . . . . . . . . . . . . . . . . . . tabulated constant for hydrolysis reactions [unitless]
a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stoichiometeric coefficient for species A [unitless]
ai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . activity of species i [unitless]
a/oi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . atomic fraction of species i [unitless]
A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . corroding surface area [m2]
A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reacting species [unitless]
Ab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency Factor for back reaction [m/s]
Af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency Factor for forward reaction [m/s]
b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tabulated constant for hydrolysis reactions [l/mol]
b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stoichiometeric coefficient for species B [unitless]
B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reacting species [unitless]
B0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Coefficient of Debye-Huckel Limiting Law
c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stoichiometeric coefficient for species C [unitless]
cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . specific heat of water 4.184 [J/g-K]
C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reacting species [unitless]
Ci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . concentration of species i [mol/m3]
Cmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . maximum concentration [mol/m3]
Cmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . minimum conductivity [mol/m3]
L̃C i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gradient of concentration of species i [mol/m4]
xxv
Di . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diffusivity of species i [m2/s]
Di0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diffusivity of species i at infinite dilution [m2/s]
E . . . . . . . . . . . . . . . . . . . electrochemical potential of the reaction across an interface [V]
Eeq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . equilibrium potential [V]
EP
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . electric field [V/m]
F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Faraday’s constant = 96,487 [C/eq]
Fi,mig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . force for migration of species i [N]
g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gravitational acceleration [m/s2]
Gi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . molar Gibbs free energy of species i [J/mol]
∆G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . change in Gibbs Free Energy [J/mol]
∆G0a* . . . . . . . . . . . standard Gibbs free energy of activation for an anodic process [J/mol]
∆G0c* . . . . . . . . . . standard Gibbs free energy of activation for a cathodic process [J/mol]
∆Ga* . . . . . . . . . . . . . . . . . Gibbs free energy of activation for an anodic reaction [J/mol]
∆Gc* . . . . . . . . . . . . . . . . . Gibbs free energy of activation for a cathodic reaction [J/mol]
h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . height of the volume [m]
i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . current density across an interface [A/m2]
i0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exchange current density [A/m2]
I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ionic strength [eq2/mol-l]
Ian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . total anodic current [A]
xxvi
Ica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . total cathodic current [A]
Javg . . . . . . . . . . . . . . . . . . . flux of atoms from the alloy on an averaged basis [mol/m2-s]
J˜el
. . . . . . . . . . . . . . . . . . . . . . . . . net electric current density vector in solution [A/m2]
J˜el,i . . . . . . . . . . . . . . . . . . . electrical current density vector due only to species i [A/m2]
Ji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . flux of species i across an interface [mol/m2-s]
J˜i
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . total flux of species i [mol/m2-s]
J˜i,force
. . . . . . . . . . . . . . . . . . . . . . . . . . flux vector of species i due to a force [mol/m2-s]
J˜i,conv . . . . . . . . . . . . . . . . . . . . . . . . flux vector of species i due to convection [mol/m2-s]
J˜i,diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . flux of species i due to diffusion [mol/m2-s]
J˜i,m ig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . flux of species i due to migration [mol/m2-s]
Jtip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . current density at a crack tip [A/m2]
kf . . . . . . . . . . . . . . . . . . . . . . . rate constant for the heterogeneous forward reaction [m/s]
kb . . . . . . . . . . . . . . . . . . . . . . . . . rate constant for the heterogeneous back reaction [m/s]
Kxy . . . . . . . . . . . . . . . . . . . . . . . . . . tabulated constant for hydrolysis reactions [unitless]
K1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . coefficient of analytic solution [varies]
K2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . coefficient of analytic solution [varies]
m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . molality of the solution [mol / 1000g water]
mH O
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . areal mass density of water [g/m3]
mx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . concentration of the anion in hydrolysis [M]
p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . energy flux [J/m2-s]
xxvii
∆P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . change in pressure [Pa]
∆Phydro . . . . . . . . . . . . . . . . . . . . . . . . . . . change in pressure due to hydrostatic effects [Pa
∆Pinter . . . . change in pressure caused by sustaing the additional gas/liquid interface [Pa]
q . . . . . . . . . . . . . . . . . . quantity of water formed or lysed by self-dissassociation [mol/l]
qi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . charge on species i [C]
Qxy . . formation quotient of the hydrolysis product with x cations, y hydroxyls [unitless]
R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . universal gas constant, 8.314 [J/mol-K]
Re . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . generation rate of electrical charge [C/m3-s]
Ri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rate of generation of species i [mol/m3-s]
T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . temperature [K]
t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . time [s]
~
2
u~i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . is the mobility tensor [m -mol/J-s]
ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mobility constant for species i [m2-mol/J-s]
vb . . . . . . . . . . . . . . . . . . . . . velocity of the backward heterogeneous reaction [mol/m2-s]
vf . . . . . . . . . . . . . . . . . . . . . . . velocity of the forward heterogeneous reaction [mol/m2-s]
v˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . velocity vector of the solution [m/s]
v˜i,force . . . . . . . . . . . . . . . . . . . . . . . . . . . . velocity vector of species i due to a force [m/s]
v˜i,diff . . . . . . . . . . . . . . . . . . . . . . . . . . . velocity vector for species i due to diffusion [m/s]
v˜i,m ig . . . . . . . . . . . . . . . . . . . . . . . . . . . velocity vector of species i due to migration [m/s]
x . . . . . . stoichiometric coefficient for the metal cations involved in a hydrolysis reaction
xxviii
x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . position [m]
x0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . crevice length [m]
[X] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . concentration of species X [ mol/l]
y . . . . stoichiometric coefficient for the hydroxyl ions involved in the hydrolysis reaction
z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . valence of the metal cation [eq/mol]
z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . number of electrons transferred [eq/mol]
zavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . average charge number for the alloy [eq/mol]
zi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . charge number for species i [eq/mol]
Greek Symbols
α . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . symmetry factor [unitless]
γi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . activity coefficient of species i [m3/mol]
∆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Change in parameter
ε . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dielectric constant of solution [F/m]
εr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . relative dielectric of water
ε0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dielectric of free space[F/m]
η . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . overpotential, E - E0 [V]
ηr . . . . . . . . . . . . . . . . . relative viscosity of the solution compared to pure water at 22 C
θ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . crack opening angle [rad]
κ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . solution conductivity [Ω-m]-1
κ(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . solution conductivity at position x [Ω-m]-1
xxix
κmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . maximum conductivity [Ω-m]-1
κmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . minimum conductivity [Ω-m]-1
λ+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ionic conductivity for the cation [m2 / Ω-eq]
λ− . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ionic conductivity for the anion [m2 / Ω-eq]
λi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ionic conductivity for the species i [m2 / Ω-eq]
Λ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ionic conductivity [m2 / Ω-eq]
µi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . chemical potential of species i [J/mol]
0
µi . . . . . . . . . . . . . . . . . . . . . . chemical potential of species i in the standard state [J/mol]
νi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . stoichiometric coefficient for species i
ρel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . electric charge density in solution [C/m3]
DH2O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . density of water = 1000 [kg/m3]
1
Chapter 1: Introduction
This chapter serves to frame the work of this dissertation and place it in context. It
starts with a brief overview of corrosion and its costs. The focus then shifts to the particular
form of corrosion studied in this project: crevice corrosion. A discussion of the phenomenology,
importance, causes, and outstanding questions on crevice corrosion leads into the purposes and
goals of this dissertation in modeling crevice corrosion. The chapter ends by summarizing the
work done for this project.
1.1 Corrosion
Metallic corrosion is the process which changes metals from their technologically useful
reduced form to their thermodynamically stable oxidized form. This phase change can
mechanically weaken a part, alter its appearance, or contaminate a product stream. The costs
of corrosion were estimated to be 4% of the GDP [1]. In 1997 this translated to over $320
Billion in costs from downtime, replacement costs, and other corrective actions.
Corrosion has many forms. Its causes range from high temperature oxidation to
improper galvanic coupling and it occurs in environments as diverse as seawater to sulfur- and
chloride-contaminated atmospheres. A major method of classifying corrosion is by the form of
attack. Corrosion can be broadly characterized as either general or localized. General attack
2
results in relatively even surface wastage of a material. From a corrosion mitigation perspective,
it is relatively benign since it is easy to detect and to predict its course. More insidious are the
various forms of localized attack. Pitting, intergranular attack and crevicing are particularly
damaging since they are less easy to predict and are difficult to detect. A single crack can
destroy a wing spar that is otherwise intact. Likewise, a single hole can destroy a pipeline, even
if the overall wall thickness is unaffected elwewhere. This dissertation is focused on crevice
corrosion.
1.2 Crevice Corrosion
Crevice corrosion is a subset of the phenomenon of localized attack. This section
addresses the following questions: What is crevice corrosion? Why is it important? How does it
happen? and What still needs to be known?
1.2.1 Phenomenology of Crevice Corrosion
Crevice corrosion is a type of localized attack. It is differentiated from pitting or other
forms of localized attack in that an external crevice former is required to initiate corrosion on a
surface in an environment in which it would otherwise be immune. Figure 1.2.1(a) from Jones[1]
shows a typical example of crevice corrosion. The stainless steel specimen is immersed in an
environment and covered with an electrolyte. On the uncovered surface there is no attack, but
underneath the crevice former the material is heavily corroded. Pitting is related to crevice
3
corrosion in that an occluded region is also formed, but a pit generates the required geometry
spontaneously instead of relying on an outside former as in crevice corrosion..
The depth of attack under the crevice former varies. Near the mouth, little attack
occurs. With increasing distance into the crevice, the amount of material lost increases until a
peak is reached and then the depth of attack slowly decreases to zero with further travel into
the crevice. The geometrical terms and directions are illustrated in Figure 1.2.1(b) for both
crevices and the related geometry of cracks.
One typical aspect of crevice corrosion is that there is a time delay, or initiation time,
between the formation of the crevice and the start of attack. Once initiated the crevice is said to
propagate. Initiation is the generation of conditions that are sufficient to attack the metal.
Propagation depends on sustaining those conditions. Changes in geometry, such as if rapid
corrosion were to widen the mouth of a crevice, can make the damaging electrical or chemical
conditions unsustainable and stop the crevicing.
Another aspect of crevice corrosion is the unevenness of attack seen in Figure 1.2.1(a).
The differing amounts of metal loss along the crevice wall imply that the conditions inside the
crevice are not uniform. Just as a crevice may vary considerably from the bulk, the interior of a
crevice may contain great differences in pH, electrolyte composition and potential. Typically,
the electrolyte in a crevice is thought to be a concentrated metal salt solution of low pH.
The stainless steel specimen is only corroded underneath the crevice former. Some
aspect of the occluded site which is produced under the crevice former makes the conditions
there much more aggressive than those on the unblocked, or boldly exposed, surface. It is this
4
combination of the divergence of internal conditions from the bulk and the obscuring effect of
the crevice former that makes crevice corrosion such a damaging form of attack.
The presence of unattacked regions at both the mouth and base of the crevice is
referred to as “intermediate attack” (IA) in this project. The major contribution of this thesis is
in presenting modifications of existing theories of crevice corrosion to account for IA and in
developing the “Cathodic Focusing” (CF) model as an alternate explanation.
7
1.2.2 Importance of Crevice Corrosion
Crevice corrosion is an important area of corrosion research because, whereas the
overall process is thought to be understood, exact answers about the likelihood, timing, and
rate of attack are not available. Since the conditions in a crevice can become significantly more
aggressive than those in the bulk environment if unfavorable geometries are present it is difficult
to perform accurate material selection to choose the cheapest material that will have adequate
performance. The other difficulty posed by crevice corrosion is that any inspection of a part is
hampered by the presence of the crevice former.
Subsection 1.2.4 describes the questions that are active areas of research in crevice
corrosion. As a precursor to that discussion, a short mention of the basic outlines of the theories
concerning the factors that govern crevice corrosion is in order.
1.2.3 Causes of Crevice Corrosion
Some combination of chemical and electrical changes inside an occluded site makes the
conditions locally more aggressive than the bulk environment. There are two main theories to
explain the initiation of crevice corrosion. One, the Critical Crevice Solution (CCS) model,
ascribes primacy to the chemical changes in a crevice. The other, the Critical IR Drop Model
(IR*) assigns dominance to the electrical changes inside the occluded site. Most modern
models, including that of this dissertation, combine elements of both.
The CCS model explains the deletory effects of an occluded region in terms of it acting
as a barrier to chemical transport. The theory was first proposed as the Acid Hydrolysis theory
8
by Hoar[2] and later codified for stainless steels by Fontana and Green[3]. Oldfield and Sutton
finally placed the model in its currently recognized form by quantifying the earlier qualitative
model[4]. They proposed a definite criteria for the start of attack and a methodology for
applying the model.
The basic process of the CCS model for the initiation of crevice corrosion on stainless
steels is: Deoxygenation of the crevice; Anodic dissolution of metal inside the crevice supported
by cathodic reactions on the boldly exposed surface; Hydrolysis of the resulting metal cations
lowering the pH; and Ingress of Chloride ions to balance the charge of the more slowly moving
metal cations.
By the logic of the CCS model, the conditions inside the crevice are the result of an
interplay between the generation of chemical species inside the crevice and their transport out
of it. Any lag in the removal of dissolution products, such as imposed by a crevice former,
allows the metal cations to accumulate. These cations hydrolyze and form metal hydroxides.
This process lowers the solution pH. Simultaneously negatively charged anions, such as
chloride, migrate into the crevice to balance the excess positive charge from the metal cations.
The net result is an acidic chloride solution which more aggressive than the previous solution.
As result of the change in chemistry the dissolution rate increases. The process is autocatalytic.
CCS explains several aspects of crevice corrosion. The unattacked region at the
crevice mouth is caused by mass transport out of the crevice preventing the development of a
sufficiently aggressive solution. The time delay before initiation is needed to develop a
concentrated electrolyte. The resulting solution is the expected acidic chloride solution. One
9
area which is not explained is the lack of attack at the greatest crevice depths. This theory and
its strengths and weaknesses are described more fully in subsection 2.2.1.
The major competing theory with the CCS model is the IR* model. Pickering proposed
it as an initiating mechanism for crevice corrosion on active-passive metals whose bulk
conditions are held anodically in the passive region. The thrust of the theory is that crevice
corrosion can start on passivated metals if the crevice former acts as a barrier to electrical
transport.
In the IR* theory, a crevice deoxygenates, localizing the anodic and cathodic reactions
to the crevice interior and boldly exposed surface respectively. This results in a net current flow
from the crevice interior out to the boldly exposed surface. As this current crosses the
electrically resistive crevice electrolyte, potential drop due to IR occurs. If sufficient potential
drop occurs to lower the potential of the metal from the bulk potential (safely in the passive
region) to the active nose of the material, rapid attack will ensue.
According to this theory, the conditions in the crevice are determined by the interplay
between current generation and crevice resistance, which is a product of geometry and
conductivity. Whereas the IR* model can explain the uncorroded areas at the mouth
(inadequate potential drop to depassivate surface) and at the base (lack of driving force to
corrode at a rate greater than the corrosion current) it fails to account for the time delay before
initiation. This theory is treated in greater detail in subsection 2.2.2.
The CCS and IR* models are complementary halves that can be used to qualitatively
explain crevice corrosion. Though the basic outline of crevice behavior is known, several
10
questions remain.
1.2.4 Unanswered Questions about Crevice Corrosion
While much progress has been made in understanding crevice corrosion, several
questions remain: What are the factors controlling initiation?, Which of the observed changes in
crevice conditions are results rather than causes of crevice corrosion? and What determines the
rates of attack in the crevice and the resulting crevice shape changes?
Example systems have been presented for each of the two models.[5, 6] Outside of these
systems there does not seem to be a hard and fast rule about which theory dominates under
different conditions. Modern modeling efforts include both effects[7-10]
An important issue that both models do not address is the effects of geometry with a
crevice. A prime example would be subcrevices[9]. Corrosion initiates first at a crevice since it is
the most occluded site on a surface. It is likely that subcrevices initiate first within a crevice
since they are more restricted than neighboring areas within the site. Similar problems such as
the variations within a crevice caused by heterogeneities such as pits and second-phase
particles have led to a push to monitor the local conditions inside crevices[11]. Even for crevices
of perfect geometry, there is still uncertainty as to the proper scaling factor to use to translate
between “real” crevices with gaps on the order of 0.1 to 10 µm and easily observable ones with
gaps of several hundred µm’s.[12]
Furthermore, even within the framework of CCS, a number of species have been put
forth as bad actors[13-15]. If metal cations or sulfur species control the corrosion process rather
11
than pH or chloride content, then different approaches must be used to try to prevent corrosive
attack.
A barrier to understanding the various factors that control crevice corrosion under
different conditions is the problem of separating causes of initiation from the results of
propagation. If solution from a fully corroded sample is analyzed and found to be highly acidic
and chloride rich, then there is no easy way to tell if those conditions arose before or after
initiation.
Finally, there is a decided gap between understanding the corrosion process
conceptually and translating that knowledge into useful engineering practice. Life-prediction
seeks to answer the questions of if and/or when a particular geometry will initiate, and if initiated
will the conditions be self-sustaining.[16-19]
Modeling is required to address these unanswered questions about the controlling
factors of crevice corrosion and also to use the models to produce useful predictions for
engineering purposes.
1.3 Modeling
Modeling of the corrosion process has yielded much information about crevice
corrosion, and has the promise to give much more insight. Modeling can provide answers for
systems that are difficult to monitor experimentally, it can expand the usefulness of data
collected at discrete points and can perform “what-if” scenarios that would be impossible to do
12
experimentally. The caveat is of course that a model can only be verified by comparison to
experimental data. The hope is that if a model is verified under conditions that can be measured
experimentally, it can be safely extrapolated to other conditions.
1.3.1 Difficulties with Experimentation in Crevice Corrosion
There are many difficulties in obtaining information about the chemical and electrical
distributions inside a crevice. The geometries are exceedingly tight and the insertion of
electrically and chemically sensitive probes can influence the corrosion process. Because of the
small crevice gaps there is little solution available for analysis. For a crevice with a relatively
loose 10 µm gap, there are only 10-3 ml of solution per cm2 of crevice area.
A related difficulty in obtaining experimental data is the problem of scaling factors. Not
only is there some confusion about the length to width factors that should be used to scale a real
crevice to one that is easily measured, it is not clear which characteristics of the crevice need to
be scaled. If subcrevices dominate to corrosion process, then scaling the average gap may
produce results that do not correlate with the physical system. This is especially true if the
scaling process allows new transport mechanisms such as natural convection to appear.
Finally, there is a lot of apparent variability in crevicing behavior. The point of such tests
as multiple crevice assemblies is to get statistically significant results about crevice corrosion.
Nominally identical crevices on the same piece of metal simultaneously in the same environment
will not necessarily have the same resistance to crevicing.
Whereas it is difficult to ascertain what is occurring within a crevice, a number of
13
measurements can be made about the crevice as a whole. The net anodic current from the
crevice, the overall pH, the initiation time and possibly some internal measurements can be
taken. Modeling provides a tool to leverage these results into a better picture of the whole
process inside the crevice.
1.3.2 Increasing the Utility of Experimental Data
The experimental data that is collected on a particular crevice is necessarily limited in
scope. For instance, potentials are measured at discrete points rather than continuously.
Modeling can fill in the blanks around such data. A model need only be calibrated at a few
points and can then be used to provide data with as much spatial or temporal information as is
needed.
In addition to providing more detail about experiments that have been done, modeling
can perform experiments that can never be done.
1.3.3 Acting as a Virtual Experiment
One difficulty in deducing the interactions of the numerous variables affecting crevice
corrosion is that it is difficult to experimentally vary only a single parameter. A supporting
electrolyte that is added to minimize the potential gradient may also inadvertently affect the
corrosion behavior. For instance, chloride, despite its high mobility, would be a singularly poor
choice for a supporting electrolyte! Any parameter of a model can be changed independently.
Ionic mobilities, valences, corrosion rates and hydrolysis coefficients can all be scaled at will in
14
a model to perform “what if” analyses. Such investigations can act as a guide to direct future
experimentation.
This investigation created a platform for modeling crevice corrosion that was designed
to exploit these strengths of modeling. It allows modeling of any time or space scale (subject to
calculation time limits), can act to flesh out a few experimentally obtained points and allows any
type of what-if scenario to be played out with its variables.
1.4 Scope of Work for this Dissertation
There are two major results from this thesis. The first was the creation of CREVICER a modular true two spatial dimension and temporal code for solving crevice corrosion
problems. All crevicing processes involve an interplay between chemical and electrical transport
and generation. The differences only appear in the specific behaviors of individual metals and
ions. CREVICER’s main strength is that it can be customized to model nearly any
material/environment system.
This code is a significant advance over current models for the solution of crevice
corrosion in that it models two free spatial dimensions with allowance for changes along a third
axis. It also allows unlimited versatility in including polarization curves. The effects of chemistry,
temperature, and pressure can be accounted for, though no work presented in this dissertation
uses the effects of temperature or pressure.
This versatility is achieved is through the modular structure of the object-oriented code.
15
As is discussed in section 3.2 object-oriented design (OOD) is a methodology breaks a
program into discrete independent units called objects. These objects can be reprogrammed at
will without introducing errors into other parts of the code.
The second achievement of this dissertation was the use of CREVICER to suggest a
new mechanism to explain the phenomenon of intermediate attack in crevices. Significant
corrosion near a crevice mouth will introduce large amounts of current that polarize parts of the
crevice nearer the base to near the open circuit potential. Metal dissolution near the open circuit
potential has radically different effects on solution chemistry than dissolution at high anodic
overpotentials.
Metal cations hydrolyze and this has the effect of lowering pH. Cathodic reactions such
as the Hydrogen Evolution Reaction (HER) and Oxygen Reduction Reaction (ORR) generate a
single hydroxyl per electron consumed and this chemical production has an alkalinizing effect.
As will be discussed in section 5.3 this process can turn portions of the crevice alkaline if
significant amounts of the required cathodic current to support the dissolution reactions are
supported locally. At open circuit, the metal is no longer coupled to the crevice exterior and all
of the required current is met locally.
This alkalinizing effect can lead to the localization of attack near the crevice mouth. This
model has been named the Cathodic Focusing (CF) model.
Before any serious discussion of the CREVICER code or the CF model is presented
some coverage of the background for crevice corrosion modeling is presented.
16
Chapter 2: Background
OVERVIEW
As was seen in Chapter 1, crevice corrosion is an important form of attack. Occluded
site geometries allow conditions that are significantly more aggressive than the bulk to form and
this can destroy materials which would otherwise be virtually immune to a particular
environment. It is this uncertainty about the durability of metals in the presence of crevices
which makes the study of localized corrosion of such great interest.
It has been a long-held goal of crevice corrosion modeling to produce codes which are
accurate enough to screen proposed material/environment/geometry combinations for
incompatibilities and life-span. Currently, engineers must sail between the Scylla of
underestimating the potency of occluded sites in causing corrosion and the Charybdis of overselecting an alloy composition and incurring excess costs.
Beyond the concrete goals of material selection, model development serves several
largely scientific aims. Constructing a model is a process in abstraction. A model seeks to
capture the relevant properties of a system and make predictions about its future behavior. A
model that cannot anticipate future occurrences has failed to capture some of the pertinent
details of the subject under study. In that sense, modeling crevice corrosion is a good vehicle
for evaluating the theories that have been developed to account for the phenomenon. If models
based on the CCS or IR* theories for the initiation of crevice corrosion fail to predict some
17
aspect of the attack, then there are either problems in the implementation of the model or the
theory is lacking in some regard. The problem of intermediate attack in crevice corrosion which
is discussed in Chapter 5 highlights one area where the current theories fall short.
A working model of crevice corrosion can also serve lesser purposes than acting as an
arbiter of a particular theory’s aptness. A good model, validated experimentally, can perform
“experiments” that cannot be done in practice. A problem in physically testing the relative
importance of different factors on crevice corrosion is that the characteristics of the
components, such as ui and Di for chemical species, cannot be changed independently.
Substituting SO4-2 for Cl- as the anion component of the supporting electrolyte to reduce the
diffusion potential can have significant effects on the behavior of the rest of the system since Clis known to be an aggressive anion. Corrosion rate, hydronium activity and pitting potential are
all aspects of crevicing behavior which are strongly affected by the concentration of chloride. In
a computer, each of these variables can be adjusted at will and independently. This allows the
individual effects of model parameters to be separated out.
Another area where models can excel is in collecting data with more resolution than can
be done physically. Sensors have finite size and cost. Instrumenting a crevice or crack currently
has strong restrictions on the number and types of sensors that can be inserted into such a small
geometry. VLSI fabrication techniques hold promise is easng those limits somewhat.[12] There is
the additional complication that the sensors may interact with the corrosion event, destroying
the process they were intended to monitor![11]
The final area where models can exceed physical systems is in long-duration testing.
18
For most large engineering structures it is impractical for the evaluation stage to last as long as
the design life of the building or vehicle. It is only of the slowest of projects that can afford to
wait for 20-40 years to check the corrosion resistance of the design. The problem of nuclear
waste disposal requires designers to take a millenial view of the life of the storage containers.[1719]
This chapter addresses the background necessary to preface the later discussion of the
particular code developed for this dissertation - CREVICER. The four subsequent sections
address basic electrochemisty, the main theories of crevice corrosion, the theory and practice
of modeling those theories and conclude by reviewing the relevant literature on crevice
corrosion modeling and mechanisms.
Electrochemistry shares with its parent field of chemistry an interest in the equilibrium
states of reactions and the kinetics that control the approach to those values. It differs in that
electron transfer is of primary importance. Metal dissolution is a good example of an
electrochemical reaction. Neutral metal atoms must be stripped of electrons to become soluble
in water. The occurrence or nonoccurrence of such processes is determined by the
thermodynamic states of the reactants defined by the species involved and their activity. For the
chemical species the activity is related to concentration. For electrons, potential is the
determining factor.
The rate at which dissolution occurs is a kinetic phenomenon. Some factors which
affect the net rate of a reaction are the driving force, temperature and any barrier layers that
may be present on the surface. In corrosion terms thermodynamics determines immunity and
19
kinetics determines corrosion rate. Section 2.1 provides a grounding in the essentials of
electrochemistry from a corrosion standpoint.
Once the rough framework for electrochemistry is developed a summary of the basic
theories of crevice corrosion can be presented. Crevice corrosion occurs when an occluded
site produces conditions in an environment which is otherwise benign that attack the underlying
metal. Two major theories of crevice corrosion have gained credence over the years. The first
is the Acid Hydrolysis / Fontana and Greene model or, in its currently accepted form, the
Critical Crevice Solution (CCS) model. The CCS model assigns primary importance to
chemistry changes in the occluded site. A competing theory, the IR* model applies to
active/passive metals and assigns primary importance to potential in controlling the rate and
location of attack. Section 2.2 goes into greater detail on these theories and their implications.
Crevice corrosion modeling is the nuts and bolts of implementing the theories presented
in section 2.3. In order to effectively model crevice corrosion not only must the correct
governing equations be used but the assumptions and limitations must be understood as well. In
order to solve the governing equations a number of approximations must be made. Such
simplifications are determined in part by the method of solution used. Section 2.3 provides the
basis for all of the later discussion of crevice corrosion modeling, both in the work of this thesis
and in the review of previous researchers’ efforts.
Finally, section 2.4 is a review of the literature on modeling crevice corrosion. It is
organized according to the types of models and the simplifications used in their solution.
20
2.1 Basic Electrochemistry
Electrochemistry is essentially chemistry with a focus on electron transfer. Corrosion in
turn is a subset of electrochemistry because it is concerned with elemental metals that must be
ionized before they can become soluble or precipitate into metal oxides, hydroxides or other
compounds. The corrosion process is the destruction of the elemental metal. This section
illustrates the basics of electrochemistry that are needed for use in corrosion modeling. It covers
the basic terminology of electrochemical reactions, the thermodynamics and kinetics of
reactions, how groups of reactions operate in concert on an interface and finally provides some
orientation on the usual representations of kinetic data, polarization curves.
2.1.1 Electrochemical Reactions
Electrochemical reactions involve electron transfer. An example would be the oxidation
of a metal in hydrochloric acid shown below.
Me % zHCl X MeClz %
z
H
2 2
(1)
Where:
z
is the number of electrons transferred
Each metal atom loses z electrons. The resulting cation joins with chloride ions to form
a metal salt. The electrons freed in the dissolution process reduce H+ to form hydrogen gas.
A full electrochemical reaction, such as shown in Equation 1 neither generates nor
21
consumes electrons. It can be viewed as consisting of two half-cell reactions. Anodic half-cell
reactions free electrons, cathodic ones consume them. On a freely corroding surface the supply
of electrons consumed and generated must exactly balance. A simple example of anodic halfcell reaction is shown below.
Me X Me z% % ze &
(2)
It is convenient to express the rate of this reaction as a current density since there is a
linear correspondence between the flux of ions and the flux of electrons.
Two common cathodic reactions are the hydrogen evolution reaction (HER) and the
oxygen reduction reaction (ORR). The HER can occur in any aqueous system.
2 H % % 2 e & X H2
(3)
In the HER protons are paired with electrons to form atomic hydrogen. These atoms
then combine chemically to form hydrogen gas. Protons (in the form of hydronium, H3O+) are
always available in solution because of the self-disassociation of water. Water molecules lyze
into hydronium and hydroxyl. Therefore, there is always a ready supply of materials for this
reaction. Consuming protons via the HER has the effect of raising the pH of the solution.
The ORR can only occur in aqueous solution in the presence of oxygen.
2 H2 O % O2 % 4 e & X 4 OH &
(4)
A single molecule of oxygen is combined with two water molecules and four electrons
22
to produce four negatively charged hydroxyls. Oxygen is only sparing soluble in water at room
temperature and pressure. It solubility is only 8 ppm.[20]. Because of this, the supply of oxygen
at an interface is easily depleted and the reaction can become limited by the mass transport of
oxygen to the surface. This reaction also raises the pH of the solution by generating hydroxyls.
2.1.2 Thermodynamics of Electrochemical Reactions
The direction in which an electrochemical reaction proceeds spontaneously is
determined by thermodynamics. A reaction goes in the direction that minimizes its Gibbs Free
Energy. The following discussion is based on Newman[21] and illustrates the reasons why
potential and chemical concentration are needed in modeling crevice corrosion.
A representative chemical reaction can be written as below:
aA X bB % cC
(5)
Where:
A,B,C are the reacting species
a,b,c
are the respective stoichiometric coefficients
The change in Gibbs Free Energy for the above reaction can be found by using the
stoichiometric coefficients and the molar Gibbs free energies of the individual species.
) G' j <iG i
i
' bG B % cG C & aG A
(6)
23
Where:
∆G
is the total change in Gibbs free energy [j/mol]
νi
is the stoichiometric coefficient for species i [unitless]
Gi
is the molar Gibbs free energy of species i [J/mol]
The value of ∆G determines the direction that the reaction proceeds in. If the change in
Gibbs Free Energy is positive the reaction proceeds to the left, i.e., B and C will be consumed
to generate A. If it is negative, the opposite will happen. A will be destroyed to create B and C.
The reason that a given reaction will go in different directions in different situations is that Gi is
not a constant. It has a functional dependency on the thermodynamic state. In addition to being
a function of temperature and pressure, the molar Gibbs Free Energy of a species depends
strongly on the species’ concentration.
2.1.2.1 Thermodynamic Effects of Concentration
The chemical potential, µi , of a pure species is identical to its molar Gibbs free
energy[22].The chemical potential depends on the species and its activity as shown in the
following equation.
0
µi ' µi % RT ln(ai)
0
' µi %RT ln((i C i)
Where:
µi
is the chemical potential of species i [J/mol]
(7)
24
µi0
is the chemical potential of species i in the standard
state [J/mol]
R
is the universal gas constant [J/mol-K]
T
is the absolute temperature [K]
γi
is the activity coefficient of species i [m3/mol]
Ci
is the concentration of species i [mol/m3]
Assuming for simplicity in this illustration that γi = 1 and using Equation 7, we can write
the change in Gibbs free energy in Equation 6 as:
0
0
0
) G ' b µB % b RT ln(C B ) % c µC % c RT ln(C C) & a µA % a RT ln(C A )
b
'
0
b µB
%
0
c µC
&
0
a µA
% RTln
c
C B @C C
(8)
a
CA
The change in Gibbs free energy has the form of a constant, determined by the species
involved, plus a variable portion that depends on the concentrations. Because the stoichiometric
coefficients and the chemical potentials in the standard state are fixed, the concentrations of the
species CA , CB , and CC determine the direction in which the reaction will proceed.
The previous discussion dealt only with reactions between chemical species. In
electrochemical reactions electrons are transferred. Their availability is determined by the
potential and this is discussed in the next subsection.
25
2.1.2.2 Thermodynamic Effects of Potential
Electrons are active participants in electrochemical reactions. They can be treated as a
chemical species if their chemical potential is written as -zFE[23]
µe & ' &z F E
(9)
Where:
µe-
is the molar Gibbs free energy of the electrons [J/mol]
z
is the number of electrons transferred in the reaction
[eq/mol]
F
is Faraday’s constant 96,487 [C/eq]
E
is the potential [V]
For the simple electrochemical dissolution reaction in Equation 2 the change in G would
be :
) G ' µMe %z & zFE & µMe
(10)
Where:
∆G
is the change in Gibb’s Free Energy [J/mol]
µMe+z is the chemical potential of the metal cation [J/mol]
E
is the potential across the solid/liquid interface [V]
µMe
is the chemical potential of the solid metal [J/mol]
26
The chemical potential of the metal cation, µMe %z , depends in part on the concentration
of ions in solution as shown in the previous subsection. The chemical potential of the reduced
metal solid phase, µMe , is a constant since the activity for solid products is always unity. The
availability of electrons for the reaction is controlled by the potential at which the reaction
occurs. This factor is easily controlled and determines the direction in which the reaction
proceeds.
One potential which is of particular interest is the one at which the reaction is at
equilibrium. This potential is called the reversible potential and is denoted as E0. It occurs where
the change in Gibbs free energy is zero.
0
0
0 ' µMe %z % RT ln(CMe %z) & zFE 0 & µMe & RT ln(Cm e)
(11)
This equation can be solved to express the reversible potential for a reaction in terms of
the thermodynamic constant for the species involved and, assuming that the activity coefficients
are uniformly one, their concentrations. This is called the Nernst Equation.
0
0
E '
0
µMe %z & µMe
zF
%
C %z
RT
ln Me
zF
CMe
Where:
E0
is the reversible potential [V]
(12)
27
The reversible potential for any half-cell electrochemical reaction can be can be
calculated from a suitably modified version of Equation 12. Only half-cell reactions have
reversible potentials. When electrons are transferred in a full-cell reaction irreversible work is
performed. From an examination of Equations 11 and 12 it is apparent that at potentials below
E0 the cathodic, or electron-consuming direction is favored and that at potentials above E0 the
anodic or electron-freeing direction is preferred.
Thermodynamics can only make statements about the direction in which a reaction will
occur. It says nothing about the rate at which a reaction occurs. That discussion is the domain
of kinetics.
2.1.3 Half-cell Kinetics
Kinetics determine the rate at which a reaction occurs. This rate can either be
controlled by the energy available to drive electron transfer, activation control, or the rate at
which reactants can either arrive at or leave from the interface, mass transfer control. The
following section is based on Bard and Faulkner[24], the equations have been modified for clarity
in this context and notation.
2.1.3.1 Activation Control
An electrochemical reaction, such as Equation 2, has two rate constants. One affects
the reactions in the forward direction, the other, the reverse direction. This is shown in the
28
equation below.
kf
Me W Me z% % ze &
kb
(13)
Where:
kf
is the rate constant for the heterogeneous forward
reaction [m/s]
kb
is the rate constant for the heterogeneous back reaction
[m/s]
The net rate at which a reaction occurs is the difference in the rates of metal oxidation
and reduction. These rates are simply the concentrations of the species times the probability
per unit time of the reaction occurring.
v f ' k fCMe '
v b ' k b CMe z% '
Ian
zFA
Ica
zFA
(14)
(15)
Where:
vf
is the velocity of the forward heterogeneous reaction
[mol/m2-s]
vb
is the velocity of the backward heterogeneous reaction
29
[mol/m2-s]
Ian
is the anodic current [A]
Ica
is the cathodic current [A]
The rate constants kf,and kb can be deduced from an examination of free energy curves.
The Gibbs free energies of the reduced metal atom and the oxidized metal ion can be shown as
a function of the reaction coordinate. This is shown in Figure 2.1.3(a). The energy barrier to go
from the Me to the Me+z + ze- state has a height of ∆G0a. Likewise the barrier to go from the
oxidized to the reduced states has a barrier height of ∆G0c.
The laws of thermodynamics discussed in the last section determine the Gibbs free
energies of the endpoints of the reaction coordinates and thus the direction in which the reaction
will occur. The shape of the curves between those points affects only the rate at which
equilibrium will be approached. To go from one state to the other an atom must acquire
sufficient energy to jump surmount the energy barrier. High barriers can only be crossed by the
most energetic of atoms and thus act to slow the rate of the reaction.
Applying a potential to the reaction changes the availability of electrons and shifts the
Gibbs free energy curve of the oxidized states. In addition to changing the thermodynamic
equilibrium between the two states, this affects the kinetics by changing the heights of the kinetic
barriers. Applying a positive potential decreases the availability of electrons and lowers the
energy of the oxidized states. This increases the energy barrier going from the oxidized to the
reduced states and lowers the barrier going from the reduced to the oxidized states.
30
The magnitude of the decrease in the energy barrier for the reaction in the anodic
direction can be calculated by the following equation as shown in Figure 2.1.3(a).
(
(
)G a ' )G0a & (1&")zFE
(16)
Where:
∆Ga*
is the Gibbs free energy of activation for the anodic
reaction [J/mol]
∆G0a* is the standard Gibbs free energy of activation for the
anodic process [J/mol]
α
is the symmetry factor [unitless]
z
is the number of electrons transferred [eq/mol]
F
is Faraday’s constant [C/eq]
E
is the applied interfacial potential [V]
Likewise, the increase in the energy barrier for the reaction going in the cathodic
direction.
(
(
)Gc ' )G0c % "zFE
(17)
Where:
∆Gc*
is the Gibbs free energy of activation for the cathodic
31
reaction [J/mol]
∆G0c* is the standard Gibbs free energy of activation for the
cathodic reaction [J/mol]
The symmetry factor α apportions zFE between reducing the barrier for the reaction in
the anodic direction and increasing it going in the cathodic direction. Alternately, for a negative
E it would apportion the zFE between increasing the height of the energy barrier for the anodic
reaction and decreasing for the cathodic reaction. If the intersection of the curves was
symmetrical, then the value for α would be 0.5. For most reactions it lies between 0.3 to
0.7[24].
In order to convert the barrier heights into reaction rates an Arrhenius form must be
assumed for the rate constants as shown in the equations below.
(
&
k f ' A fe
(
)G a
&
RT
' A fe
)G0a
RT
(
&
k b ' Abe
(18)
&"zFE
RT
(19)
(
)G c
RT
e
(1&")zFE
RT
&
' Abe
)G0c
RT
e
Where:
kf
is the forward rate constant [m/s]
kb
is the backward rate constant [m/s]
32
Af, Ab are the frequency factors for the forward and back
reactions [m/s]
E
is the interfacial potential for the reaction [V]
R
is the Universal gas constant 8.314 [J/mol-K]
T
is the absolute temperature [K]
It is only the second exponential term in each equation that is potential dependent. The
form for the rate constants can be simplified to a constant and a single exponential.
kf '
0
kf e
kb '
(1&")zFE
RT
(20)
&"zFE
RT
(21)
0
kb e
Where:
kf0
is the heterogeneous rate constant for oxidation [m/s]
kb0
is the heterogeneous rate constant for reduction [m/s]
While this form appears to be acceptable, there is a hidden problem in that E as it
appears in this equation is not referenced to any standard state. To get around this problem a
standard rate constant must be defined.
We can define a reference potential E0 at which the forward and backward reactions
occur at equal rates when the concentrations of the reactants are equal. These reaction rates
are defined as the standard rate constant k0.
33
k
0
0
kf e
'
(1&")zFE 0
RT
'
0
kb e
&"zFE 0
RT
(22)
Where:
E0
is the reversible potential [V]
k0
is the standard rate constant
These terms can be substituted into equations 18 and 19 to yield the following final
forms for the forward and backward rate constants.
0
kf ' k e
0
(1&")zF(E&E 0)
RT
(23)
&"zF(E&E 0)
RT
(24)
kb ' k e
34
2.1.3.1.1 Butler-Volmer Equation
The Butler-Volmer Equation relates the net current to the overpotential and groups the
various physical constants into two: the symmetry factor, α, and the exchange current density,
i0. This derivation starts with Equations 14 and 15 and a statement that the net current is the
difference of the anodic and cathodic currents.
I ' Ia & Ic ' zFA k fCMe & k b CMe %z
(25)
Where:
I
is the net current [A]
Ia
is the anodic current [A]
Ic
is the cathodic current [A]
Substituting Equations 23 and 24 into Equation 25 and grouping like terms yields the
following.
I ' zFAk 0 CMee
(1&")zF(E&E 0)
RT
& CMe z%e
&"zF(E&E 0)
RT
(26)
The utility of this equation is limited by the need to use the concentrations of the
oxidized and the reduced species at the surface. To put it into truly useful form, a series of
substitutions must be made.
The first step is to define an equilibrium potential, Eeq, so that when the potential is
35
equal to Eeq, the net current is equal to zero. When the net current is zero, Equation 26 allows
us to make the following relationship between the concentrations of the various species.
&"zF(E eq&E 0)
RT
CMe z% e
(1&")zF(E eq&E 0)
RT
' CMe e
(27)
Where:
Eeq
is the equilibrium potential [V]
The only unknowns in this equation are the concentrations of the reacting species, CMez+
and CMe.. Their ratio can be expressed in terms of the number of electrons transferred,
Faraday’s constant, the temperature, the gas constant, the reversible potential and the
previously defined equilibrium potential.
CMe z%
CMe
zF(E eq&E 0)
' e
RT
(28)
Even though the net current at E = Eeq is zero, both Ia and Ic have finite values. Their
magnitude is defined as i0, the exchange current density.
i0 '
Ia
A
Where:
'
Ic
A
&"zF(E eq&E 0)
' zFk 0 CMe z%e
RT
(29)
36
is the exchange current density [A/m2]
i0
From Equation 29 we can express the exponential in terms of the ratio of the reactant
concentrations raised to the -α power. Substituting Equations 28 into 29 yields the following
expression for the exchange current density.
i0 '
Ic
A
1&"
&"
' zFk 0 CMe z%C Me
(30)
Equation 25 can now be written in terms of current density. This is generally called the
Butler-Volmer equation.
i ' i0 e
(1&")zF0
RT
& e
&"zF0
RT
(31)
Where:
η
is the overpotential, E - E0 [V]
At low overpotentials, values of E within tens of millivolts of E0, the values of the
anodic and cathodic currents are nearly equal and an expansion of the exponential terms shows
that the current potential relationship is nearly linear. At higher overpotentials the appropriate
current begins to dominate and the net current asymptotically approaches an exponential
dependence on overpotential.
The purpose of this derivation was to show that the current is a strong function of
potential, especially at higher overpotentials. This is seen in the exponential terms in Equation
37
31. The net current also depends on the concentrations of the reactants. That functionality is
incorporated into the exchange current density, i0.
These dependencies must be accounted for in any model of crevice corrosion. The
exponential dependence of current on potential poses some special mathematical difficulties as
discussed in subection 4.2.4.
Butler-Volmer kinetics are the simplest theory used to represent reactions on surfaces.
They assume that the concentrations of the reactants are constant and are neither depleted nor
enriched no matter the reaction rate. This assumption is discussed in the next sub-section.
In addition to ignoring the mass transport of the reacting species, the theory assumes
that the surface remains the same at all potentials. In reality, the character of the surface is
potential dependent. Oxides and other layers may be deposited or removed. Typically, such
effects are measured rather than modeled. The current-potential relationship of a metal in an
environment can be measured directly. The trace of the relationship is called a polarization
curve and is discussed in subsection 2.1.4.
2.1.3.2 Mass Transfer Control
As a reaction proceeds it consumes reactants and generates products. Either a lack of
reactants or a surfeit of products can impede a reaction and slow its rate. The magnitude of this
slowing can be found by using the limiting current densities for both the anodic and cathodic
reactions. Equation 32 below is taken from Bard and Faulkner[24]. A complete derivation is
given there.
38
i
'
i0
1 &
i
il,c
e
&"zF0
RT
&
1 &
i
il,a
e
&"zF0
RT
(32)
Where:
il,c
is the the limiting current density for the cathodic
reaction [A/m2]
il,a
is the the limiting current density for the anodic reaction
[A/m2]
When a reaction is mass transport limited the reaction rate is restricted by the speed
with which ions can be moved either from or to the interface. This rate at which ions can be
transferred depends on the surface and bulk concentrations, the transport coefficients, and for
charged species any assisting or delaying potential field.
2.1.4 Polarization Curves
A polarization curves shows the relationship between net current and potential.
Typically, this behavior is plotted on a semi-logarithmic plot with potential on the y-axis and the
magnitude of the net current on the logarithmic scale. This presentation may seem slightly odd
as potential is usually thought of as the independent variable, but it is a convention of
electrochemistry to plot the data in this fashion.
Figure 2.1.4(a) shows a polarization curve of the Butler-Volmer Kinetics developed in
39
Equation 31. The dotted line represents the current due to the anodic reaction of metal
dissolution. The dashed line shows the magnitude of the current caused by the cathodic metalplating reaction. The magnitude is plotted since negative currents cannot be shown on a
logarithmic axis. The magnitude of the net current is the difference between the anodic and
cathodic currents. At low overpotentials the net current is small. At larger overpotentials the
magnitude of the current asymptotically approaches either the anodic or cathodic halfcell
current. The slope of the half-cell currents is determined by the symmetry factor, α, and the
number of electrons exchanged, z.
When a polarization curve is measured the potentiostat (via the counter electrode) acts
to either supply or remove electrons from the surface under study. If such a source or sink is
not available, then the potential of the surface is determined by the conservation of charge. In
systems such as reference electrodes where only single reaction is present, a freely corroding
surface will take on the reversible potential. Such a system was illustrated as in Figure 2.1.4(a).
Notes that this implies that on an isolated surface where only a single electrochemical reaction is
possible, the lack of a counter electrode means no net reaction can occur. Unfortunately, most
surfaces however have two or more electrochemical reactions occurring on them simultaneously
and they can corrode without the presence of a separate counter electrode.
A corroding metal has two or more electrochemical reactions occurring on it
simultaneously. The construction of a polarization curve for this case is shown in Figure
2.1.4(b). For the purposes of discussion the metal surface has two purely Tafel reactions
occurring on it. One reaction is the metal dissolution/plating reaction developed earlier. The
40
other reaction is the Hydrogen Evolution Reaction (HER) which was first presented in Equation
3. It is so named because it usually occurs in the cathodic direction and converts protons from
the self-hydrolysis of water into atomic hydrogen. If only the metal dissolution reaction were
considered, the potential of the free surface would be the reversible potential of that reaction
E0,Me/Me+z. Likewise, if the HER were the only reaction the potential of the surface would be
E0,H/H+. When the two reactions occur on the same surface the potential must reach a value
where the total number of electrons consumed is equal to the number generated. The potential
at which this occurs is the corrosion potential, Ecorr. The rate of each half-cell reaction at this
potential is the corrosion current, icorr. An important distinction is that whereas both surfaces
with single electrochemical reactions, such as reference electrodes, and the more typical
surfaces with multiple reactions, will reach a free potential where the net current is zero, the net
reaction rates are very different in the two cases. For a surface with a single reaction, no net
current means no net reaction. For surfaces with more than one reaction, at zero current both
half-cell reactions can be proceeding at very high, yet equal, rates.
The Tafel reactions that have been described previously cannot be used to describe all
electrochemical reactions. In addition to ignoring the effects of mass transport as shown in
Equation 32, the theory ignores the effects of changes in the surface state. At certain potentials
films can form on a corroding surface. If such films produce a continuous layer over the surface,
they can greatly impede the dissolution reaction or the cathodic reactions required to support it.
Typically these films are metal oxides, although metal sulfides or salts can also form and have
similar effects.
41
Figure 2.1.4(c) shows a polarization curve for an active/passive metal. As the metal is
polarized above its corrosion potential, Ecorr, the dissolution rate increases. At the primary
passivation potential, Epp, a protective metal oxide begins to form. Further increases in potential
increase the area of this film, and actually decrease the current coming from the surface. This
effect is counter-intuitive. At potentials between Epp and Eflade an increase in driving force causes
a decrease in reaction rate. This effect is due solely to the kinetic barrier imposed by the
growing oxide film. When the Flade potential, Eflade, is reached, the film covers the entire
surface and further increases in potential have no effect on the current. This lack of potential
dependence continues until the overpotential becomes so great that it destabilizes the film. This
destabilization can happen either locally and cause pitting or uniformly and cause transpassive
behavior. In the former case the critical potential is called Epit, in the latter Etp.
The current generated at a metal/solution interface is a complicated function of
potential, chemistry, and surface state. Analytic representations of the relationship are only
possible for the simplest cases. A model of crevice corrosion must have some method of
representing the possible polarization curves. The various techniques that can be used are
discussed in section 2.3.
Summary
This section has covered the basics of thermodynamics and kinetics as applied to
corrosion. This grounding in the influences of potential and chemistry on reaction rates is a
necessary prelude to a discussion of the theories on the controlling factors of crevice corrosion.
42
Crevice corrosion can be viewed as an autocatalytic phenomenon. The right (or depending on
your point of view, wrong) geometry for a particular material/environment combination will
spontaneously generate and sustain the conditions for a dramatic increase in corrosion rate. The
next section discusses the various theories as to why and how crevice corrosion occurs.
46
2.2 Theories of Crevice Corrosion
The simplest definition of crevice corrosion is that the presence of an occluded
geometry causes rapid corrosion of a material in an environment to which it would otherwise be
relatively immune. The aggressive geometry is often called an occluded site because it acts to
restrict a volume of solution’s access to the bulk environment. Some characteristic of the
occluded site allows the conditions there to become progressively more damaging to the
underlying metal. There are two main theories to explain how the conditions change to cause
crevice corrosion: the Critical Crevice Solution (CCS) and Critical Potential Drop (IR*)
models. They differ in assigning paramount importance to changes within the crevice in
chemistry and interfacial potential respectively.
2.2.1 CCS Model
The CCS model for the initiation of crevice corrosion assumes that the paramount
function of the crevice former is to act as a barrier to chemical flux. The effects of potential on
corrosion rate are ignored. The theory was first proposed by Fontana & Greene[3] to explain
the crevice corrosion of stainless steels. It was later refined and quantified by Oldfield and
Sutton who gave the theory the name by which is usually referred - the Critical Crevice Solution
model. The basic gist of the model is that slowly diffusing metal cations accumulate in the
occluded site, attract rapidly moving chloride ions, and hydrolyze to form a hydrochloric acid
solution. This acid is more aggressive than the bulk electrolyte and causes an increase in
47
corrosion rate and in turn more hydrolysis. The process feeds on itself and destroys the
underlying substrate. Fontana and Greene represented the process as occurring four steps.
1) Deoxygenation: The free oxygen within the occluded site is consumed. Oxygen is
only sparingly soluble in room temperature water (8 ppm) and the original
charge in the crevice is rapidly used up. It is not replenished because any O2
molecules which start to diffuse down the long diffusion path of the occluded
site are consumed near the mouth. The net effect is that the cathodic reactions
to support dissolution in the crevice occur outside the crevice because it is
easier to move electrons through the metal substrate than ions through solution.
This separation is vital because the common cathodic reactions or HER and
ORR generate alkalinity as was shown in section 2.1. If cathodic reactions
occurred in the crevice they would offset the acid generation that is step 2 in the
process.
2) Hydrolysis: Metal cations have a tendency to form metal hydroxides as will be
discussed in subsection 2.3.2.3.2.1 and section 5.3. This chemical reaction has
the effect of lowering the pH. The occluded site places a large diffusion path
between the crevice depths and the bulk environment. Because of this barrier
the metal cations accumulate and the drop in pH is concomitantly greater. This
effect is only visible because the cathodic reactions are occurring elsewhere.
3) Chloride Ingress: Because only anodic reactions are occurring in the crevice only
positive charge is being injected into solution there. This positive charge
48
generation must be matched by charge transport. Either positive charge must
flow out of the crevice or negative current must flow into it. Chloride ions will
flow into the crevice to balance the positive charge. Chloride acts to destabilize
the passive film, acting along with the increased acidity to increase the corrosion
rate.
4) Autocatalytic: The acid generation by metal hydrolysis and rise in chloride levels to
balance the charge act to raise the corrosion rate. This leads in turn to more
hydrolysis and more chloride and the process takes off in an autocatalytic
manner.
This process is illustrated in Figure 2.2.1(a).
Another way of viewing the CCS process is to visualize how the conditions change
inside a crevice and how that interacts with the relevant polarization curves. Figure 2.2.1(b)
helps in this process. Part (a) is a schematic of the crevice. It is a one-dimensional crevice and
is open at one end. Three points, the circle, square, and triangle are marked at increasing
distances from the mouth. For the sake of simplicity, the only chemical parameter considered in
this case is pH. The pH distribution inside the crevice is shown in part (b). The points marked
there correspond with the positions in (a). The pH drops continuously from the mouth to the
base. The effects of changes in solution chemistry appear in the polarization curve of a material
in that environment. Part (c) shows the polarization curves for the metal at pH’s 3,5, and 7.
Since the CCS theory ignores the effect of potential, the conditions for each of the reference
49
points occur at the crevice potential Ecrev on the appropriate polarization curve. From the
information in (a), (b) and (c) the current as a function of position can be calculated and is
displayed in part (d). The current increases continuously from the mouth to the base. Indeed, it
should be noted that these conditions are actually producing an exponentially increasing current
since the current axis in (d) is logarithmic.
CCS’s strengths are that it explains the relative susceptibilities of various stainless steel
alloys to crevice corrosion and it accounts for the initiation time. A stainless steel’s susceptibility
can be found by comparing the aggressiveness of the solution a metal salt of the alloy makes
and the metals resistance to acidic chloride environments. If a metal is resistant to a saturated
solution of its own salt, then it will not corrode according to the CCS model. The initiation time
arises from the amount of dissolution that must occur before a sufficiently aggressive solution is
achieved.
The principal problem with the CCS model is that ignores the effects of potential on
generation. Potential has a large effect on reaction rate. The derivation of the Butler-Volmer
kinetics given in subsection 2.1.3.1.1, although of limited applicability, shows that the chemical
effect appears only in the pre-exponential whereas the potential appears in the exponent itself.
Aqueous solutions are resistive. Current flow through solution will cause a potential
drop. At small current densities it may be appropriate to ignore this ohmic potential, but as the
crevice initiates the current (and thus the potential drop) will increase by several orders of
magnitude. The implications of this are discussed in depth in the next subsection, 2.2.2, on the
competing IR* theory of crevice corrosion.
50
In addition to affecting the rate of the anodic dissolution reaction, lowering the metal
potential inside the crevice can also speed the rate of the cathodic reactions. While it requires a
special set of circumstances above and beyond potential drop to actually cause any portion of a
crevice to be polarized cathodically, cathodic reactions are also influenced by overpotential.
Decreases in positive overpotentials cause exponential increases in cathodic current. Evidence
of cathodic reactions occurring inside crevices was found by Pickering and Frankenthal[25]
where they observed bubbles of hydrogen gas being generated at the base of crevices.
A final limitation on the CCS model is that ignoring potential not only affects generation
within crevice, it affects the mass transport of the charged species. The potential field of a
crevice held anodically will speed the egress of positive cations as well as the ingress of
negative cations.
53
2.2.2 IR* Model
The IR* model for the initiation of crevice corrosion assumes that the paramount
function of the crevice former is to act as a barrier to electrical flux. The theory ignores the
effects of the accumulation of chemical products within the crevice. It was put into its generally
recognized form by Pickering[10]
The steps of the IR* process for the initiation of crevice corrosion on active/passive
metals are shown in Figure 2.2.2(a).
1) Separation of Anodic and Cathodic Sites: This can be caused by oxygen depletion
inside the crevice or if the entire surface is being polarized anodically by another
electrode. Until this occurs no there is no net current flowing from any surface
since the anodic and cathodic reactions are everywhere equal.
2) Flow of Anodic Current from Crevice: Positive current flowing into solution from the
metal surfaces inside the crevice must cross the electrically resistive solution.
3) Resulting Potential Difference: The net current flow over the electrical resistance
causes a potential difference to arise between the crevice and the cathodic sites
on the boldly exposed surface.
The effect of this resulting potential difference depends on the nature of the polarization
curve for the material/environment system. For a metal that exhibits Tafel behavior, potential
drop is always protective because it lowers the driving force for dissolution. For an
active/passive metal, such as the one shown in Figure 2.1.4(c), that is held in its passive region
54
the effects of potential drop can be disastrous.
This is illustrated in Figure 2.2.2(b) Part (a) is a schematic of the crevice. It is a onedimensional crevice and is open at one end. Three points, the circle, square, and triangle mark
increasing distances from the mouth. The electrolyte is assumed to remain of constant
composition. Current flow from the sources within the crevice causes potential drop. The
resulting potential distribution within the crevice is shown in part (b). The points marked there
correspond with the positions in (a). No importance should be attached to the depicted slopes
of the potential distribution. Obviously they depend on the currents generated as well as the
intra-crevice solution resistances. The only statement that can be made is that the potential will
decrease monotonically. An active/passive polarization curve for this material shown in part (c).
From the potentials of part (b) the current densities at each point an be found. These are shown
in part (d).
The critical amount of potential drop which must occur to initiate crevice corrosion is
the difference between the potential at the mouth and the Flade potential. This difference is
called IR* and it lends its name to the entire theory.
The position within the crevice at which the critical IR* is achieved depends on the
crevice geometry and solution conductivity. Both of these parameters change during the course
of a crevicing event. Increasing the solute concentration of the electrolyte will raise the
conductivity and push the active site deeper into the crevice. Changes in crevice geometry will
have a tendency to drive the active site deeper by widening the crevice as well as a small
offsetting tendency to draw the site to the mouth by increasing the area available for corrosion.
55
IR depends on the total amount of current, so a larger geometric area will produce more
current and thus pull the active site forward.
The strength of the IR* model is that it can predict the location and morphology of
attack and has been shown to operate in systems where there is no possibility of significant
changes in composition[5]. The IR* model is able to predict IA as will be discussed in
subsection 5.2.2.
The weaknesses of the model are that it can only be operative for active-passive metals
and that it cannot rationalize the observed incubation times. Potential distributions should be
established nearly instantaneously because the propagation of an electric field in any reasonable
dielectric is very rapid.
58
2.2.3 Comparison of Models
The CCS and IR* models stress the importance of different aspects of crevice
corrosion. The principal differences between the models are that IR* is limited to only activepassive systems and that CCS can explain the presence of incubation times.
Various changes in experimental parameters will have differential effects if one or the
other of the theories is dominant. A supporting electrolyte will have a tendency to shift the
location of attack deeper into the crevice or prevent it entirely if IR* is dominant. If CCS,
which assumes no potential variations within a crevice, is dominant then independently changing
the solution conductivity should have no effect.
Another change which would affect the crevice resistance would be features that
changed the crevice profile such as precipitation or subcrevices. Reducing the crevice gap in
such a manner would tend to increase the aggressiveness according to both the IR* and the
CCS theories. Increasing the isolation of the crevice will either increase the metal ion content in
the crevice or reduce the potential.
Finally, crevices corroding according to the CCS model can be differentially affected in
a buffering agent is used. This technique was used by Pickering[5] to prove that the CCS was
not operative in the exemplar crevices he used to prove the applicability of the IR* mechanism.
Both of the dominant models to explain crevice corrosion make qualitative predictions
about changes, chemical or electrical, in the crevice environment. The equations governing the
transport of chemical species and electrical charge through aqueous solutions have been studied
since Faraday. It is a natural development to attempt to represent these theories in terms of
59
models. The goal is always a mathematical model which accurately represents the physical
situation and is useful in predicting the likelihood, location, and time of attack for use as a design
tool. Additionally, these models can be useful in an abstract sense for evaluating the theories
about crevice corrosion themselves, since a functioning model tends to suggest the accuracy of
the underlying assessment of the corrosion process
60
2.3 Principles of Modeling Crevice Corrosion
The corrosion rate of any material is determined by its chemical environment and
electrochemical potential. Modeling of crevice corrosion is aimed at understanding and
predicting the changes in those factors in the crevice environment, both in space and time.
Section 2.3 discusses the basic principles that are used to make such predictions. It provides an
overview of the equations used in modeling, examines in depth the factors that affect each term
in those equations, provides a compact summary of how those terms are simplified to make the
equations tractable and ends with a quick primer on the numerical methods used to solve the
problems posed by crevice corrosion.
Subsection 2.3.1 examines the origins and derivations of the commonly encountered
governing equations used in modeling crevice corrosion. These equations are derived from the
basic flux equations for chemical and electrical species in aqueous solutions.
Subsection 2.3.2 provides a more in-depth look at the individual terms that go into the
equations. It explains the common use of concentration rather than activity in diffusion
equations, the hydrolysis reactions which are commonly encountered, and the meaning of
“potential” in various contexts.
Subsection 2.3.3 summarizes the different types of simplifications which are commonly
used in crevice corrosion modeling and explains their individual strengths and weaknesses.
The last subsection, 2.3.4, concludes by discussing the various types of mathematical
techniques which are used to solve the equations derived in 2.3.1.
61
2.3.1 Governing Equations Commonly Used in Crevice Corrosion
Modeling of crevice corrosion is a search to understand and simulate the chemical and
electrical changes which occur inside occluded sites. The equations which determine the rate of
change of chemical concentration or electrical charge density are both derived from their
underlying flux relationships. It is useful to go through this process for both the transport of
chemical species and the motion of electrical flux. Initially the focus will be on the commonly
encountered forms of the equations. Subsections 2.3.2 and 2.3.3 will discuss the assumptions
that are implicit in these equations.
2.3.1.1 Chemical Transport Processes
Chemical species can be transported by three separate mechanisms:
Convection: The motion of a species that is being carried by the bulk flow of
the electrolyte. The motion of sand particles along a beach is caused
by convection.
Diffusion: The motion of a chemical species down a gradient in Gibbs Free
Energy. The motion perfume of molecules through still air is an example
of diffusion.
Migration: The motion of a charged chemical species under the influence of an
electrical field. The motion of electrons through a light bulb when it is
powered is an example of migration.
At their heart, each of the three processes can be represented in a similar fashion. This
62
similarity is used in deriving the flux relationships for each of the forces. The derivations are
based on the class notes for MS 792 - Diffusional Processes in Materials.[26]
The motion of a chemical species is a flux. A flux has magnitude and direction (it is a
vector) and is commonly expressed in terms of quantity per area per time. A general equation
for a flux is given below:
J˜i,force ' C i v˜i,force
(33)
Where:
2
J˜i,force is the flux vector of species i due to force [mol/m -s]
Ci
is the concentration of species I [mol/m3]
v˜i,force is the velocity vector of species i due to force [m/s]
Simply stated, the flux of a species, i, due to a force is the product of the concentration
of species i and the velocity of the species imparted by that force.
2.3.1.1.1 Convection
Convective transport occurs when a chemical species is “carried along” by a flowing
electrolyte. Barring other forces, each molecule in a solution will tend to have the same velocity
- that of the solution as a whole. The flux equation for convection follows directly from
Equation 34.
63
J˜i,conv ' C i v˜
(34)
Where:
J˜i,conv is the flux vector of species i due to convection
[mol/m2-s]
v˜
is the velocity vector of the solution [m/s]
While convective flow is easy to visualize, it is rarely used in modeling. Generally, the
only force present to cause bulk fluid flow would be the occurrence of density changes as the
crevice solution becomes concentrated in metal ions and neutralizing negative anions. This
force is small. Typically, it is thought that the solution inside of occluded sites will remain
stagnant because the extremely small height of a typical crevice and the lack of a significant
driving force.
An exception to the above rule is encountered in studies of the crack environment in
corrosion fatigue. The cyclical force applied to such cracks alternately opens and closes the
site. This provides a “crack pumping” mechanism that forces convection[27]. When the
maximum applied stress is applied the crack flexes and opens to its largest volume. When the
stress is removed or reversed the material springs back to its original shape and the crack
volume decreases. This ejects any excess solution that was drawn in on the previous application
of stress. Depending on the magnitude of the stress and the frequency with which it is applied
this may be a significant effect.
64
2.3.1.1.2 Diffusion
Diffusional transport occurs when a chemical species travels from an area where it has
high chemical activity to one where it has low activity. This movement happens spontaneously.
To calculate the velocity due to a force it is convenient to represent the velocity of the species
as the product of a driving force and a mobility constant that scales the resulting velocity to the
force applied. For diffusion, the scaling factor is mobility and the driving force is the gradient of
chemical potential
~
v˜i,diff ' &u~i @ L̃µi
(35)
Where:
v˜i,diff
is velocity vector for species i due to diffusion [m/s]
~
u~i
is the mobility tensor [m2-mol/J-s]
L̃µi
is the gradient of chemical potential of species i [J/molm]
In general, the mobility is a second rank tensor. In liquids, however, the mobility has no
directional dependence. In other words, the mobility of a species i is a scalar, ui. This allows
the flux caused by diffusion to be represented as:
J˜i,diff ' &C i ui L̃µi
(36)
65
Where:
J˜i,diff
is the flux of species i due to diffusion [mol/m2-s]
ui
is the mobility constant for species i [m2-mol/J-s]
Equation 36 is not the commonly encountered expression for the diffusive flux of a
species. That more recognized form is given below and will be used to develop the mass
transport equation.
Ji,diff ' &Di L̃C i
(37)
Where:
Di
is the diffusivity of species i [m2/s]
L̃C i
is the gradient of concentration of species i [mol/m4]
Given the proper set of assumptions, Equations 35 and 36 are equivalent. This is shown
in subsection 2.3.2.1.
2.3.1.1.3 Migration
Migration occurs when a charged species is propelled by an electric field. Neutral
species, such as water or O2 , do not migrate. The velocity of an ion due to migration can be
found by dotting the mobility tensor and the force due to migration.
66
~
v˜i,m ig ' &u~i @ F̃i,m ig
(38)
Where:
v˜i,m ig
is velocity vector for species i due to diffusion [m/s]
~
u~i
is the mobility tensor [m2-mol/J-s]
F̃i,m ig is the force for migration of species i [J/mol -m]
A charge in an electric field experiences a force equal to the magnitude of the charge
times the electric field as shown in the equation below.
F̃i,m ig ' qi EP
(39)
Where:
qi
is the charge on species i on a molar basis [C/mol]
EP
is the electric field vector [V/m]
The charge can be found on a molar basis from the charge number of each species and
Faraday’s constant.
q i ' zi F
Where:
(40)
67
zi
is the charge number for species i [eq/mol]
F
is Faraday’s constant 96,487 [C/eq]
The electric field is found from the gradient of the solution potential, L̃Ns . The solution
potential is defined and differentiated from the electrochemical potential, E, in section 2.3.2.
EP ' L̃Ns
(41)
Where:
L̃Ns
is the gradient in solution potential [V/m]
The velocity imparted to a chemical species can be found by substituting in Equations
39, 40 and 41 into 38 and scaling the force caused by migration by the mobility.
~
v˜i,m ig ' &u~i @ ziF L̃Ns
(42)
Where:
v˜i,m ig is the velocity of species i due to migration [m/s]
~
The mobility factor is again u~i and the force is equal to - ziF L̃Ns . As was mentioned
previously, in aqueous solution the mobility of a given species is a constant in all directions.
Thus, ui can be used in place of the mobility tensor. When the resulting velocity is used in
Equation 33 the flux equation for migration is found.
68
J˜i,m ig ' &C i zi F u i L̃Ns
(43)
Where:
J˜i,m ig is the flux of species i due to migration [mol/m2-s]
2.3.1.2 Mass Transport Equation
The three transport processes of convection, diffusion, and migration represented in
Equations 33, 36, and 43 are combined to create the mass transport equation.
J˜i ' C i v˜ & Di L̃C i & zi F u i C i L̃Ns
(44)
It should be noted at this point that the second two terms, diffusion and migration, are
really just separate aspects of one transport process, motion under a gradient of Gibbs Free
Energy. Separating the effect of the gradient in solution potential from the gradient in
concentration is a matter of convenience and custom[21].
2.3.1.3 Conservation of Mass
The concentration any species in an infinitesimal volume of solution depends on the net
flux of the species into or out of the volume and the generation or consumption of the species in
the volume. Since the net flux out of a volume is the negative of the divergence of the flux, the
rate of change of concentration for a species with time can be written as below.
69
MC i
Mt
' &L̃ @ J˜i % Ri
(45)
Where:
MC i
Mt
is the rate of change for the concentration of i with time
[mol/m3-s]
3
& L̃ @ J˜ is the divergence of the flux of species i [mol/m -s]
Ri
is the rate of generation of species i [mol/m3-s]
Equation 45 can be applied to each of the flux equations for the three transport
processes to yield their individual contributions to the rate of change of the concentration of
species i.
It should be noted that the concentration, Ci, and the transport coefficients, ui, and Di,
are all differentiable scalar functions of position. Each has a unique value at any point, but the
values may change from point to point. This property is self-evident for the concentration, but is
not immediately obvious for the transport coefficients. It is only a common assumption that the
transport coefficients are simple constants, unaffected by solution composition. Subsection
2.3.2.2 discusses this assumption and the conditions under which it is appropriate in greater
depth. Accounting for the differentiable scalars, mass transport equations can be written for
each of the transport processes.
For convection:
70
MCi,conv
Mt
' &L̃ @ Ji,conv % Ri
' &L̃ @ C iv˜i % Ri
(46)
' & C i L̃ @ v˜ & v˜ @ L̃C i % Ri
For diffusion:
MCi,diff
Mt
' &L̃ @ Ji,diff % Ri
' &L̃ @ &Di L̃C i % Ri
(47)
' Di L̃ @ L̃C i % L̃C i @ L̃Di % Ri
For migration:
MCi,m ig
Mt
' &L̃ @ Ji,m ig % Ri
' &L̃ @ &C iziFL̃Ns % Ri
(48)
' zi F u i C i L̃ @ L̃Ns % zi F u i L̃C i @ L̃Ns % zi F C i L̃u i @ L̃Ns % Ri
Before the above three equations are combined, one simplification is possible. The
continuity equation[21] is a mass conservation equation which expresses the fact that a flowing
fluid will not separate and generate voids. Mathematically, it expresses this as that the
divergence of the solution velocity of a fluid is equal to zero. Another way of stating the theorem
is that there is can be no net outflow of fluid from any point. This expression holds for
incompressible fluids.
71
L̃ @ v˜ ' 0
(49)
This simplification is strictly true, and can be used to produce the unabridged mass
transport equation.
MC i
Mt
2
2
' &v˜ @ L̃C i % Di L̃ C i % L̃C i @ L̃Di % zF ui C i L̃ N
(50)
% zF ui L̃N @ L̃C i % z F C i L̃N @ L̃ui % Ri
Several approximations are often used to simplify this equation still further. One relates
the LaPlacian of the solution potential to the charge density in solution and the dielectric
constant of the fluid. Equation 51 is also called Poisson’s Equation. If the charge density is
assumed to be zero, it becomes the LaPlace equation.
2
L̃ Ns ' &
Del
,
. 0
(51)
Where:
2
2
L̃ Ns is the LaPlacian of the solution potential [V/m ]
ρel
is the electric charge density in solution [C/m3]
ε
is the dielectric constant of the solution [F/m]
This approximation is discussed more in section 2.3.3.3.3. It is only true in bulk
solution. In the double layer, the first several monolayers of solution at an interface, there are
large charge separations. Outside of those few hundred angstroms, the approximation holds.
72
The final two simplifications which are possible are to assume that the transport coefficients are
constants and therefore their gradients are equal to zero.
L̃Di ' 0
(52)
L̃ui ' 0
(53)
A final assumption that is usually invoked in modeling of crevice corrosion is that there
is no convection inside the crevice.
v˜ ' 0
(54)
Using the four assumptions of Equations 51, 52, 53, and 54 reduces Equation 50 to the
following familiar form. Equation 55 is the governing equation for the accumulation of chemical
species within a volume.
MC i
Mt
2
' Di L̃ C i % z F u i L̃Ns @ L̃C i % Ri
(55)
The governing equation for the chemical concentration is a second-order partial
differential equation. The second order term is due to diffusion, the first order term is due to
migration and the zeroeth order term is due to generation. If convection were considered that
flux would add an additional first order term.
For a system of n species this equation can be applied independently to n-1 of them.
73
The reason it cannot be applied to the nth species as well is discussed at the end of this
subsection under the topic of “Charge Neutrality.” Essentially, there is an additional constraint
imposed by charge neutrality that reduces the number of degrees of freedom by one.
One of the terms that go into this transport equation is the gradient of solution potential.
The governing equation used to determine the solution potential field, and thus the gradient, is
developed in the next topic.
2.3.1.4 Electrical Transport Processes
Electrical charge moves through aqueous solutions by the transport of charged ions.
Free electrons, the charge carriers in metals and n-type semiconductors, are not available to
carry charge in water. The following derivation is based on the assumption, discussed in section
2.3.2.4.3, that there is no diffusion potential. Without a diffusion potential the solution potential
is determined solely by net current flow. Accounting for the effects of diffusion potential would
result in a minor reformulation of these equations and add an obscuring layer of complexity.
Just as in Equation 45 for the mass transport of chemical species the rate of
accumulation of electrical charge equal to the sum of the flux of electrical current out of a
volume of solution and the rate of generation of charge in solution.
MDel
Mt
Where:
' & L̃ @ J˜el % Re
(56)
74
MDel
is the density of electric charge in solution [C/m3]
Mt
is the generation rate of electrical charge [C/m3-s]
Re
The electric flux through solution is determined by the electrical conductivity and the
electric field. The electric field is the gradient of the solution potential. This is a restatement of
Ohm’s Law.
J˜el ' &6 L̃Ns
(57)
Where:
J˜el
is the net electric current density vector in solution
[A/m2]
κ
is the solution conductivity [Ω-m]-1
Electrical charge is not created in solution. It only arises from an electrochemical
interface. To find Re which is the rate of introduction of electrical charges into a volume, we
must divide the total current flowing into an infinitesimal by its volume. This is illustrated in
Figure 2.3.1.4(a) for the general case.
The governing equations for the mass transport of electrical charge as well as chemical
species assume that generation is occurring evenly throughout the volume. In a crevice all of the
charge and many of the chemical species are generated at interfaces. It is a simple procedure of
geometry to scale the total flux by the total volume for each infinitesimal.
For the simple crevice with one active side shown in Figure 2.3.1.4(a) total flux is the
75
product of the area of the infinitesimal volume and the flux density.
j J i ' A @ Ji
(58)
Where:
j Ji is the total flux of i into a volume [mol]
A
is the area of the reacting surface [m2]
For a cylinder, volume is the product of the area of one face and the height.
V' A @ h
(59)
Where:
V
is the volume [m3]
Equations 58 and 59 can be used to find the generation rate expressed in term of
volume rather than area.
Ri '
A @ Ji
A@h
'
Ji
h
(60)
Where:
Ri
is the generation rate per volume [mol/m3]
This equation shows the effect of height on generation. The generation rate of chemical
76
species on a volume basis is inversely proportional to the height of the crevice. For a crevice of
constant reaction rate, halving the average height will result in a doubling of the generation rate.
This doubling affects not only the maximum values achieved but the rate at which they are
approached.
A similar analysis can be performed for electrical current to find the rate of charge
generation.
Re '
iA
i
'
hA
h
(61)
Where:
i
is the current density across an interface [A/m2]
A
is the corroding surface area [m2]
h
is the height of the volume [m]
Equations 57 and 61 can be substituted into Equation 56 to get
MDe
Mt
2
' &6 L̃ Ns %
i
h
(62)
At steady-state, the rate of change of the charge density is zero and this equation can
be used to solve for the solution potential distribution. Since this governing equation is used
even for systems where the interfacial current density is zero, it is useful to transfer the h
dependence to the terms which are always present. Multiplying both sides by h allows the
effects of changes in height on the potential distribution to be accounted for in all cases. This
77
yields the final form for the governing equation for potential distributions.
h
MDe
Mt
2
' &6 h L̃ Ns & i
(63)
Interestingly, this equation shows one of the pitfalls associated with assuming charge
neutrality. Equation 51 shows that the LaPlacian of φ s is proportional to ρe. If the charge
density is assumed to be zero, Equation 63 can lead to a contradiction. At steady-state the rate
of change of the charge-density is zero. If the charge density is assumed to be zero then
Equation 51 states that the LaPlacian of the solution potential is also zero. If two of the terms in
Equation 63 are zero, the the third, the current density on the crevice walls, i, must also be zero.
Since a steady-state can be reached when i is non-zero, L̃2 N cannot be always equal to
s
zero. As will be discussed later in this subsection, an assertion of charge neutrality is actually
applied only to the concentrations of chemical species, not to electrical charge. Insignificant
deviations from charge neutrality in terms of species concentrations still allow enough charge
density to balance the i term in Equation 63 above.
79
2.3.1.5 Alternate Approach to Calculating the Electric Field
Watson and Postlethwaite[28] used an alternate method to calculate the gradient in φ s.
This approach is shown here only as a different method of calculating the potential inside a
crevice. It was not used in the modeling for this dissertation.
Since electrical current is carried in solution only by ions, the total electrical current can
be calculated from the sum of the individual ionic fluxes.
J˜el ' F j zi J˜i
(64)
i
If the individual flux equations are substituted into Equation 64 the following
representation is achieved.
2
J˜el ' F v˜j zi C i & Fj zi Di L̃C i & F 2 L̃Nsj zi u i C i
i
If J˜
el
i
i
(65)
is known then Equation 65 can be solved for L̃2 N .
s
L̃Ns ' &
J˜el
F 2j
i
2
zi u i C i
v˜j zi C i
%
i
Fj
i
It is not immediately obvious why J˜el
j zi Di L̃C i
&
2
zi u i C i
i
F j zi u i C i
2
(66)
i
is easily available in the general case.
2.3.1.6 Charge Neutrality
Applying only the governing equations for chemical and electrical flux developed earlier
in this subsection can produce a physically non-realizable situation. Different rates of transport
80
for different species can mathematically produce a macroscopic charge separation. Such charge
separations do not occur in real electrochemical systems because, as will be seen in this
subsection, appreciable accumulations of charge produce very large potential differences. Ions
would quickly migrate under the resulting electric fields to reduce the excess charge. To counter
the artifact of large-scale charge separation, one species has its governing equation that was
produced by the chemical flux equation replaced with a statement of charge neutrality. This
statement fixes the concentration of one species to neutralize any charge produced by the “free”
species in order to eliminate any large deviations from charge neutrality. As will be discussed
later in this subsection it does not imply that LaPlace’s equation replaces Poisson’s.
A commonly-made assumption in modeling crevice corrosion is that electrolyte
maintains charge neutrality. Poisson’s equation (Equation 51, repeated below) relates the
density of free charge in solution to the second derivative of the solution potential.
2
L̃ Ns ' &
De
,
(51)
The second derivative of φ s can be used to calculate the magnitude of ρe. Equation
181 in Case 2 of section 4.1.1.2 gives a formula for φ s inside a one-dimensional crevice of
constant height, h, constant conductivity, κ, constant corrosion flux, Jwalls, along the walls of
length x0 and having a mouth potentiostatically controlled at a potential of φ0. These conditions
are illustrated in Figure 4.1.1.2(a) and discussed at length along with a derivation of the
potential equation in Case 2 of section 4.1.1.2.
81
Ns(x) ' &
Jwalls
26h
x2 %
Jwallsx 0
6h
x % N0
(181)
The LaPlacian of φ s is given below.
2
L̃ Ns(x) ' &
Jwalls
6h
(67)
Combining Equations 51 and 67 and solving for ρe yields the following expression:
De ' &
Jwalls
6h
,
(68)
The value for the dielectric constant of water is related to the dielectric of free space by
the relative dielectric for water.
, ' ,r ,0
(69)
Where:
εr
is the relative dielectric of water
ε0
is the dielectric of free space [F/m]
Combining Equations 68 and 69 and using the relative dielectric of water, 78, the
dielectric of free space 8.854 10-12 [F/m], and the physical characteristics of the crevice from
Case 2 of section 4.1.1.2 given in Table 14, the charge density can be found.
De ' &
10
7.629991 @10
&5
@ 78 @ 8.8514 @ 10&12 ' 9.05 @10&5 [C/m 3 ]
(70)
82
Since the only charge carriers in aqueous solution are ions, this charge density can be
related to the charges carried by the concentrations of the individual species in solution.
De ' F j zi C i
(71)
i
Setting Equations 70 and 71 equal to each other and assuming that all of the deviation is
caused an excess or deficiency in the concentration of one species reveals the magnitude of the
deviation of in terms of the change in concentration of the species.
)C i ' &
Jwalls
6h
,r,0 @
1
z iF
(72)
Where:
)C i
is the change in concentration of species i
required to alleviate any charge imbalance
[mol/m3]
For a monovalent anion like chloride, the excess concentration required to create the
charge calculated in Equation 70 is one µM. The net result is that for the kinds of electric fields
encountered in crevice corrosion, the solution is essentially charge neutral when considered
from the standpoint of the concentrations of the species. The deviation in charge is not large
enough to cause a noticeable change in the concentration of the chemical species for
electrolytes with solutes in the millimolar range or greater. For such solutions the charge
83
neutrality equation, Equation 73 below, holds and is commonly used. In highly pure
environments, such as those encountered in the PWR reactors, the deviation may need to be
considered and the approximation may not be suitable.
j zi C i ' 0
i
(73)
It must be noted that if Equation 73 is enforced on a solution of n species, then only n-1
of the species are independent variables. The nth variable’s concentration is determined by the
other n-1. Its concentration is either augmented or depleted to maintain charge neutrality.
Summary
There are three types of governing equations that are used in modeling crevice
corrosion. A governing equation based on the movement of chemical flux, Equation 44, can be
applied to each chemical species save one. The potential field can be found for use in the
transport equations by applying a governing equation, Equation 63, based on the flux of
electrical current. Finally, a statement of charge neutrality, Equation 73, can be used to
determine the concentration of one species in order to eliminate any charge differences caused
numerically by the application of the chemical transport governing equations to the other
species.
A number of approximations and assumptions went into the governing equations of this
section. The next subsection goes into more detail about the assumptions that are involved.
84
2.3.2 Examination of Terms Used in Crevice Corrosion Modeling
This subsection examines some of the terms and assumptions that are often used in
modeling crevice corrosion. Issues in mass transport, chemical generation, and potential are
elaborated on, with an emphasis on the underlying assumptions of the parameters in the
governing equations. In mass transport the topic of using L̃C i rather than L̃µi
bears some
discussion, as do the transport coefficients. Generation and the choices made in how to
represent polarization data can have large effects on the chemical concentration fields which are
developed, as can the homogeneous reactions such as hydrolysis. Finally, the issue of
“potential” is addressed. The term is used to represent a number of different “potentials” and
this subsection defines the standard used throughout this dissertation.
2.3.2.1 Use of Concentration Rather than Activity in Diffusion
It is gradients in chemical potential that actually drive diffusion. However, the
commonly encountered form of the diffusion equation involves gradients in concentration. This
sub-subsection follows the series of steps and approximations that are done to make this
transformation. The process gives insight into the limitations of the method and it will serve to
place the next section’s literature review in context. This section starts at Equation 36
J˜i,diff ' &C i ui L̃µi
and ends with Equation 37, which is the commonly encountered form
(36)
85
Ji,diff ' &Di L̃C i
(37)
The first steps in this transformation involve finding an expression for the gradient in
chemical potential which is amenable to conversion to the gradient in concentration. The
expression for the chemical potential for species i is[22]
0
µi ' µi % RT ln(a i)
(74)
Where:
µi
0
µi
is the chemical potential of species i [J/mol]
is the chemical potential of species i in the standard
state [J/mol]
R
is the universal gas constant, 8.314 [J/mol-K]
T
is the temperature [K]
ai
is the activity of species i [unitless]
The chemical potential of a species is equal to the chemical potential of that species in
its standard state plus the product of the universal gas constant, the absolute temperature, and
the natural logarithm of the activity of the species. Equation 74 can be used to find an alternate
representation for the gradient of µi.
86
0
L̃µi ' L̃(µi % RT ln(ai))
' RT L̃ ln(a i)
'
(75)
RT
L̃ai
ai
A drawback to this formulation is that it has substituted a dependence on L̃ai for the
dependence on L̃µi . The value of the single ion activity is no more easily accessible to
experiment or theory than is the chemical potential. It is fruitful to use an alternate formulation
that expresses ai in terms of concentration, Ci, and the activity coefficient γi.
ai ' (i C i
(76)
Where:
γi
is the activity coefficient [m3/mol]
Using this expression in Equation 75 yields the following relationship
0
L̃µi ' L̃(µi % RT ln((i C i))
' RT L̃ ln((i C i)
'
(77)
RT
(( L̃C % C i L̃(i)
(iC i i i
This form is potentially more useful, since it contains L̃C i , but it still contains a
87
dependence on γ i and L̃(i . The scaling factor to convert Ci to ai is easier to use than ai was
previously. A better formulation which is much closer to the desired form is obtained below.
L̃µi '
Mµi
MC i
L̃C i
'
M(
RT
(i % C i i L̃C i
MC i
(iC i
'
Mln(i
RT
1 %
L̃C i
MlnC i
Ci
(78)
When this expression is substituted into Equation 36 for the diffusive flux we get an
expression very close to that used in Equation 37.
J˜i
diffusion
' &C i u i L̃µi
' &C i u i
Mln(i
RT
L̃C i
1 %
MlnC i
Ci
' &ui RT 1 %
Mln(i
MlnC i
(79)
L̃C i
This expression can be converted to Equation 37 by a substitution and a simplification.
First, the substitution is to change the transport coefficient. The Nernst-Einstein equation[21]
relates the diffusivity to the mobility, the gas constant and the temperature.
Di ' uiRT
(80)
The required assumption is that the activity coefficient, γi, is independent of Ci.
88
M ln(i
M lnC i
' 0
(81)
Putting the substitution of Equation 80 and the assumption of Equation 81 into Equation
79 yields Equation 37, also known as Fick’s first law, which is repeated below.
J˜i
diff
' &Di L̃C i
(37)
Fick’s first law is a valid approximation only if the activity coefficient is independent of
concentration. This assumption is true at low concentrations by the dilute solution
approximation[21]. This approximation is discussed in the following subsection.
2.3.2.2 Transport Coefficients
As was seen in subsection 2.3.1, the transport coefficients are very important in
modeling the behavior of electrochemical species in aqueous solution. The typical assumption
made is that mobility is a constant, independent of pressure, temperature, and electrolyte
composition and that the diffusivity is related to it by the Nernst-Einstein Equation which was
first presented in the previous subsection as Equation 80.
Di ' uiRT
(80)
This expression is only strictly true in “dilute” solutions. Dilute solutions are those in
which the solute interacts only with the solvent. As the solute concentration increases, the
89
individual solute atoms begin to interact and the relationship breaks down. Further complicating
effects arise if the viscosity of the crevice solution changes with composition and also if
precipitation within the crevice produces a tortuous path. Each area is discussed in the following
three subsections.
2.3.2.2.1 Ion/Ion Interaction Effects
Once inter-solute interactions become appreciable the Nernst-Einstein relationship no
longer applies. Two approaches have been used to finding the diffusion coefficients in
concentrated solutions. One is an empirical relation developed from the changes in conductivity
observed in concentrated electrolytes[29]. The other method uses a formula that accounts for the
effects of changes in the activity coefficient, γi [30].
2.3.2.2.1.1 Empirical Correlation
Figure 2.3.2.2.1.1(a) is reproduced from Gartland[29]. It presents the relative equivalent
conductivities, Λ, for a variety of metal chlorides as a function of ionic strength and uses the
equivalent conductivity at I = 1 as a reference point.
The ionic strength is defined by the following equation:
1
2
I ' j zi C i
2
i
Where:
(83)
90
zi
is the charge number for species i [eq/mol]
The zi2 term means that higher-valence ions have a greater effect on the ionic strength.
A 1 M solution of AlCl3 will have an ionic strength of six, while a 3 M solution of NaCl will
have an ionic strength of only three.
The equivalent conductivity of the metal salt is the sum of the ionic conductivities for its
constituent cations and anions, λ+ and λ-.
7 ' 8% % 8&
(84)
Where:
Λ
is the ionic conductivity [m2 / Ω-eq]
λ+
is the ionic conductivity for the cation [m2 / Ω-eq]
λ−
is the ionic conductivity for the anion [m2 / Ω-eq]
The ionic conductivities are related to the charge number and the mobility of the
species.
8i ' F 2 |zi| u i
(85)
Where:
λi
is the ionic conductivity for the species i
Ω-eq]
[m2 /
91
If zi is assumed to be constant then any changes in Λ must be due to changes in ui.
Gartland fit a third order polynomial to the data in Figure 2.3.2.2.1.1(a) and obtained a decay
function g(I) which was used to account for changes of mobility with increasing solution ionic
strength.
g(I) ' 0.8375 % 0.16 I % 0.0015 I 3 &1
(86)
Gartland does not use the decay function to model the changes in diffusivity. Figure
2.3.2.2.1.1(b) illustrates the diffusivities for two metal salts over a range of molarities. The
diffusivities do vary with electrolyte composition, but the size of the changes, ~ +- 10% of the
magnitude, is small. Because the diffusivities are relatively constant, the diffusion coefficients are
found from the Nernst-Einstein relationship using the mobility at infinite dilution[29].
A more mechanistic approach was used by Tester[30]. It is developed in the next
section.
95
2.3.2.2.1.2 Use of Activity Coefficients for Diffusivities
Tester presented a model for the diffusivity which incorporates the effects of the activity
coefficient[30]. An advantage of this method is that it provides a link to the thermodynamic
literature which focuses on calculating activity coefficients. The relationship used is given below:
0
Di '
Di
1 % m
0r
d ln(i
(87)
dm
Where:
Di0
is the diffusivity of species i at infinite dilution [m2/s]
ηr
is the relative viscosity of the solution compared to pure
water at 22 EC
m
is the molality of the solution [mol / 1000g water]
The relationship of γi to molality can be found by a number of techniques. One
commonly used approximation is the Debye-Huckel equation[10].
I
2
log((i ) ' & A zi
1 %
0
ai B
0
% BI
I
(88)
Where:
A
is a coefficient of the Debye-Huckel limiting law
ai0
is the ion size parameter for species i
96
B0
is a coefficient of the Debye-Huckel limiting law
The Davies equation has the same form as Equation 88 with ai0B = 1 and B = 0.3. This
is similar to the method used by Sharland[6]. Figure 2.3.2.2.1.1(c) is a reproduction of Figure 2
from Walton[10] . It plots the log of the activity coefficient for CaCl2 calculated by both the
Davies and B-dot Debye-Huckel equations and compares them to experimental data collected
by Staples and Nuttal. A more accurate and complicated method was presented by Song[31].
Interestingly, though no direct comparison was made between the work of Gartland and Tester,
an examination of Walton’s curve in Figure 2.3.2.2.1.1(c) suggests that the diffusion coefficient
should have the same shape as the data presented by Gartland in Figure 2.3.2.2.1.1(b).
Tester’s model considered only diffusion. No mention was made of a method to extract
the mobility from the diffusivity.
2.3.2.2.2 Viscosity
Viscosity changes in the crevice solution will affect the mass transport coefficients.
Equation 87 from the work of Tester[30], repeated below for clarity, shows that for all other
factors being held equal, changes in the relative viscosity will scale the effective diffusivity of
species i, Di, inversely.
0
Di '
Di
0r
1 % m
d ln(i
dm
(87)
97
2.3.2.2.3 Porosity/Tortuosity
Precipitation within a crevice will have an adverse effect on the transport coefficients. In
the liquid phase, transport is relatively easy. In the solid, the diffusivities will be several orders of
magnitude smaller. Based on the geometry of the precipitates in the crevice one of two cases
will apply. Either the liquid will be the continuous phase or the precipitation will be so great that
the solid becomes the continuous phase. The following equations are adapted from the work of
Hamilton on thermal conductivity[32].
If the liquid forms the continuous phase and has a diffusivity more than 100 times
greater than the diffusivity in the solid, then the effective diffusivity can be found by the following
equation.
Di,eff ' Di,l(1&V s)
(89)
Where:
Di,eff
is the effective diffusivity of the crevice [m2-s]
Di,l
is the diffusivity of species i in the liquid phase [m2-s]
Vs
is the volume fraction of precipitates [unitless]
The great difference in diffusivities makes the effective diffusivity independent of the
precipitate morphology. Equation 89 is a simplification of the full equation which must be used if
the precipitate forms the continuous phase. The complete equation is given below.
98
Di,eff ' Di,l
Di,s % (n&1)Di,l & (n&1)V s(Di,l&Di,s)
Di,s % (n&1)Di,l % V s(Di,l & Di,s)
(90)
Where:
Di,s
is the diffusivity of species i in the solid phase [m2-s]
n
is a constant for the system under study [unitless]
The value of n depends on Di,s, Di,l and the shape of the particle. It can usually be
assumed that n is equal to 3.
Equally important to the transport terms in determining the chemical concentration fields
inside a crevice are the rates of generation of chemical species. The underlying information that
goes into representing hetero- and homogeneous generation rates are presented in the following
two topics.
2.3.2.3 Generation of Chemical Species
There are two components to the rate of generation of chemical species, Ri. There are
heterogeneous electrochemical reactions that occur at an interface and there a number of
homogeneous chemical reactions that occur throughout the crevice solution. This subsection
addresses each type of reaction and the methods which must be used to account for them in
modeling crevice corrosion.
99
2.3.2.3.1 Heterogeneous Reactions
Heterogeneous electrochemical reactions can be entered into a model in one of two
fashions. The dependence of the reaction rate on potential and the secondary factors such as
chemical environment, temperature and pressure can be entered from first principles. The
calculations used in section 2.1.3.1 for Tafel behavior would be examples of this type. Anodic
dissolution behavior is often complicated by additional factors such as film formation that
prevent such simple representations of the current-potential relationships.
A different approach is to incorporate experimentally obtained polarization data into a
model. Some representation of the I vs E data must be made to do this. The tradeoff in
representing polarization data is fidelity, accuracy to the measured curve, versus calculation
speed and storage space. A second tradeoff is that not all of the approximating schemes are
amenable to analytic solution techniques. Analytic solution techniques generally require more
simple representations of the boundary conditions than are allowable with numerical methods.
This issue is discussed in greater detail in subsection 2.3.4. Figure 2.3.2.3.1(a) illustrates a
typical polarization curve for an active-passive metal and four different methods for representing
it.
There are four common ways of simplifying the representation of a polarization curve
such as the one shown in Figure 2.3.2.3.1(a).
Passive only: The polarization curve can be approximated as simply a single
current, independent of potential, that is equal to the passive current
density. The prime advantages of such a simplification are speed and
100
suitability for use in analytic solutions. This simple method of
representing a metal’s polarization behavior may be acceptable for
analyzing the initiation of crevice corrosion. By definition, a passive
current density is relatively constant over some potential range for a
material in an environment. If the model is only meant to describe the
case in which the entire crevice remains in that safe zone, then this
approximation is good. Obviously, once the metal initiates the model
then does a very poor job of representing the current over some
portion of the crevice. However, an initiation model is only concerned
with the steps leading up to initiation, and not what happens afterwards.
The later steps are the domain of propagation models.
Passive/Active Transition: A slightly more realistic approach to modeling a
polarization curve is to use two current densities, a passive and an
active one, and a transition potential. Such a representation captures the
grossest features of an active/passive polarization curve. No other detail
is translated into the model. Although this method seems very simple, it
is still unsuitable for use in analytic solutions. The discontinuity at the
transition potential is not amenable to non-computational solution
techniques.
101
Piecewise: A piecewise model approximates a polarization curve as a series of
straight lines. This method has the advantage that the accuracy can be
refined as much as needed by increasing the number of line segments
used in the approximation. Essentially, the passive/active transition
method is a special case of this method. Accordingly, this method too is
incompatible with analytic solutions. The greater fidelity to the
polarization curve is paid for twice. Each time the polarization curve is
accessed a small search procedure must be performed to find the
correct line segment. This search procedure becomes more
burdensome as the number of line segments increases. The other price
is exacted only once, when the model is first created. Unless the raw
polarization data are used, there are no methods of automatically
creating line segments and the procedure has to be done by hand.
Polynomial: A good tradeoff between accuracy and compactness is sometimes
a polynomial representation. A high order polynomial can be fit to a
polarization curve. This method is suitable for use in either analytic or
numerical solutions. Fitting a polynomial can be done automatically,
smooths out noise on the experimental curve and produces a
continuous representation. The storage space and calculation time
required for such a representation is small compared to the time
102
required to search out the proper interval and solve the appropriate line
for a piecewise approximation.
A number of methods can be used to allow a crevice corrosion model to incorporate
polarization data. When possible, polarization curves can be constructed from the physical
characteristics of the system. In all cases it is possible to represent an experimentally obtained
polarization curve in some fashion. Generally, the simpler, faster techniques are less accurate.
104
2.3.2.3.1.1 Stoichiometric Dissolution
An experimentally-obtained polarization curve measures current density versus
potential. The governing equations for the accumulation of chemical species require that this
electrical current be converted to fluxes of the individual chemical species. If the dissolving
metal is an alloy a decision must be made: is the alloy dissolution stoichiometric? An alloy is
typically composed of a matrix and various precipitates, inclusions, and constituents. If each
atom dissolves according to its atomic fraction in the alloy as a whole, then the material
dissolves stoichiometrically. To do this the particles must dissolve at the same rate as the matrix
and the elements in the matrix must not preferentially dissolve. These caveats might seem overly
strict, but in practice if a material is undergoing general attack at an appreciable rate, then it is
dissolving stoichiometrically. If a material is dissolving evenly, the non-dissolving components
would have to diffuse away from the surface to allow non-stoichiometric dissolution. Obviously
uneven corrosion, such as intergranular attack, can be non-stoichiometric without having to
redistribute atoms.
The following equations give a methodology for converting a current density to a flux
density for an individual species. The average dissolution rate of atoms for an alloy can be
found from Faraday’s law below.
Javg '
i
zavg F
(91)
Where:
Javg
is the flux of atoms across an interface from the alloy on
105
an averaged basis [mol/m2-s]
i
is the current density from the alloy [A/m2]
zavg
is the average charge number for the alloy [eq/mol]
The average charge number for the alloy can be found with the following formula.
zavg ' j zi a/oi
i
(92)
Where:
zi
is the charge number for species i [C/eq]
a/oi
is the atomic fraction of species i [unitless]
The atomic fraction of each species is found by using the weight fraction, fi, of each
component. Alloy compositions are usually given in weight fractions.
fi
a/o i '
aw i
j
i
fi
(93)
aw i
fi
is the weight fraction
awi
is the atomic weight of species i
The flux of atoms on an alloy-averaged basis calculated in equation 91 can be
apportioned amongst the various chemical components by using the atomic fraction, a/oi.
106
Ji ' a/o i Javg
(94)
Where:
Ji
is the flux of species i across an interface
[mol/m2-s]
The fluxes from non-stoichiometric dissolution must be calculated by different means.
The generation of chemical species inside a crevice does not have to occur only at an
interface. A number of homogeneous reactions are possible and the various types of such
reactions are discussed in the next subsection.
2.3.2.3.2 Homogeneous Reactions
Homogeneous reactions create chemical species throughout a volume of solution, rather
than only at a metal/solution interface. Such reactions do not violate mass conservation. They
merely convert one species into another. An example would be the precipitation of a metal salt
from a supersaturated solution. Soluble Fe+2 and Cl- are converted into solid FeCl2 but the total
amounts of Fe and Cl (in all forms) remain the same. There are three main types of
homogeneous reactions that need to be considered in modeling crevice corrosion - hydrolysis,
precipitation, and homogeneous oxidation. Hydrolysis is the tendency of metal cations to form
metal hydroxides in aqueous environment. Precipitation reactions generate solid products when
a solution becomes saturated. Electrochemical species can also be oxidized or reduced in bulk
solution.
107
2.3.2.3.2.1 Hydrolysis
The major group of homogeneous reactions that must be considered when crevice
corrosion is modeled is the hydrolysis of metal cations. The primary reference text on the
subject is Baes and Mesmer[33]. The numerical data presented in this subsection are all drawn
from that work. Another useful reference is Buchheit et al [34] which covers many of the
manipulations.
Hydrolysis reactions occur when metal cations form metal hydroxides in aqueous
solution. A bare metal cation has a tendency to acquire a shell of water and hydroxyl ions. This
complex acts as its own molecule and has its own characteristic charge and transport
coefficients. It should be noted that hydrolysis reactions do not change the valence of the
underlying cations. The valence of a cation can only be changed by reduction or oxidation as
discussed later in this subsection. Two equivalent representations for this process are shown
below.
(xz&y)%
xMe z% % yOH & º Mex(OH)y
(95)
Where:
x
is the stoichiometric coefficient for the metal cations
involved in the hydrolysis reaction
y
is the stoichiometric coefficient for the hydroxyl ions
involved in the hydrolysis reaction
z
is the valence of the metal cation
108
and
%(zx&y)
xMe %z % yH2 O º Mex(OH)y
% yH %
(96)
They differ only in that Equation 95 omits the fact that if OH- is consumed water will
self-dissociate to replace the hydroxyl and free additional hydronium. The equilibrium
concentrations of the various species are determined by the formation quotient, Qxy.
%xz&y
Qxy '
[Mex(OH)y
][H % ]y
[Me %z]x
(97)
Where:
Qxy
is the formation quotient of the hydrolysis product
involving x cations and y hydroxyl ions [unitless]
[X]
is the concentration of species X [ mol/l]
The equilibrium concentrations determined thermodynamically by Equation 97 are not
reached instantaneously. There is a finite formation time for the creation of the metal hydroxide,
especially for polynuclear products. Polynuclear hydrolysis products involve two or more metal
cations. In the notation of Equations 95 and 96, x is greater than one for polynuclear hydrolysis
products. Such reactions may take several days to achieve equilibrium[33]. The formation of
mononuclear hydrolysis products is much more rapid and a common simplification is to only
consider the formation of mononuclear products.
109
Baes and Mesmer[33] provide thermodynamic data for the hydrolysis of many elements.
These data can be used in two ways. The first is to determine the speciation of a cation over a
range of pH’s. At any pH a cation can exist in multiple hydrolysis states. The ratio of the
concentration of these states is determined by the formation quotients for the various reactions.
Different data are available for the hydrolysis of different species. For a species like Cr+3 the
data are simply tabulated as in Table 1 below.
Reaction
Quotient
Log Value
Q11
-4.0(±0.3)
Cr 3% % 2H2 O º Cr(OH)2
%
Q12
-9.7
Cr 3% % 3H2 O º Cr(OH)3
Q13
-18
&
Q14
-27.4
Cr 3% % H2 O º CrOH 2%
Cr 3% % 4H2 O º Cr(OH)4
Table 1.Values for the formation quotients of the various Cr species
Equation 95 or 96 can be applied once per species and the resulting set of equations
can be solved simultaneously using the formation quotients of Table 1 to calculate the relative
abundance of the various Cr+3 species. This is illustrated in Figure 2.3.2.3.2.1(a). At low pH’s,
pH < 2, the relative scarcity of OH-’s prevents almost all individual cations from hydrolyzing.
As the pH rises, greater amounts of hydroxyl are available for incorporation into hydrolysis
complexes and higher-order species such as Cr(OH)2+ and Cr(OH)3 appear. At the highest
110
pH’s, pH > 11, Cr(OH)4- begins to dominate.
Slightly different, more accurate data are available for species such as Al+3. The
formation quotients have a dependence on the overall solution composition. The data for the
formation quotients of species such as Al+3 include a dependence on I, the ionic strength as
shown in Equation 98.
Log Qxy ' Log Kxy % a I 1/2 /(1%I 1/2 ) % bm x
(98)
Where:
I
is the ionic strength [eq2/mol-l]
mx
is the concentration of the anion [M]
Kxy, a, and b
are tabulated constants
The ionic strength was defined in Equation 83 which is repeated here for convernience:
1
2
I ' j zi C i
2
i
(83)
For a salt composed of two monovalent ions, the ionic strength is equal to the
concentration of the salt.
Values for the various constant Kxy, a and b are give in Table 2 below. The values from
Table 2 are used to generate the plot in Figure 2.3.2.3.2.1(b). Just as was shown in the
corresponding figure for Cr+3 hydrolysis products, at low pH’s, pH < 3, the relative scarcity of
111
OH-’s prevents most individual cations from hydrolyzing at all. As the pH rises, greater
amounts of hydroxyl are available for incorporation into hydrolysis complexes and higher-order
species such as Al(OH)2+ and Al(OH)3 appear. At the highest pH’s, pH > 9, Al(OH)4dominates.
Reaction
Log Kxy
a
b
-4.97
-2.044
0.52
Al 3% % 2H2 O º Al(OH)2
-9.3
-3.066
0.55
Al 3% % 3H2 O º Al(OH)3
-15.0
-3.066
0.45
&
-23.0
-2.044
0.36
Al 3% % H2 O º AlOH 2%
%
Al 3% % 4H2 O º Al(OH)4
Table 2. Values for the formation quotients of the various Al species
While the information on speciation is useful, of more concern is the pH change caused
by the introduction of metal cations into solution. The acidification the metal cations cause is a
primary factor in the initiation of crevice corrosion according the CCS mode for crevice
initiation as discussed in subsection 2.2.1.
The procedure for calculating the acidification caused by adding a mix of metal cations
in various hydrolysis states to an aqueous solution of arbitrary initial pH is relatively
straightforward. There are three relationships that need to be used: one relates the total metal
ion concentration, [Me]total to the concentrations of [H+] and [Me+z], a second calculates the
112
amount of [H+] freed by hydrolyzing [Me+z], and the final one calculates the amount of water
that must by lyzed or created to form equilibrium with the self-disassociation of water. The
general procedure is to iteratively solve for the concentration of [H+] to find a stable pH. The
equilibrium, stable pH is the one which when used to determine the speciation of the metal
cations is in turn produced by the freeing of [H+] which results from that speciation. The
procedure discussed here considers only solutions of a single metal cation and its products, i.e.
mononuclear hydrolysis.
Finding an Equivalent Chemistry for Hydrolysis
Mass transport and electrochemical production of chemical species in a crevice can
produce concentrations of metal ions and hydrolysis products that are not in equilibrium. The
first step to finding the resulting pH after equilibrium is reached is to convert the solution to an
equivalent solution of unhydrolyzed [Me+z] and acidified or alkalinized water. The goal is to
convert a complex set of concentrations of hydrolysis products back to a situation which is akin
to adding a metal salt to an aqueous solution with an arbitrary starting pH.
The total metal cation concentration can be found by summing over all of the hydrolysis
products denoted by the x,y pairs below.
[Me]total ' [Me %z] % j x @[Mex(OH)y
(x,y)
%xz&y
]
(99)
If all of the hydrolysis products were converted into [Me+z] large quantities of [OH-]
would be released. The total amount of hydroxyl after the freeing process is found by the
113
following equation.
[OH ] ' [OH ]0 % j y @ [Mex(OH)y
(x,y)
&
&
%xz&y
]
(100)
The final step involved in finding the equivalent starting solution is to use the selfdisassociation of water to rebalance the concentrations of [H+] and [OH-]. Not only can mass
transport destroy the equilibrium, but the process of “unhydrolyzing” the hydrolysis products
generates large amounts of [OH-] without a corresponding decrease in [H+]. Simple algebra
can correct this deficiency.
The formula for the self-disassociation of water is:1
[H % ]@ [OH & ] ' 10&14
(101)
If this product is greater or less than 10-14 then water will either break apart or form
from its components until the product is rebalanced. Since we are adding [OH-], some of what
is added will combine with [H+] to satisfy Equation 101.
[H& q]@[OH& q] ' 10&14
(102)
Where:
q
1
is the quantity of water formed [mol/l]
Note: The ion concentrations denoted by [X] are given with units of molarity, rather than
[mol/m3] used elsewhere in the thesis for Ci. This is to provide agreement with published work
on hydrolysis.
114
Equation 102 can be rewritten as a quadratic equation.
q 2 % (&[H % ]&[OH & ])q % [H % ][OH & ] & 10&14 ' 0
(103)
If this equation is solved for q,
q '
[H % ]%[OH & ] K
([H % ]%[OH & ])2 %4(10&14 & [H % ][OH & ])
2
(104)
There are two roots to this equation. Since negative concentrations of hydroxyl or
hydronium are impossible, q must always be smaller than the lesser of [H+] and [OH-]. Thus,
only the negative root has any physical significance.
Depending on the value of [H+] [OH-] one of the following three cases will apply
[H+] [OH-] = 10-14: The concentrations of [H+] and [OH-] are in equilibrium. In
this case the discriminant is equal to ([H]+[OH])2 and therefore q will
equal zero. No adjustment need be made to the concentration of either
species.
[H+] [OH-] > 10-14: There is an excess of [H+] and [OH-]. The discriminant will
be less than ([H]+[OH])2 and q will be greater than zero. A positive q
will form water and reduce the concentrations of [H+] and [OH-].
[H+] [OH-] < 10-14: There is a lack of [H+] and [OH-]. The discriminant will be
greater than ([H]+[OH])2 and q will be less than zero. A negative q will
split water and increase the concentrations of [H+] and [OH-]
115
Once the starting solution has been changed into an equivalent solution of [Me+z] at the
proper pH, then the solution can be rehydrolyzed to find the resulting pH.
Hydrolyzing a solution of known [Me]total and starting pH
There are only two free variables when mixing a quantity of [Me+z] into water to find
the final pH, the total amount of [Me+z] added and the starting pH. The final concentrations of
all the species involved are predetermined by thermodynamics. The concentration of each
hydrolysis product is determined by the concentrations of [Me+z] and [H+]. The concentration
of [Me+z] is determined by [Me]total and the concentration of the other hydrolysis products.
Finally, the concentration of [H+] is determined by the starting pH and the concentrations of the
hydrolysis products. It is an iterative search process to find the correct pH for the resulting
solution. This process is listed below.
1. Select a trial [H+]trial as a starting point.
2. Using that [H+] find the resulting concentrations of hydrolysis products. Equation 97
relates the concentration of metal hydrolysis products to [H+] and [Me+z]
through the formation quotient. Since the [Me]total is defined, [Me+z] is not free
according to the following equation.
[Me %z] ' [Me]total & j x @ [Mex(OH)y
(x,y)
%xz&y
]
(105)
Reorganizing Equation 97 for a system of only mononuclear products (x = 1) produces
the following representation.
116
%z&y
[Me(OH)y ]
'
[Me %z]Q1y
(106)
[H % ]y
Restricting the system to only mononuclear products allows use of this simple method to
find [Me+z]
[Me %z] '
[Me]total
1 % j
y
Q1y
(107)
y
[H % ]trial
No matter how [Me+z] is found, Equation 106 allows all of the hydrolysis products to
be calculated using that value and the trial [H+]trial.
3. Using the concentrations for the hydrolysis products found in (2), calculate what the
concentration of [H+] should be with the following formula.
[H % ] ' [H % ]0 % j y @ [Mex(OH)y
(x,y)
%xz&y
]
(108)
Where:
[H+]0 is equal to the starting, not trial, pH
4. Adjust [H+] based on the self-disassociation of water using Equation 104 to obtain
[H+]result .
5. Compare the resulting [H+]result to the trial [H+]trial. Based on their relative values, act
according to the following options.
[H+]result = [H+]trial: The trial [H+] was the correct [H+]. The problem is solved.
117
[H+]result < [H+]trial: The trial [H+] was too high. Restart from step 1 with a
higher pH (lower [H+]) as the trial value.
[H+]result > [H+]trial: The trial [H+] was too low. Restart from step 1 with a
lower pH (higher [H+]) as the trial value.
Hydrolysis reactions are important in the modeling crevice corrosion. They determine
the pH’s that are achieved inside the crevice and act to respeciate metal cations that are
generated at electrochemical interfaces.
120
2.3.2.3.2.2 Chemical Precipitation/Dissolution
A solution can only hold a finite amount of solute. Chemical dissolution or precipitation
does not change the valence of the ions involved. The amount of an ionic solute that can be
dissolved is found through the use of the solubility product, K, for the molecule in question[20].
K is equal to the product of the concentrations of the individual ions that make up the molecule.
It must be less than the solubility product constant, Ksp, for more of the chemical to dissolve.
Ksp‘s are tabulated for many species and can also be calculated from tables of solubility data. If
the K is greater than the Ksp then some of the molecule will precipitate out of solution to lower
the concentrations of the constituent ions and reduce K. An example is shown for the solubility
of AgCl.
AgCl(s) X Ag % % Cl &
K '
[Ag % ][Cl & ]
[AgCl]
(109)
(110)
Where:
K
is the solubility product [various units]
The concentrations of any solid phases are always assumed to be unity. Ksp depends on
the molecule in question and the temperature of the solution. An advantage of using K’s to
determine solubility is that the approach still works when multiple molecules that share common
ions are simultaneously in solution.
121
The solubility of non-ionic solids or gasses, such as O2, must be found from tabular
data.
2.3.2.3.2.3 Homogeneous Oxidation
The homogeneous chemical reactions of the previous subsection did not change the
valence of any of the ions. Electrochemical reactions, which do transfer electrons, can also
happen homogeneously. Obviously, homogeneous electrochemical reactions can only occur
between two soluble species. If one of the species were insoluble a metal-solution interface
would form and the reaction would be a heterogeneous one. An example of an electrochemical
reaction that can happen homogeneously is given below.
Fe %2 X Fe %3 % e &
(111)
E0 for this reaction is 0.770 V NHE[20] so a strong oxidizer is needed in solution to drive
the reaction. This reaction will occur in oxygenated water. Since crevices are often considered
to be deoxygenated, this particular reaction is not usually considered to take place there. The
reaction, or other homogeneous reactions, may occur in the bulk environment.
2.3.2.4 Potential
The is a large possibility for confusion in the use of the term “potential” when modeling
crevice corrosion. There are at least three major types of “potential” that are commonly used in
describing crevice corrosion: the electrochemical potential, E, the solution potential φ s, and the
122
diffusion potential, φdiff. The electrochemical potential is an interface’s potential relative to some
reference. It controls the rate at which reactions occur on a surface. The solution potential is the
potential at some point in solution. Solution potential is important in the mass transport of
chemical species because the gradient of φ s affects the migration rate. Finally, the diffusion
potential is caused by the charge separations that can occur when a salt composed of ions with
different diffusivities is transported. These individual potentials are explained in greater detail in
the following sections.
2.3.2.4.1 Electrochemical Potential
The electrochemical potential, E, is the potential between a metal/solution interface
surface and the end of the structured water, or double layer, adjacent to it. It the potential
across this interface that controls the rate of reaction on that surface. The Butler-Volmer
Equation, which was first presented as Equation 31, shows this relationship. That equation is
repeated here in slightly different form as the expression for the overpotential has been
expanded.
i ' i0 e
(1&")zF(E&E 0)
RT
& e
&"zF(E&E 0)
RT
(112)
E is measured by comparing the potential of the metal versus a reference electrode in
solution. It is easily accessible and commonly reported. It is only in the context of mass
transport that additional potentials need to be defined. For instance, the migration of charged
123
species in solution depends on the gradient of potential in solution. E is measured across an
interface. Though it is related the potential in solution, it cannot be used interchangeably. The
nature of the relationship between E and φ s is explored in the next section.
2.3.2.4.2 Solution Potential
Migration depends on the gradient of potential in solution. The solution potential at any
point, φ s , is the potential that would be measured by a reference electrode at that point
compared to a reference electrode at some standard point for the experiment. It is the gradient
of this quantity which is used in mass transport. E and φ s are related as shown in Figure
2.3.2.4.2(a). Part (a) of the figure represents a simple crevice of constant height, h, corroding at
the base and filled with an electrolyte of constant composition and conductivity, κ. Positive
cations move in the -x direction. This movement constitutes a positive current flowing out of the
crevice.
A metal is a conductor. It does not support an internal gradient in potential.
Accordingly, in part (b) of Figure 2.3.2.4.2(a) the potential of the metal, φ metal, is shown as an
isopotential surface. The solution potential decreases linearly from the base to the mouth
according to the Ohm’s Law which first appeared as Equation 57. It is rearranged and
repeated here.
124
L̃Ns ' &
J˜el
6
(113)
Where:
L̃Ns
is the gradient in solution potential [V/m]
J˜el
is the electrical current density [A/m2]
κ
is the solution conductivity [Ω-m]-1
The electrochemical potential, E, is the difference between the metal potential, φmetal,
and the solution potential, φ s . In the case of Figure 2.3.2.4.2(a) the crevice is anodic since
current is flowing out of the crevice. The gradient of solution potential must be positive to force
positive cations in the -x direction. “Potential drop” in solution, as will be discussed in section
5.2, reduces the driving force for dissolution, E, of the crevice from the mouth to the base.
These processes are illustrated in Figure 2.3.2.4.2(a), part (b).
126
2.3.2.4.3 Diffusion Potential
Two separate processes can contribute to the solution potential, φ s. One is an ohmic
process in which the potential difference is caused by current across a solution resistance. This
process was given in Equation 113. The other contribution, which was not considered, arises
from the potential difference caused by the formation of net dipoles as the anions and cations
move at different rates in solution and separate. A potential caused in this manner is a diffusion
potential. Figure 2.3.2.4.3(a) illustrates the basic concepts of the diffusion potential.
The diffusion potential can best be understood by going through the following
derivation. The starting point is the mass transport equation, Equation 44 from section 2.3.1.2
Ji ' C iv˜ & DiL̃C i & ziFuiL̃Ns
(44)
Where:
Ci
is the concentration of species i [mol/m3]
v˜
is the velocity of solution [m/s]
Di
is the diffusivity of species i [m2/s]
zi
is the number of equivalents for species i[eq/mol]
F
is Faraday’s constant [C/mol]
ui
is the mobility of species i [mol-m2/J-s]
L̃Ns
is the gradient of solution potential [V/m]
127
The electrical flux for any species due to its chemical flux is found by multiplying the flux
by the charge number and Faraday’s constant. Converting this chemical flux into an electrical
one (and assuming that there is no convection) produces the following equation.
2
J˜el,i ' ziFJi ' & ziFDiL̃C i & zi F 2 uiC iL̃N
(116)
Where:
J˜el,i
is the electrical current density vector due only to
species i [A/m2]
The total electrical flux, J˜el , can be found by summing over all of the chemical species
present in solution.
2
J˜el ' j ziFJ˜i ' &F j ziDiL̃C i & F 2 L̃Nsj zi u iC i
n
n
n
i'1
i'1
i'1
(117)
The conductivity, 6, of a solution is defined as[21] :
6 ' F 2 j z i u iC i
n
2
(118)
i'1
If Equation 118 is substituted into Equation 117 the following expression for the total
electrical current is produced.
128
J˜el ' &F j ziDiL̃C i & 6L̃Ns
n
(119)
i'1
This equation can be rearranged to solve for L̃Ns
L̃Ns ' &
J˜el
6
&
Fj ziDiL̃C i
6
(120)
This formula clearly illustrates that there are two components that make up the solution
potential, only the first of which was used in the derivation of subsection 2.3.1.4. The first part
is caused by IR losses. The second arises because of differences in the diffusivities of the
individual components of the solution. This decomposition is shown below.
L̃Ns ' L̃Nohmic % L̃Ndiffusion
(121)
Where:
L̃Nohmic
is the ohmic contribution to L̃Ns caused by IR
drop [V/m]
L̃Ndiffusion
is the contribution of diffusion potential to L̃Ns
caused by differing Di’s of the ions in solution
[V/m]
129
The ohmic contribution is equal to:
L̃Nohmic ' &
J˜el
6
(122)
The above equation is the same as Ohm’s Law, which was given in Equations 57 and
113 in slightly different formats. The contribution of diffusion potential is given as:
L̃Ndiffusion ' &
Fj ziDiL̃C i
6
(123)
It is apparent from Equation 123 that if the diffusivities of all species in solution are
equal, then the gradient of L̃Ndiffusion is zero. The other conclusion is that whereas κ does not
affect the relative contributions of the ions to the diffusion potential, it does scale inversely with
the total diffusion potential.
In order to estimate the size of the diffusion potential for the diffusion of various salts,
the following derivation is useful.
Estimating the Magnitude of the Diffusion Potential
Figure 2.3.2.4.3(a) illustrates steady-state diffusion between two reservoirs. A linear
concentration gradient is established between the two points and the differing diffusivities of the
cation/anion pair (in this case, NaCl) cause the diffusion potential to occur. The previous
expression relates the gradient of the diffusion potential to the physical properties of the ions,
130
the concentration gradients, and the conductivity. The conductivity of the solution varies linearly
with position from κmax, where the concentration of each component of the salt is Cmax, to κmin
where the concentrations are Cmin. This is shown in the equation below.
6 '
6 max & 6min
x0
x % 6min
(124)
Where:
κmax
is the maximum conductivity [Ω-m]-1
κmin
is the minimum conductivity [Ω-m]-1
x0
is the crevice length [m]
Both κ’s can be related to the solution chemistry by Equation 118. By assuming that zi,
Di, and L̃C i are constant, then substituting Equation 124 into Equation 123, and finally
integrating and solving for the constant of integration yields the solution for the diffusion potential
as a function of position.
x0
Ndiffusion(x) '
Fj ziDiL̃C i
m 6 max & 6min
&
0
x0
' &
x % 6min
Fj ziDiL̃C ix 0
6 max & 6min
dx
ln
(125)
6 max &6min
x0
x % 6min
& ln(6min )
It is interesting to note that under these conditions, a linear concentration gradient,
131
constant coefficients, the difference in diffusion potential between the two reservoirs is
independent of x0. This length invariance happens because the constant gradient of Ci depends
on x0 and the integral is taken over x0.
L̃C i '
Cmax & Cmin
x0
(126)
Where:
Cmax
is the maximum concentration [mol/m3]
Cmin
is the minimum concentration [mol/m3]
Equation 125 can be used to predict the diffusion potentials that arise between solutions
of differing compositions if the connecting gradients in composition are linear. Data for the ions
present in several common salts are given in Table 3 which is taken from the CRC
Handbook[20].
132
zi [eq/mol]
Di [cm2/s]
K+
1
1.96E-05
Na+
1
1.33E-05
Fe+2
2
7.18E-06
Cl-
-1
2.03E-05
SO4-2
-2
1.06E-05
CO3-2
-2
9.22E-06
Species
Cations
Anions
Table 3. Data on chemical species used to calculate diffusion potentials. Taken from the CRC
handbook[20.
The data in Table 3 can be used to calculate the diffusion potentials that arise between
the ends of linear concentration gradients connecting salt solutions of 1M and 1 mM. This was
done for five common salts and the results are shown in Table 4.
133
Ndiffusion '
Species
NaCl
-36.8 mV
KCl
-3.35 mV
Na2SO4
38.7 mV
FeCO3
-11.0 mV
FeCl2
-67.0 mV
Table 4. Diffusion potentials for linear gradients between 1M and 1mM solutions of various
salts
The magnitudes of the diffusion potentials shown in Table 4 should be taken as rough
guides. In particular, the linear concentration gradients that they depend on are unlikely to be
met in practice. One aspect the table does point out is the relationship between the diffusivities
of the ions and the size and magnitude of the diffusion potential. For example NaCl, where the
Cl- diffuses more easily than the Na+, has a large negative diffusion potential for a negative
concentration gradient. KCl, where the diffusivities of the ions are more closely matched, has a
diffusion potential of almost zero. Finally, a solution of Na2SO4 whose SO4-2 anion is sluggish
compared to the Na+, has a positive diffusion potential for a negative concentration gradient.
The ratio of the most to the least concentrated solutions has an important effect on the
diffusion potential. This can be seen by rewriting Equation 125 for the case where x = x0.
Fj ziDi)C i
i
Ndiffusion(x'x 0 ) ' &
6max & 6 min
ln
6 max
6 min
(127)
134
Where:
∆Ci
is the change in Ci from one reservoir to the other
[mol/m3]
The equation can be used for a salt, such as NaCl, to evaluate the diffusion potential at
a variety of concentration ratios. Figure 2.3.2.4.3(b) shows in part (a) that the diffusion
potential is linear with the logarithm of the ratio. Part (b) illustrates that this relationship means
that on a linear scale, the diffusion potential is relatively stable over a range of values, since it
depends on only the logarithm of the ratio. On both scales, the diffusion potential at a ratio of
1:1 (no gradient) is zero.
Real aqueous diffusion couples may differ from the conditions of these theoretical
results in several ways:
Non-linear concentration gradients: The formulas in this section are based
on the assumption of linear concentration gradients. The examples in
section 4.1 will show that many simple crevice geometries and
boundary conditions can produce a higher order dependence of Ci on
x. If all of the other terms in Equation 123 were held equal an x2
dependence for C would result in an x2 dependence for the diffusion
potential.
Multiple anions and cations: The effects of multiple salts will not
superimpose linearly, because the conductivity is based on all of the
135
ions in solution. Increased conductivity will decrease the magnitude of
any diffusion potentials. Additionally, any remaining diffusion potentials
may either offset or sum their effects.
Supporting electrolytes: Any factors that raises the solution conductivity, such
a supporting electrolyte, will decrease the magnitude of any observed
diffusion potentials.
The predicted results from Table 4 are likely to overestimate the diffusion potentials that
will be observed. Still, they illustrate why salts such as KCl are often used in salt bridges. The
closely matched diffusivities of the constituent ions produce a small diffusion potential even
when connecting solutions of very different concentrations.
Summary
This subsection has focused on examining in depth the terms that go into the governing
equations which control crevice behavior. The next subsection focuses on the types of
simplifications that are commonly applied to the governing equations in order to solve them.
138
2.3.3 Common Simplifications Used in Modeling Crevice Corrosion
Most models for crevice corrosion make some simplifications to the governing
equations developed in subsection 2.3.1. Such simplifications and assumptions are made for
one of two reasons. Either some piece of information is not available to permit use of the
complete solution or the assumption makes the problem easier to solve. The types of
simplifications that are made can be classed into five broad groups summarized below. The first
three relate to simplifications involving thermodynamic variables such as temperature and
pressure, solution composition and potential. The last two relate to reductions of the
dimensionality of the problem, both temporal and spatial.
Elimination of Thermodynamic Variables: Temperature and pressure are
two of the thermodynamic variables required to define the state of a
material. In practice, changes in these variables are often ignored and
the entire crevice is assumed to remain at standard temperature and
pressure (STP).
Simplifying Chemistry Effects: The dependency of the transport coefficients
ui and Di on chemistry is often ignored. The transport equation itself is
usually configured based on the dilute solution approximation that solute
ions are not interacting. The generation equations also often reduce the
complexity of chemistry effects. For heterogeneous reactions few codes
account for either the effects of chemistry on generation or the chemical
effects of cathodic reactions occurring inside the crevice. For
139
homogeneous reactions, the hydrolysis equations are often considered
to only deal with mononuclear products. Other reactions such as
precipitation or homogeneous oxidation are also often ignored.
Simplifying Potential Effects: Occasionally models are constructed that
ignore the effects of a gradient in solution potential on transport. Rarely
is the diffusion potential taken into account. Additionally, the effects of
an electrostatic potential that would be caused by charge separation are
often thrown out and charge neutrality is assumed. Finally, the effect of
electrochemical potential on generation is often simplified to make the
governing equations easier to solve.
Ignoring Temporal Effects: The effect of time on reaction rates is a difficult
one to capture in a model of crevice corrosion. Temporal dependence
based on the accumulation of chemical species from transport
consideration is often included, but even this has the underlying
assumption that all of the reaction rates are functions only of the
electrochemical environment. Both hetero- and homogeneous reactions
can have marked temporal dependence independent of changes in
solution composition or interfacial potential.
Simplifying Geometry: Every crevice corrosion model makes broad
generalizations of physical geometries in order to make the problem
tractable. The dimensionality of the model is usually reduced to one or
140
two dimensions and the scale modeled does not represent the fine detail
present at the µm level. If crevice behavior is heavily influenced by the
tightest rather than the average geometry, then most crevice models
may be missing a critical aspect of crevice geometry.
Some of the types of simplifications that are made were discussed during the
development of the governing equations and the separate discussion of the terms that go into
them. The following sections present the approximations in context with each other.
2.3.3.1 Elimination of Thermodynamic Variables
Few models account for changes in temperature or pressure. Those that do generally
translate all of the parameters to some higher temperature and perform an isothermal simulation
at the new state.
2.3.3.1.1 Temperature
As was seen in section 2.1 temperature plays a large role not only in determining the
driving force for corrosion but in setting the rate constants. The reversible potential for metal
oxidation given by the Nernst equation, first shown as Equation 12 from subsection 2.1.2.2,
clearly shows the effects of temperature on the reversible potential and thus driving force.
141
0
0
E '
0
µMe & µMe %z
&
zF
C %z
RT
ln Me
zF
CMe
(12)
The effect of temperature on corrosion kinetics can be seen in the Butler-Volmer
equation, Equation 31, from subsection 2.1.3.1.
i ' i0 e
(1&")zF0
RT
& e
&"zF0
RT
(31)
When temperature effects are taken into account, it usually is by the device of
translating all of the parameters to a higher temperature[8]. Essentially, the model is still run as an
isotemperature system, merely with parameters that are appropriate to the higher temperature
environment, such as critical water.
Corrosion reactions are spontaneous and the energy they release appears as heat in the
environment. Some corrosion systems, like thermite, are actually designed to be used as
heaters for military and camping rations. Aside from such extreme cases, even commonly
encountered systems can generate surprising amounts of heat. The following calculations show
the heating which is possible for the corrosion of iron. This reaction is shown below from
Jones.[1]
Fe % 2HCl 6 FeCl2 % H2
(128)
142
The Gibbs Free Energy released by a reaction is given by the following equation.
)G ' &zF E
(129)
Where:
∆G
is the change in Gibbs Free Energy [J/mol]
z
is the number of electrons transferred [eq/mol]
E
is the electrochemical potential of the reaction [V]
For this reaction at pH = 0, E = -0.44 V. The total energy released per mole of Fe
corroded is equal to:
)G ' &2 @ 96487 @ &0.44
' 85 kJ/mol
(130)
It takes one calorie (4.184 J) to raise one gram of water one degree centigrade at 0 C.
The mass density of water per cm2 in a crevice of height 10 µm is:
mH O ' DH O @ h
2
2
' 1 g/cm 3 @ 10&3 cm
' 10&3 g/cm 2
(131)
Where:
mH O is the areal mass density of water [g/m3]
2
The energy released by a corrosion rate of 1 mA/cm2 can be found by using Equation
64 from subsection 2.3.1.5 to convert to a flux density of iron and multiplying by Equation 130.
143
p '
i
@ )G
z iF
1 mA/cm 2
@ 85 kJ/mol
2 eq/mol @ 96487 C/eq
'0.44 mJ/cm 2 &s
'
(132)
Where:
is the energy flux [J/m2-s]
p
If all of the heat were transferred to the 10 µm of solution present in the crevice, the
rate of change of the temperature with time would be approximately as shown below.
MT
p
1
@
'
Mt
m H O cp
2
'
0.44 mJ/cm 2 &s
10&3 g/cm 2
' 0.11K/s
@
K&g
4.184J
(133)
Where:
T
is the temperature of the solution [K]
t
is the time [s]
cp
is the specific heat of water 4.184 [J/g-K]
This increase in temperature is a surprisingly high rate of change. Obviously not all of
the heat generated at an interface goes into the solution. The iron substrate is thermally
conductive, large and has a considerable heat capacity as well.
144
In addition to ignoring the full effects of temperature by assuming an isothermal
experiment, the dependency of the governing equations and terms on pressure is often not taken
into account.
2.3.3.1.2 Pressure
Pressure is another thermodynamic variable whose effects are often ignored. Almost all
of the data which go into crevice corrosion models are collected at the same pressure at which
the model will be run, one atmosphere (105 Pascals). In thermodynamic terms, this is almost
zero. The additional pressure which might be applied on a crevice in a normal laboratory
environment is easily calculated. A sample immersed to a depth of 2 in (5 cm) in 15 C
seawater would experience an additional pressure equal to
)P hydro ' h DH O g
2
' 0.05m(1025kg/m 3 (9.8m 2 /s
. 500 Pa
(134)
Where:
∆Phydro is the change in pressure due to hydrostatic effects [Pa]
h
is the depth of solution [m]
DH2O
is the density of water = 1000 [kg/m3]
g
is the gravitational acceleration [m/s2]
This is an excess pressure of only 0.5%. In a laboratory environment, there is essentially
145
no additional pressure on a creviced sample.
There are cases where extremely high pressures may be encountered along with crevice
corrosion. One is in the ocean depths. Every 9.8 m of water equals an additional atmosphere of
pressure (105 Pa) , so modeling of crevice corrosion on deep sea pipelines, oil rigs and wrecks
could require an accounting of the effects of pressure. The other source of high pressure,
surprisingly, can be gas bubbles. The pressure inside a bubble has to be higher than ambient to
support the bubble and keep it from collapsing. This excess pressure increases greatly as the
radius of the bubble decreases. This is seen in the following formula from Bikerman[35].
)Pinter '
2(
r
(135)
Where:
∆Pinter is the change in pressure caused by sustaing the
additional gas/liquid interface [Pa]
γ
is the surface energy of the gas/liquid interface [J/m2]
r
is the radius of curvature of the bubble [m]
Using the value of the surface energy for an air/water interface of 71.97 dynes/cm[20]
the pressure change caused by a 1 µm bubble can be found.
146
)Pinter '
'
2(
r
2 @ 7.197@10&2
(136)
&6
10
. 1.44@105 Pa
This pressure is in excess of one atmosphere. A commonly observed effect is that
aerators in salt water cause salts deposits great distances above the waterline. The small
bubbles explode with great force when they reach the surface. The total pressure exerted on a
bubble is the sum of the hydrostatic and interfacial pressure contributions.
)P ' )P hydro % )Pinter
(137)
The thermodynamic variables are often ignored because much of crevice corrosion
modeling deals with systems that are essentially isothermal and isobaric. This cannot be said
about the next group of thermodynamic variables, the concentrations of the other species in
solution. The composition of solution can vary greatly and the myriad ways in which chemistry
effects are simplified merit their own section.
2.3.3.2 Simplification of Chemical Effects
Chemistry plays an important role in transport and generation. In order to produce
models which are easier to solve, many researchers simplify the role of chemistry and focus
only on the effects of one or two chemical concentrations on the single parameter of
147
heterogeneous generation.
2.3.3.2.1 Transport Coefficients
As was discussed in section 2.3.2.2 the dependency of the transport coefficients ui and
Di on chemistry is often ignored. A typical assumption is that the mobility of a species is a
constant and that the diffusivity of the species is related to it by the Nernst-Einstein relations
given in Equation 80 from section 2.3.2.1 repeated below.
Di ' uiRT
(80)
As was discussed in subsections 2.3.2.2.1 - 3 solute/solute interactions, viscosity
changes and geometry changes caused by precipitation can have an effect on the effective
transport coefficients. Typically such effects are not included in models of crevice corrosion.
2.3.3.2.2 Dilute Solution Approximation
As was discussed at length in subsection 2.3.2.1 the transport equation itself is usually
configured based on the assumption that solute ions are not interacting. This assumption allows
the diffusional flux to be calculated in terms of concentration gradients, a term which is
experimentally accessible, instead of in terms of single ion activity or chemical potential, terms
which are not easily measurable.
2.3.3.2.3 Generation Rates
148
The generation equations also often fail to fully reflect the dependence of corrosion
rates on chemistry. Real systems exhibit corrosion rates which have very complex
dependencies on solution composition. Three types of simplifications are made. The first is that
variations in chemistry are considered to be the result of only one or two species such as H+ or
Cl-. In many systems these two species may dominate, but other anions such as SO4-2, CrO4-2
or CO3-2 may play roles that are either detrimental or beneficial in arresting crevice corrosion.
Some theories even implicate metal cations, such as Al+3, as “bad actors” in crevice
corrosion.[14]
The second type of simplification is that the behavior of a metal cannot be measured
continuously over a range of solution compositions. Instead, it is measured at a number of finite
points and the intervening behavior is inferred.
A third role chemistry can play to affect corrosion rates is to deposit a salt film on a
rapidly corroding surface. If the solubility limits for a metal salt are exceeded, a protective salt
film can be deposited. This film will slow corrosion as long as it is present.
The fourth and final assumption is to ignore the chemical effects of cathodic reactions
occurring inside the crevice. Cathodic reactions such as HER and ORR, which were presented
as Equations 3 and 4 in section 2.1, produce hydroxyl ions which tend to raise the pH. As will
be seen in Section 5.4 this local production of alkalinity can have a dramatic effect on the
crevicing behavior.
2.3.3.2.4 Hydrolysis Reactions
149
The effects of homogeneous reactions occurring in solution are often simplified to some
extent. Hydrolysis reactions are the homogeneous reaction most often included into crevice
models. Even these reactions, as was discussed in section 2.3.2.3.2.1, are usually reduced in
complexity to some degree. The previously mentioned assumption is that the hydrolysis
products are all mononuclear species. This is based on the idea that the equilibrium polynuclear
products are slow to form.
Another common simplification is to assume that the pH achieved by hydrolysis is
determined solely by the most hydrolyzable species. For instance, in crevice corrosion modeling
of stainless steels it is often assumed that the hydrolysis of Cr+3 dominates the resulting pH.
In addition to solution chemistry, potential can have a large effect on the crevicing
process.
2.3.3.3 Simplification of Potential Effects
Different potentials affect crevice corrosion. Electrochemical potential controls the
generation rates whereas solution and diffusion potentials affect transport. These effects are
often simplified to some extent in order to produce tractable models..
2.3.3.3.1 Assuming No Migration
For technical reasons that will be discussed in Section 4.2 the mass transport equations
are much easier to solve if diffusion is the only flux considered. Some early crevice corrosion
models were developed which only assumed diffusion as the transport mechanism[30, 36]. While
150
the presence of a strong supporting electrolyte may decrease the available potential gradient to
drive migration, the process is always present while there is a net current out of the crevice[37].
The only condition under which there is no net current is when 100% of the cathodic current is
met locally. As will be seen in section 5.4 this assumption prevents formation of an acidic
environment because of the generation of OH- by the HER and/or ORR reactions given in
Equations 3 and 4.
2.3.3.3.2 Assuming No Diffusion Potential
The diffusion potential is rarely included in models of crevice corrosion. The rationale
according to some authors is that pure diffusion cannot carry charge.[38]
2.3.3.3.3 Assuming Charge Neutrality
As was seen in subsection 2.3.2 under realistic values for the potential field, the solution
inside a crevice is nearly charge neutral. The assumption of charge neutrality does not in itself
cause large problems. However, the mechanism used to enforce charge neutrality can introduce
errors. Three separate ways can be used to maintain charge neutrality. The best way would be
to modify the terms in the governing equations so that charge imbalances never occurred. It is
not clear in a multicomponent system how to do this. The next most accurate way is to allow
the charge imbalances which arise to remove themselves by migration under the influence of the
resulting potential fields[28]. The drawback to the approach is that it is computationally slow.
The simplest and least physically justifiable approach is to adjust the concentration of a non-
151
reacting ion maintain charge neutrality. This main advantage of this method is speed.
2.3.3.3.4 Generation Rates
As was seen in section 2.3.2 some of the common methods for representing
polarization curves eliminate or reduce the effects of electrochemical potential on the reaction
rate.
Temperature, pressure, chemical composition and potential are the thermodynamic
variables affecting corrosion. A model of a crevice also includes dimensionality. There is a
temporal dimension and several spatial dimensions to account for and these too are often
approximated and simplified.
2.3.3.4 Ignoring Temporal Effects
Some models are only designed to calculate steady-state conditions[39-42]. Such models
are useful for examining repassivation or long-term behavior. Models which include the effects
of time to watch the evolution in crevice behavior have a surprising number of time-invariant
assumptions built into them. Applying the governing equations developed in subsection 2.3.1
accounts for chemistries and potentials which are created from an imbalance in transport out of
and generation in a crevice. An unstated assumption though is that the thermodynamic variables,
T, P, Ci and E uniquely determine the reaction rates.
Unfortunately, both hetero- and homogeneous reactions can have a time dependence.
Metal corrosion behavior is heavily influenced by the formation and removal of protective films.
152
Such barrier layers take finite amounts of time to grow or dissolve. Even if temperature,
pressure and chemical environment are kept the same, a metal’s corrosion rate and open circuit
potential will take some period of time to reach steady-state.
The discussion in subsection 2.3.2.3.2.1 on hydrolysis pointed out that polynuclear
hydrolysis products, those involving more than one metal cation, can take days to form. A
model which uses only mononuclear hydrolysis is ignoring a temporal dependence of hydrolysis.
No published model accounts for such effects. The final aspects of a crevice left to
simplify are the spatial ones.
2.3.3.5 Simplifying Geometry
Every crevice corrosion model makes broad generalizations of physical geometries in
order to make the problem tractable. The first broad simplification is usually to reduce the
dimensionality of the problem. Two- and even one-dimensional approximations are common.
On its face, representing a crevice of 1 cm2 area and a nominal 10 µm gap as a twodimensional area with constant height may seem appropriate since the dimensions in the plane
are much larger than the height out of it.
Consider, however, the factors that go into establishing that mean height. A crevice
does not consist of two atomically flat planes suspended a few microns apart. Instead, two
rough surfaces with features several microns high are pushed together with some force. If the
crevice former is appreciably softer than the corroding substrate, then it may deform around the
largest of the metal’s features. In any case, at some points where peaks meet the two materials
153
are intimate contact and at still others valleys may coincide to create a very wide gap. In reality,
what on a cm scale seems to be a flat surface is really a convoluted, warped sheet of fluid.
Corrosion occurs in a crevice because it is the tightest space on an object. It is likely
that corrosion occurs first within a crevice at the most occluded point in the site.
Another effect that is not often accounted for is a changing geometry. Laycock is one
author who does examine changes in geometry[43]. Increases in the crevice gap as metal
corrodes away are one example of such changes. Other types of change would be the
formation of bubbles of evolved hydrogen gas or occlusions caused by precipitated films.
This subsection has addressed the various methods that are used to simplify the
thermodynamic variable of temperature, pressure, solution composition and potential as well as
the dimensional questions of time and space. The next subsection concludes this section on
modeling by discussing the techniques used to mathematically solve the governing equations
after these simplifications are applied.
2.3.4 Methods of Solution for Crevice Corrosion Models
Once the proper equations to represent the physical situation have been developed, a
method of turning those equations into numerical results must be chosen. No matter which
method is used, the goal is to solve for E(x,y,z,t) and Ci(x,y,z,t). These are the variables which
(combined with temperature and pressure) govern not only the corrosion rate but also the mass
transfer (and thus accumulation) of species within the crevice.
Several issues must be considered when choosing a method of solution for use in a
154
crevice model. The major choice is between an analytic solution and a numerical one. All other
things being equal, an analytic solution is preferable. An analytic solution gives the exact answer
continuously over the variable space. Analytic solutions, once found, are easily calculated and
give the functional dependencies of the individual variables. A numerical solution on the other
hand gives approximate answers at discrete points within the range of variables used. Such
solutions are slow to evaluate and it is a even more time-consuming process to find the
sensitivities of a numerical model to the input parameters. The major drawback to analytic
solutions is that large numbers of approximations must be made to reduce the governing
equations to forms simple enough to be solved. Numerical solutions, despite their drawbacks,
are very robust in the types of boundary conditions and behaviors they can incorporate.
2.3.4.1 Analytic Solutions
An analytic solution produces a polynomial or other expression representing the
potential or concentration field within a crevice. An examples would be Equation 203 from
Section 4.1.1.7.
N(x) ' &
Jwallsr 2
46h
2
%
Jwallsrouter
46h
% N0
(203)
This equation gives the potential distribution at steady-state as a function of radius in a
disc shaped crevice of height h, radius router, filled with a solution of conductivity κ , and having
a flux along one face of magnitude Jwalls. The derivation is presented in Case 7 in section 4.1.1.7
155
and it is discussed and illustrated in greater detail there.
Not all analytic solutions have the polynomial representation given above. The next
equation represents the concentration of a species within a one-dimensional crevice with
parallel sides of length xo, initially filled with a solution of concentration Ci0 whose ends are
immersed in solutions of zero concentration at t=0. The derivation for equation 233 is presented
in Case 12 in section 4.1.3.1 and it is discussed and illustrated in greater detail there.
C i(x,t) '
4
1
(2n%1)2 B2 t
(2n%1)Bx
sin
exp
&D
j
2
B n'0 2n%1
x0
x
4C i
0
(233)
0
While more difficult to calculate than equation 203, this formulation still is very easy to
work with. The effect of each variable is very clear in each solution and a great deal of insight
can be gained by considering the effect of individual parameters, such as the crevice length x0,
on the overall solution.
2.3.4.1.2 Misuse of Analytic Solutions
One analytic solution in particular has been frequently misused in the modeling of
crevice corrosion. Edwards[44] presented a “proof “ that the concentrations of non-reacting
species in solution depend exponentially on the potential in solution. Similar approaches were
used by several other authors[45-47] . This proposition was refuted by Psaila-Dombrowski[48].
The original derivation and the Psaila-Dombrowski rebuttal are reproduced here for
completeness. The explanation of the significance of the terms and the conditions under which
156
the solution is appropriate are new to this dissertation.
Equation 44 is the flux equation for a chemical species.
J˜i ' C i v˜ & Di L̃C i & zi F u i C i L̃Ns
(44)
At steady-state, chemical concentration is a constant. For species that are being neither
generated nor consumed the flux must be equal to zero at steady-state. With the additional
assumption that there is no convection this statement of zero flux for the non-reacting species
can be written below.
0 ' & Di L̃C i & zi F ui C i L̃Ns
(138)
The equation can be rewritten by converting the grad operator for one-dimensional
cartesian coordinates, using the Nernst-Einstein equation and rearranging.
MC i
Mx
' &
zi F
RT
Ci
M Ns
Mx
(139)
If the partial derivatives are changed to total derivatives and the like terms are grouped
the following equation is created.
d Ci
Ci
' &
zi F
RT
d Ns
(140)
If the above equation is integrated and the conditions at the mouth are defined as
φs(x=0) = φs0 and Ci(x=0) = Ci0 then the concentration can be found
157
0
Ci e
C i(x) '
&
ziF
RT
0
(Ns(x)&Ns )
(141)
Unfortunately, the integration performed on Equation 140 depends on the unstated
assumption that φs was a variable only of x. In actuality the term is a function of chemistry and
current and only through those terms is it a function of x. Psaila-Dombrowski presented the
following argument[48]. The electrical flux can be found by summing the fluxes due to the
individual ions. This was first done in Equation 117 in subsection 2.3.2.4.3.
2
J˜el ' Fj zi Ji ' &F j zi Di L̃ C i % j zi F u i C i L̃ Ns
i
i
(117)
i
The above can be solved for the gradient of φs as was done in Equation 120 of
subsection 2.3.2.4.3. The potential in the solution is equal to an ohmic component and one
caused by the diffusion potential.
L̃Ns ' &
J˜el
6
&
Fj ziDiL̃C i
6
(120)
For a one-dimensional cartesian system this equation can be substituted into Equation
139
MC i
Mx
'
zi F
RT
Ci
J˜el
6
%
Fj ziDiL̃C i
6
(142)
The partial derivative of Ci can be converted to a total derivative if and only if there are
158
no dependencies on variables other than x. Three conditions must be met:
1) There must be no diffusion potential. If Di is a constant for all anions and cations,
then this condition is met
2) The electrical flux must not depend on chemistry or position. This can be met for
modeled cases where the flux is a constant at the tip or along the walls.
3) κ must be a constant and cannot vary with position or chemistry. This condition can
be met if there is a large supporting electrolyte.
These three conditions are fulfilled in the case presented in subsection 4.1.2.1 and the
CREVICER model does fit to the exponential expression of Equation 141.
Summary
The problem with analytic solutions arises with the assumptions that have to be made to
permit their use. In general, the geometries have to be simple and the coefficients should either
be constants or have easily expressed functional dependencies. An additional limitation is that
each analytic solution is only appropriate to cases with exactly the same geometry and
assumptions.
These limitations will be more apparent after a discussion of the various numerical
methods which are available.
159
2.3.4.2 Numerical Solutions
A numerical solution uses a computer to approximate the governing equations which
control crevice corrosion. Spatially, the crevice is defined as a series of discrete intervals or
elements. Results are obtained at a finite number of points where the elements meet.
Temporally, the crevice is evaluated as a series of snapshots in time.
One advantage is that once a computer program for solving crevices numerically is
created, it can be applied easily and automatically to a number of geometries by merely
changing the input data. Another strength is that any sort of functional dependence that is
definable can be used in the computer program. A final advantage is that the accuracy achieved
can be increased to any desired level at the expense of increased computation time.
One of the major disadvantages to numerical solutions is that the increase in accuracy is
paid for by non-linear increases in computational time. Increasing the spatial resolution for twoor three-dimensional models increases the solution time by the square or cube of the increase in
accuracy. The other disadvantage is that the effects of individual variables on the overall
solution is not easily found.
Several different types of numerical methods have been used in modeling crevice
corrosion with respect to spatial dimensions. They can be broadly grouped as finite difference
(FD) , boundary element (BEM) and finite element (FEM) methods of solution. Temporal
problems can be solved either implicitly, using only spatial information at time = t to find the
state at t+1, explicitly, where information at t+1 is used, or mixed which is some weighted
average of the two. Each is given a short capsule summary in the subsequent sections.
160
2.3.4.2.1 Finite Difference Method
Finite difference methods of solution solve partial differential equations by dividing the
problem domain into a grid of points[49]. The differential equations are written for each mode as
difference equations. An example equation which could be solved by finite difference methods
is Fourier’s law of heat conduction.
MT
M2 T
' k
Mt
Mx 2
(143)
Thus, the temporal differential becomes:
t%1
t
T x &T x
MT
•
Mt
)t
(144)
Where:
Txt
is the temperature at point x at time t [K]
∆t
is the change in time between t and t+1[s]
A similar process can be performed for the spatial differential.
k
M2 T
Mx 2
t
•
t
t
Tx%1 & 2Tx % Tx&1
()x)2
(145)
Even when other methods are used to solve the problem spatially FD is usually used to
161
solve the problem temporally. The time dimension is a single axis and FD has good fidelity to
such low order problems. The ease of calculation produced by an FD approach makes it the
preferred method for such problems. The temporal solution can be either explicit, implicit or a
mixture of the two. Explicit methods use only spatial information from time = t to find the field
variable at a point at time = t+1. The method is simple to code and can be rapidly evaluated. Its
drawback is that there are some limitation on the size of the steps in time and space that can be
used and still maintain a stable numerical solution. This problem is discussed at length in section
3.2 on FEM. Implicit methods find the value of the field variable at time = t+1 in terms of the
spatial information at time = t+1. This produces are group of n equation for n unknowns which
must be solved simultaneously. The additional computational complexity is compensated for by
increased stability. Mixed methods employ some average of the explicit and implicit techniques.
The special mixed case where the two solutions are weighted equally is called Crank-Nicolson.
Figure 2.3.4.2.1(a) illustrates the information in space and time that is used by each of the three
techniques. It is adapted from Chapra and Canale[49].
Equation 138 can be placed into finite difference form by using equations 139 and 140.
This is done first for an explicit and then an implicit formulation.
t%1
Tx
t
' Tx %
k)t
)x
2
t
t
t
Tx%1 & 2Tx % Tx&1
(146)
The implicit formulation is:
t
Tx ' &
k)t
)x
2
t%1
Tx%1 %
1 % 2
k)t
)x
2
t%1
Tx
&
k)t
)x
2
t%1
Tx&1
(147)
162
The above is an expression with three unknowns. If it is applied to each node, it results
in set of equations that can be solved simultaneously.
Crank-Nicolson results when the spatial finite difference equation is the average of the
two approaches. It is discussed more in section 3.2.
The advantage of FD is that it is simple to implement. It’s disadvantages are that since it
is based on a grid it is poorly suited for irregular geometries and heterogeneous media. Also,
unless the algorithms are modified to allow non-uniform gridding the method does not focus the
computational effort to where it is most needed. An alternate method of solution for partial
differential equations is the Boundary Element Method.
163
2.3.4.2.2 Boundary Element Method
BEM transforms the differential equations that apply across the interior of a volume into
integral equations that are applied over the boundary of the volume. It is an appropriate
technique for isotropic, homogeneous volumes with a low surface-to-volume ratio[50]. The
technique grids the surface of the volume and solves the integral equations there. For a
homogeneous media, knowledge of the surface concentrations and potentials allows the value
of the fields inside the volume to be evaluated.
The major limitation of the technique is that it is not suited for volumes which have a
very high surface to volume ratio. For such domains the finite element method is
superior. BEM solves over the surface and yields information about the interior. FEM solves
over the interior and produces information about the surface.
2.3.4.2.3 Finite Element Method
FEM treats a volume as a collection of simple shapes in contrast to FD’s approximation
of a volume as a collection of points. The method makes an assumption about the shape of the
distribution of the field variable between the nodes where it is evaluated. It then minimizes the
error between this shape function and the “true” solution to find the best approximation to the
exact solution.
Figure 2.3.4.2.3(a) shows simple shape function for a one-dimensional problem. In this
case the shape function is a straight line. It connects the node at Xi where the value of the field
variable is Ti to the node at Xj where the value of the field variable is Tj. The value of the field
164
variable between nodes can be found by using the pyramid functions Ni and Nj. This is shown
in equation form below.
e
e
T e ' Ni Ti % N j Tj
(148)
The values of the pyramid functions in this case are determined by the positions of the
nodes and the x value of the point within the element being evaluated.
e
Ni '
Xj & X e
Xj & Xi
e
, Nj '
X e & Xi
Xj & Xi
(149)
This representation is used to find an approximate solution to the differential equation.
As illustration, the application of FEM to a simple first-order differential equation will shown in
the following example. The canonical equation is given below.
d
dT
dT
% M(x)
% P(x)T % Q(x) ' 0
K(x)
dt
dx
dx
(150)
If this differential equation is applied to T(e), the approximation of T presented in Figure
2.3.4.2.3(a), then the residual will be non-zero, re.
d
dT e
dT e
Ke
% Me
% P eT e % Q e ' r e
dt
dx
dx
(151)
Ke, Me, Pe, and Qe are the values for the coefficients within the element. While they may
vary from element to element, within each element they must be constant.
It is not possible to make re equal to zero at every point. Only the exact solution has a
zero residual everywhere. In the method of weighted residuals the integral of the residuals
165
multiplied by a weighting function over the element is set equal to zero.
xl
Ri '
m
x0
Wi r e dx ' 0
(152)
In Galerkin's method the weighting functions are the pyramidal functions
xl
Ri '
m
x0
N i r e dx
(153)
This can also be done for Rj. Once integrated Ri, and Rj, depend on Ti and Tj, and a
constant. This can be expressed in matrix form as shown below.
Bii Bij T
C
Ri
0
i
& i '
'
T
C
0
Rj
Bji Bjj j
j
(154)
The values of Bii, Bij, Bji, Bjj, Ci, and Cj, are given in Allaire[51] for one- and twodimensional problems. Each element produces an independent equation with one unknown for
each node. The unknown is the value of the field element at the node. These equations can be
solved simultaneously for the field variables.
One advantage of FEM over BEM is that it is more suited for domains with high
surface to volume ratios. Another factor which gives an edge to FEM is that crevices are highly
heterogeneous. The generation rate varies strongly from point to point because of changes in
166
chemistry and potential. An advantage over FD is that the positions of the nodes are built
directly into the equations. Practically, coding FD is only simpler when the node spacing is
equal.
167
2.3.4.3 Summary: Issues in Choosing Methods of Solution
Two main factors guide the choice of solution method for the differential equations
governing crevice corrosion that were developed in subsection 2.3.1. The first is the functional
dependency of the coefficients in the equations and the second is the shape of the domain that
must be solved. The coefficients of the differential equation depend on the chemical and
electrical generation rates, Ri and Rel, and the transport coefficients ui and Di.
Essentially, analytic solutions are only practical for simple geometries and constant
coefficients. Any irregularities in the geometry or dependence of the current on potential or
chemistry make it difficult to find an analytic solution. When it is impossible to produce an
analytic result, numerical methods can be used.
FD is the simplest of the numerical techniques. Although it is easy to code, it is
restricted in the geometries to which it applies and is somewhat wasteful of computational effort.
BEM is a viable method for homogeneous domains with low surface-to-volume ratios. Crevices
have high surface to volume ratios and are quite heterogeneous. The generation rate of chemical
species and electrical current varies significantly within the crevice. FEM excels when working
with heterogeneous media and high surface-to-volume ratios.
A separate issue that does not differentiate between methods of solution is the trade-off
between fidelity to the physical situation and ease of solution. A physical crevice has three
spatial dimensions and changes in time. Any reduction in the dimensionality of the problem
makes it much easier to solve by any of the analytical or numerical techniques described above.
This section has focused on the differential equations that determine the chemical
168
concentration and potential fields inside crevices. It has derived the equations from the flux
relationships, discussed the factors that affect the coefficients in those equations, described the
kinds of simplifications that are made based on those factors and given a brief summary of the
numerical methods that can be used to solve the equations. The next section will use this
information to discuss the previous work that has been done in modeling crevice corrosion.
169
2.4 Literature Review
A number of authors have treated the problem of modeling crevice corrosion. This
section will organize their work by their treatment of the different issues involved, rather than by
the material/environment system that was modeled. An additional resource to this dissertation
and its organization are the many literature review papers that have been produced. In 1987
Sharland reviewed the current modeling of crevices and pits[52]. Several years later Munn
produced a similar review[53] Turnbull has been quite prolific, producing review papers on
modeling of cracking[54, 55], occluded site chemistry[56], and pit propagation.[57-59]
The major feature of this chapter is Table 6 which summarizes the modeling performed
in over 55 papers. The papers chosen cover the bulk of modeling work done on crevices and
pits. Some papers also come from the related areas of cracking and cathodic protection. The
papers are organized by model and/or group. One model may be the focus of several papers as
it is refined. Similarly, a group generally has a common approach to modeling that carries over
through different models and researchers. Within each group the papers are organized in
reverse chronological order with the most recent papers appearing first. The columns for the
table and the abbreviations used in it are defined on the next page in Table 5. Notes on each
paper follow Table 6 and are labelled alphabetically.
170
Column
Description
Abbreviations
Reference
Primary author’s name and
reference number. Secondary
authors are included in the
bibliography
Mat
Material studied in model.
Env
Environment studied in model.Ac:
Cl:
CO2:
H2O:
NA:
NO3:
SO4:
Acetate containing
Chloride containing
Carbon dioxide-rich
High purity water
Not applicable
Nitrate containing
Sulfate containing
Type
Type of method used to solve ?
governing equations
Anal:
BEM:
FD:
FEM:
Num:
Not clear from paper
Analytic
Boundary Element
Finite Difference
Finite Element
Iterative technique
Dim
Dimensionality of crevice
Ag:
Al:
Cu:
Fe:
NA:
Ni:
SS:
Ti:
Zn:
Silver
Aluminum and alloys
Copper and alloys
Iron and steels
Not applicable
Nickel and alloys
Stainless Steel
Titanium and alloys
Zinc and alloys
(cyl): Cyclindrical coordinates
1D:
One dimensional
1D+: One free dimension + changes in
second
2D:
Two-dimensional
2D+: Two free dimensions + changes in
third
171
Column
Description
Time
Technique used to model time C-N:
variations
Exp:
Imp:
SS:
Crank-Nicolson
Explicit
Implicit
Steady-state
Diff
Is diffusion considered as a
flux mechanism?
N:
Y:
No
Yes
Mig
Is migration considered as a
flux mechanism?
N:
Y:
No
Yes
Conv
Is convection considered as a N:
flux mechanism?
Y:
No
Yes
BC
Representation of
electrochemical flux
Lin:
Pass:
Poly:
Tafel:
Linear on some variable
Constant
Polynomial on some variable
Exponential on potential
CN
How is charge neutrality
considered?
N:
NA:
Pois:
Y:
No
Not Applicable
Poisson’s Equation
Yes
Ppt
Are chemical reactions other N:
than hydrolysis
Y:
considered?(No pH effect)
No
Yes
Hyd
Is hydrolysis considered?
No
Yes
Notes
Abbreviations
N:
Y:
Letter reference for notes
following the table
Table 5. Description of columns and abbreviations for Table 6.
Solution Method
Reference
Mat
Env
Type
Dim
Flux
Chemical
Time
Diff
Mig
Conv
BC
CN
Ppt
Hyd
Notes
Evitts et al [60]
Ti
Cl
FD
2-D
Exp
Y
Y
N
Pass
Pois
N
Y
A
Watson[61]
Fe
CO2
FD
1-D
Exp
Y
Y
N
Tafel
Pois
N
Y
B
Evitts[62]
Ag,Ti
FD
1-D
Imp
Y
Y
N
Pass
Pois
N
Y
C
Watson[9]
SS,Ni
Cl
FD
1-D
Exp
Y
Y
N
Pass
Pois
N
Y
D
Watson[28]
SS,Ni
Cl
FD
1-D
Exp
Y
Y
N
Pass
Pois
N
Y
E
Georgiadou[24, 26, 62 3]
Cu
Cl
FD
2-D
SS
N
N
Y
Tafel
NA
Y
Y
F
Harb[63]
Ni
Cl
FEM
2-D
SS
Y
Y
N
Tafel
Y
Y
N
G
Alkire[34]
Cu
SO4
BEM,
FEM
2-D
SS
NA
NA
NA
NA
NA
NA
NA
H
Alkire[64], Lott[15]
SS
Cl
FD
1-D (cyl)
Imp
Y
Y
N
Poly
Y
N
N
I
Alkire[39]
Al
Cl
An
1-D(cyl)
SS
Y
N
N
Lin.
Y
N
N
J
Alkire[33]
NA
NA
FEM
2-D
SS
NA
NA
Y
NA
NA
NA
NA
K
Alkire[20]
Fe
SO4
Num
2-D
SS
Y
N
N
Tafel
Y
N
N
L
Herbert[14, 65]
Al
Cl
FD
1-D (cyl)
C-N
Y
Y
N
Tafel
Y
N
Y
M
Alkire[66],Siitari[67]
Al
Cl
FD
1-D (cyl)
C-N
Y
N
N
Tafel
Y
N
N
N
Alkire[35]
NA
NA
FEM
2-D
Y
NA
NA
NA
Pass
NA
NA
NA
O
Solution Method
Reference
Mat
Env
Type
Dim
Flux
Chemical
Time
Diff
Mig
Conv
BC
CN
Ppt
Hyd
Notes
Alkire[68]
Cu
SO4
An,FD
1-D
C-N
Y
N
N
Tafel
?
N
N
P
Turnbull[8]
SS
H2O
Num
1-D+
N
Y
Y
N
pass
N?
Y
Y
Q
Turnbull[69]
Fe
Cl
?
1-D+
N
Y
Y
Y
Tafel
Stated
Y
Y
R
Turnbull[70]
Fe
Cl
?
1-D+
N
Y
Y
Y
Tafel
Stated
Y
Y
S
Gangloff[71]
Fe
Cl
?
1-D
N
Y
Y
N
Tafel
Stated
N
Y
T
Turnbull[72]
NA
NA
?
1-D+
N
Y
N
Y
NA
Stated
NA
NA
U
Turnbull[46]
Fe
Cl
?
1-D
N
Y
Y
N
Tafel
Stated
Y
Y
V
Sharland[6]
SS
Cl
FD
1-D
Exp?
Y
Y
N
Pass
Y
Y
Y
W
Sharland[73]
SS,F
e
Cl
FEM
1-D
Exp?
Y
Y
N
Tafel
Y
Y
Y
X
Sharland[40, 41]
Fe
Cl
Num
1-D
SS
Y
Y
N
Pass
Y
Y
Y
Y
Oldfield[74]
Al
Cl
Num
1-D
Exp
N
Y
N
Pass
NA
Y
Y
Z
Oldfield[75]
SS
Cl
Num
1-D
Exp
N
N
N
Pass
Y
Y
Y
AA
Oldfield[4]
SS
Cl
Num
1-D
Exp
Y
Y
N
Pass
Y
Y
Y
AB
Solution Method
Reference
Mat
Env
Type
Dim
Flux
Chemical
Time
Diff
Mig
Conv
BC
CN
Ppt
Hyd
Notes
Gartland[7]
SS
Cl
FD
1-D
Y
Y
Y
N
Poly
?
Y
Y
AC
Gartland[7]
SS
Cl
Anal
1-D
Anal
NA
NA
NA
Poly
NA
NA
NA
AD
Gartland[76]
SS
Cl
FD
1-D
Exp
Y
Y
N
Poly
?
Y
Y
AE
Gartland[29]
SS
Cl
FD
1-D
Exp
Y
Y
N
Poly
Y
Y
Y
AF
Bardal[77]
SS,F
e
Cl
BEM
2-D
NA
NA
NA
NA
Poly
NA
NA
NA
AG
Walton[10]
SS,F
e
Cl,
SO4
FD
1-D
Num
Y
Y
N
Poly
?
Y
Y
AH
Walton[78]
Fe
Ac
FD
1-D
N?
Y
Y
N
Poly
?
Y
Y
AI
Fu[38]
Ag
NO3
FEM
1-D
Exp?
Y
Y
N
Pass
?
Y
Y
AJ
Fu[37]
Cu
Cl
FEM
2D+
NA
NA
NA
NA
Poly
NA
NA
NA
AK
Edwards[44]
SS,Al
Cl
Anal
1-D
SS
NA
NA
NA
NA
Anal
NA
NA
AL
Edwards[23]
Al
Cl
Anal
1-D
SS
NA
NA
NA
NA
Anal
NA
NA
AM
Solution Method
Reference
Mat
Env
Type
Dim
Flux
Chemical
Time
Diff
Mig
Conv
BC
CN
Ppt
Hyd
Notes
Gaudet[79]
SS,Ni
Cl
Anal.
1-D
Anal
Y
N
N
Tafel
NA
NA
NA
AN
Tester[30]
SS,Ni
Cl
Anal
1-D
Anal
Y
N
N
?
NA
NA
NA
AO
Gravano[45]
Fe,
Zn
Cl
FD
1-D
SS
Y
Y
N
Pass
?
Y
Y
AP
Galvele[42]
Fe,
etc
Cl
?Anal
1-D
SS
Y
N
N
Pass
?
Y
Y
AQ
Galvele[36]
Fe,
etc
Cl
?Anal
1-D
SS
Y
N
N
Pass
?
Y
Y
AR
Sridhar[19]
SS,Ni
Cl
FD
1-D
Imp
Y
Y
N
Pass
Make
N
Y
AS
Lillard[80]
Ni
Cl
FEM
1-D
NA
NA
NA
NA
Der.
NA
NA
NA
AT
Munn[81, 82]
Fe,Zn
Cl
FEM
2-D+
SS
NA
NA
NA
NA
NA
NA
NA
AU
Bertocci[83]
Cu/A
u
Cl
Anal
1-D
N
Solution Method
Reference
Mat
Env
Type
Dim
Y
Y
N
Tafel
Y
Flux
Y
Y
AV
Chemical
Time
Diff
Mig
Conv
BC
CN
Ppt
Hyd
Notes
Laycock[43]
SS
Cl
FEM
2D(cyl)
Exp
Y
N
N
Lin
N
N
N
AW
Shaw[84]
Ni
Cl
Anal
1D
NA
NA
NA
NA
Pass
NA
NA
NA
AX
Shuck[85]
-
Cl
Num
2D+
Exp
Y
Y
Y
Tafel
Y
N
Y
AY
Shuck[86]
-
Cl
Anal
1D
Anal
Y
N
N
?
?
N
N
AZ
Psaila-Dombrowski[48] SS,Ni
H2O
FD
1D
Imp
Y
Y
Y
Tafel
Y
Y
Y
BA
Engelhardt[86]
Fe
Cl
Num
1D
SS
Y
Y
N
Pass
Y
Y
Y
BB
Ateya[87]
Fe
Cl
Num
1D
Exp
N
N
N
Poly
Y
N
Y
BC
Xu[88]
Fe
NH4
Ac
FEM
2D
SS
NA
NA
NA
Poly
Y
N
N
BD
Ateya[47]
-
-
Anal
1D
Table 6. Summary of Models Reviewed in this dissertation.
SS
NA
NA
NA
Tafel
Y
N
N
BE
178
A)[60]
A one-dimensional titanium crevice is coupled to a two-dimensional boldly
exposed surface in room temperature 0.5 M NaCl in this model. The authors
present data on the transient pH and chloride fields at selected points in the
crevice as well as the spatial distributions at a few snapshots in time.
Deoxygenation is allowed to proceed naturally. There appear to be some
transient instabilities in the pH near the mouth that affect the model. The
chemistry is predicted to become monotonically worse with longer time and
greater depth into the crevice, but never to reach levels that would be
damaging. No potential information is presented and it is unclear whether the
chemical effects of cathodic reactions are included.
B)[61]
The model represents a one-dimensional crevice of pipeline steel in carbonaterich neutral waters. Sulfate and chloride are present at lower levels. Data for the
transient concentrations of Fe+3, CO3-2, SO4-2 and pH at selected points is
graphed. The crevice first appears to alkalinize and then acidify. A strength of
the work is the detail used in calculating the formation of various carbonate
species. The boundary conditions are purely Tafel-like for both anodic and
cathodic reactions. The graphed data shows what appear to be numerical
instabilities. One possible explanation for these transient spikes may be the
“micro-celled” idea that the authors use. Apparently there is not a smooth
transition from nearly purely cathodic to nearly purely anodic reactions.
179
C)[62]
This paper presents the model used in (A)-(E). Two cases are modeled, Ag
dissolution in KNO3 and Ti crevicing in 0.1 M NaCl. In both cases the anodic
dissolution was taken as a constant, independent of chemistry and potential.
Transient data on the pH, O2 content and various chemical concentrations are
shown. There do not appear to be any significant instabilities. The use of
Poisson’s equation in this body of work to maintain charge neutrality is
explained in detail. Essentially the authors would prefer to solve the differential
equations in parallel with Poisson’s equation. Because of the large
computational burden it is solved in series with the equations. Essentially, it is
used to correct any charge imbalances produced by the model. No data are
presented to show the different results that might be obtained if Poisson’s
equation is strictly enforced or if it is occasionally enforced by either the serial
Poisson or a brute force approach.
D)[9]
The sensitivity of a crevice to locally more constricted sites is evaluated by using
the Watson-Postlethwaite model. The two materials considered were 316L and
625. Each was modeled in 1 M NaCl as a crevice 2.5 cm deep with a gap of
3.8 µm and was considered to initiate when the pH dropped below some
critical value. A subcrevice of 0.1 µm was placed over approximately 10% of
the crevice. The presence of a subcrevice was found to be extremely damaging.
180
E)[28]
The original published work for this “family” of crevice corrosion models
presents the results of modeling the crevice corrosion of 316L and 625. The
model is a finite-difference one-dimensional model that incorporates hydrolysis
and the consumption of O2. When examining the initiation of crevice corrosion it
applies the CCS model. The crevices have the same geometry and solution as
(D) without subcrevices. Here too the corrosion rate is assumed to be a
constant.
F)[32]
This series of papers is a study of the anisotropic etching of copper foils[24, 26].
The dissolution of copper in 0.5 M HCl + 0.5 M KCl + (3.5M or 0.5 M)
CuCl2. was modeled. The complete mass transfer equation was used as the
authors included the effects of migration, diffusion, and convection.
Homogeneous chemical reactions were also considered in this two-dimensional
model. The authors used a FD method to find the steady state dissolution rate
for two initial geometries. While this system is analogous in many respects to a
crevice, the convective term was prominent only because the “pit” was very
open and solution was flowed past the open mouth. Indeed, one of the goals of
the chemical process being modeled is to use convection to maximize mass
transfer from the pit base.
G)[63]
A two-dimensional FEM model was used to study the pitting corrosion of
181
nickel in 0.5M NaCl. The polarization curve used takes potential but not local
chemistry into account. Charge neutrality is used as a governing equation. It
replaces an Ohm’s law approach for the potential. The authors mention that
they use a separate analytical solution for the potential field. It appears that,
despite their claims, the authors have seven equations for only six unknowns.
An important aspect of this work is that the transport is modeled in areas
outside the occluded site as well as within it. The authors point out the
concentration gradients extend far into solution. This is important because a
common assumption is that the concentrations at the mouth are identical to the
bulk composition.
H)[34]
This work is a precursor to the later papers of Georgiadou[24, 26, 32]. The
dissolution of partially unmasked copper substrates in 1M H2SO4 was modeled
using both BEM and FEM. The focus of this work is on convective mass
transport rather than the resulting behavior of the pit.
I)[64]
A variation of the CCS model that uses a combination of Cl- and S2O3-2 ions to
define the critical solution chemistry is used to model the initiation of crevice
corrosion on 304. The experimental work supporting this modeling is presented
in a companion paper[15]. The crevice modeled had a 1.27 cm radius and a
uniform gap of 4 µm, i.e., it is a one-dimensional crevice in cylindrical
182
coordinates. The metal was assumed to dissolve at a constant rate of 0.15
µΑ/cm2. The dissolution of the MnS particles is assumed to be potential
dependent and follows a second-order polynomial. An implicit method is used
to find the changes in concentration with time. The model consistently
overestimates the observed initiation times[15], although the trends with
increasing MnS are similar. Finally, there is a slight increase in the
aggressiveness of the solution at intermediate distances into the crevice. This
increase is caused by the potential dependence of the MnS dissolution. Ohmic
drop into the crevice eventually slows MnS dissolution.
J)[39]
A circular crevice of 99.9% aluminum in modeled and compared to experiment
for crevice heights of 0.1 to 0.7 mm and crevice radii from 6.35 to 12.7 mm.
The work is a successor to Hebert’s[14, 65] The dissolution rate of aluminum in
the passive region is assumed to be linear with overpotential. The criteria used
for initiation was a variation of the CCS model in which the critical environment
was 0.003 M Al+3.
K)[33]
Convective flow can greatly accelerate the removal of corrosion products from
a localized site. This paper reports on studies calculating the degree of mixing
for various flow regimes over several geometries. The surface of the pits were
held constant at a saturated value and the steady-state concentration field within
183
the rest of the occluded site was found. If the Peclet number was less than or
equal to 1, then the entire site remained almost entirely saturated. If it was
greater than orequal to 100 the electrolyte was free of dissolution products.
L)[20]
Iron dissolution in flowing H2SO4 can be limited by the formation of salt films.
The authors model potential distributions between two plates and calculate the
maximum Reynolds number which allows precipitation to occur for both laminar
and turbulent flow and ohmic and activation control. This combination of fluid
flow and salt film precipitation is not likely to be encountered for crevice
corrosion.
M)[65]
This paper presents an intermediate stage of investigation into the crevice
corrosion of aluminum in 0.05 M NaCl. It falls between the later work of
Alkire[39] and the earlier work of Alkire[67]. As in those two papers, the
modeled crevice is a one-dimensional cylindrical crevice. The model is solved
using a FD method and uses Crank-Nicolson to evaluate the time variations.
The model produces initiation times for various crevice gaps. Data are
presented which shows current spikes and pH drops at the initiation time.
These effects do not appear to be consistent with the published boundary
condition. The flux of aluminum dissolution is stated to be either zero or to
depend linearly on potential. There is no listed corrosion rate for initiated
184
material.
N)[66]
This paper presents the initial work by Alkire’s group on modeling the crevice
corrosion of aluminum. A FD approach is used to model accumulation of Al+3
ions in aqueous solution. The only transport mechanism considered is diffusion.
Another contrast to the later work is that the dissolution condition for the
aluminum includes the effects of pH. This aspect allows initiation to occur as
part of a continuous process rather than a discontinuous one.
O)[35]
Plating is the inverse problem of corrosion. The deposition of metal on a surface
does share in common with dissolution the need to account for changing
chemical concentration and electrical fields. A FEM approach is used to model
the growth of a metallic deposit. Butler-Volmer kinetics are used to describe
the surface reactions. No chemical variation appears to be built into the
reaction. The growth rate can be found from the current density. Temporal
effects are accounted for by growing the surface. The distributions in the
solution appear to be steady-state.
P)[68]
This paper models the forced dissolution of copper wire in Cu2SO4 in a lead in
pencil arrangement. The model accounts for chemical transport by diffusion
only. The dissolution rate accounts for chemistry changes and the effects of
185
ohmic drop inside and outside the pit and activation overpotentials. An
additional factor considered in the model is the fact that the conductivity of
concentrated solutions does not follow dilute solution theory. Instead the
authors use a polynomial fit of experimental data on conductivity.
Q)[8]
In many ways a crack is similar to a crevice. The geometries are similar and
calculations of chemical concentration and potential fields are integral to the
problem. The author presents a model that addresses the cracking of sensitized
stainless steel in a BWR. The modeled regions were cracks with both parallelsided and wedge-shaped geometries. Although the wedge-shaped opening is
nominally two-dimensional, that second dimension only appears in the purely
one-dimensional formulation of the governing equations as a modifier to the
generation terms. This issue was discussed in Section 2.3.l.4 of this dissertation.
For this reason, the approach is classified as “one-dimensional +”. Other
complicating features accounted for in this model include the effects of stress on
dissolution rate and temperature. The stress intensity is an input factor into the
model and does not vary. The temperature problem is accounted for principally
by translating the solubilities to 288 C. Neither the stress intensity nor the
temperature are affected by the model. The model is also a steady-state code
and does not calculate any transient information. There are no chemical effects
allowed on the dissolution rate, but chemistry does affect the cathodic
186
reactions. pH effects are discussed only in the context that the sparing solubility
of the corrosion products allows a conversion of metal anion flux into a flux of
hydronium. Despite the title of the work, no data are presented on the
chemistry or pH of the crack.
R)[69]
Turnbull and Ferris model corroding fatigue cracks in structural steel in
seawater. The model is in most respects similar to work done earlier on cracks
that were undergoing cathodic protection[70] and the comments on that paper in
(S) apply here as well. The major difference is that without the alkalinizing effect
of the cathodic reactions the crack tip pH remains nearly neutral to slightly
alkaline.
S)[70]
The cracking of cathodically protected carbon steels in seawater is the problem
modeled by Turnbull and Ferriss. The model includes the effects of mass
transport by migration, diffusion, and convection. Convection is considered
because these cracks are subjected to a cyclic stress that alternately opens and
closes the crack. This motion creates a “crack pumping” effect that efficiently
exchanges solution in the crack with that in the bulk. Chemical equilibria are
enforced for the carbonate and carbonate ions as well as the deposition of
calcium and magnesium compounds. Hydrolysis is considered as well. The
chemical effects of the cathodic reactions are also included. One difficulty in
187
interpreting the paper is that the list translating the notation into chemical species
is missing an entry. The equations are solved numerically, but the method is not
defined in this paper. All solutions are presented as steady-state ones. A major
conclusion is that cracks will become quite alkaline in pure water (pH~12) and
that seawater will exert a buffering effect reducing this to approximately pH =
11.
T)[71]
Gangloff and Turnbull present a joint study comparing experimental data on
cracking of the high strength steel 4130 in 3.5 wt% NaCl with crack length.
Only migration and diffusion are used for the transport processes and the
dissolution rate is Tafel-like. Hydrogen reduction is a prime area of focus in the
paper and is affected by both potential and [H+] as was discussed in section
2.1. The major conclusion of the paper is that shorter cracks can have an order
of magnitude greater generation rate of elemental hydrogen at the crack tip. If
hydrogen is the bad actor in EAC, then this would explain the “short crack”
effect that is often observed.
U)[72]
The author presents a focused examination of the effects of mass transport on
corrosion fatigue cracks. The transport processes considered are convection
and diffusion. The model is only operated where the ohmic drop is small and
188
migration can be safely ignored. Since the focus is on the relative contributions
of diffusion and convection to mass transport rather than any specific chemistry
the work is done without electrochemical boundary conditions or equilibria. The
major conclusions of the work are that 1) Crack length is an important
parameter in addition to K, 2) short cracks are dominated by diffusional
transport, 3) Convection becomes more important in long fatigue cracks
because the displacements are larger, and 4) Crack shape has a large effect on
transport but not on the relative contributions of convection and diffusion.
V)[46]
This is an earlier version of the work in (R)[69] and (S) [70]. This version of a
model representing the crack electrochemistry of corroding steels uses only the
mass transport processes of migration and diffusion and ignores convection.
Also the later additions of stress intensity on the dissolution rate were not added
at this point. The dissolution rate is a Tafel equation and is independent of
chemistry. The steady-state crack tip pH depends on the mouth potential.
Without cathodic protection the crack tip is nearly neutral, with it the tip is
alkaline.
W)[6]
The author presents a brief overview of the “CHEQMATE” model and shows
its applications to several systems. The code allows mass transport by migration
and diffusion. The type of electrochemical generation is not explicitly mentioned,
189
but all three cases shown used only a passive current density. The hydrolysis,
chemical equilibria, and precipitation are included through the use of
“PHREEQUE”, a geochemical code. One strength of the code is that it uses a
correction for the thermodynamic information in concentrated solutions. A
modified form of the Davies equation, presented in this dissertation in
subsection 2.3.2.2.1.2, is used. The major limitations of this model appear to
be the restricted form for the anodic dissolution current and the exclusion of the
chemical effects of cathodic reactions.
X)[73]
The authors present a one dimensional FEM model of crevice corrosion. The
model accounts for migration and diffusion. Despite the fact that the flux
equation is written in two-dimensional form, it appears that the model is strictly
one-dimensional. The electrochemical generation terms are Tafel expressions
and hydrolysis is performed. The chemical effects of cathodic reactions are not
included. Poisson’s equation is used to find the potential distribution and charge
neutrality is also invoked. Section 2.3.1.6 of this dissertation discusses the
apparent contradiction between these two equations. No statement is made as
to how charge neutrality is maintained. The model is compared to the work of
Beavers and Thompson[89] and Alavi and Cottis. For both sets of data the
model is quite accurate in predicting the ohmic potential drop at steady-state
but less successful in predicting the observed pH’s and current distributions
190
over time. The authors point out that cathodic reactions inside the site might
account for the discrepancy.
Y)[40, 41]
These papers present the model used later in (W) and (X). The model is a onedimensional FEM model that incorporates migration and diffusion for transport
processes, Tafel-like behavior for electrochemical reactions and allows
hydrolysis and chemical equilibria to occur. It is not clear what method is used
to account for time variations in chemistry and potential within the occluded
region. Although charge neutrality is listed as a governing equation, no mention
is made of how it is applied.
Z)[74]
This model for the crevice corrosion of various aluminum alloys in seawater
uses predictions of the temporal changes in chemistry and potential to predict
when an alloy will pit. According to this theory the effect of a crevice is to
acidify the local environment. Rather than directly attacking the metal, the
increasing acidity acts as a chemical potentiostat and by increasing the kinetics
of the HER (discussed in section 2.1). Increasing the cathodic kinetics will raise
the corrosion potential. The criteria for initiation used in this paper is when the
corrosion potential exceeds the pitting potential. The transport mechanism
allowed is migration. The corrosion current is strictly passive whereas the HER
kinetics are sensitive to both chemistry and potential. Only two of the
191
mononuclear hydrolysis products for aluminum are considered. AlCl3 is
mentioned in the text as a possible precipitate, but is not listed in the governing
equations. The model’s inclusion of the chemical effects of cathodic reactions is
problematic. OH- production from the HER is listed a reaction that is
considered. Indeed, it is stated that this is the primary cathodic reaction inside
the crevice. Acidification does not occur at the open circuit potential for
reasons that will be discussed in section 5.3. Instead the alkalinizing effect of the
cathodic reactions will raise the pH. In short, acidification has a limited ability to
raise the corrosion potential in a freely corroding crevice because the buildup of
OH- will poison the reaction and prevent acidification.
AA)[75] This paper compares predictions of the Oldfield-Sutton model[4] to the experimental
data for several stainless steels in seawater. The inputs to the model are the composition
of the alloy, its passive current density, and the required critical crevice solution in terms
of pH and Cl-. In this paper the model is used only to rank the relative resistance of the
different alloys, so no transport is allowed or used. A further simplification is that all the
alloys were assumed to have a passive current density of 0.1 µA/cm2. The paper shows
that a mechanistic model can also be used to generate qualitative data on alloy
performance for use as a screening tool.
AB)[4]
This is the seminal paper for the CCS model of crevice corrosion. The authors
192
take the qualitative description of Fontana & Greene[3] for the initiation of
crevice corrosion and turn it into a predictive model. Migration is the only
transport mechanism considered. Alloy dissolution is assumed to be only a
passive current density and no cathodic reactions are assumed to occur within
the crevice after the initial charge of O2 is depleted. The crevice is not
subdivided into different regions and the process is solved numerically. A
strength of the model is the variety of hydrolysis reactions that are considered.
Estimates are shown for the ranges over which the assumption of no diffusion is
appropriate.
AC)[7]
Two models are used in this paper. One is a numerical model and the other is
an analytic simplification. The analytic model is covered separately in (AD). The
model allows the migration and transport of chemical species of the crevice.
The electrochemical boundary conditions which are included are very
sophisticated. Polarization curves are approximated piecewise with linear
segments. Several curves are entered to account for the effects of pH changes
on polarization behavior. A further modification of the polarization with
chemistry is that when the solution becomes supersaturated a salt film is allowed
to precipitate and slow the corrosion rate exponentially. No mention is made of
the concentrated solution thermodynamics shown in other presentations of the
same model[29]. However, the extremely low pH’s shown (pH < -1) strongly
193
suggest that the activity coefficient of H+ is being modified. This model also
predicts intermediate attack. Two effects in this model can slow the dissolution
rate. The first is a potential drop. The second is the salt film mechanism. The
authors state that it is the salt film which stops dissolution at the crevice depths.
It is unclear why the effects of potential, which are already included in their
model, are ignored. No accounting for the chemical effects of cathodic
reactions is made. Charge neutrality is not mentioned.
AD)[7]
A simple analytic model for use in predicting the corrosion inside a crevice is
also presented in this paper. The crevice is assumed to consist of three regions,
a passive region near the mouth, a corroding region, and a salt film limited
region near the base. The corrosion rate is assumed to be constant and high in
the corroding region and effectively zero in the other two. The conductivity and
geometry also vary between regions but are constant within each. This model
allows predictions to be made about the location and depth of attack.
Essentially this formulation is an IR* approach that uses an assumed chemistry
change to stop corrosion rather than further potential drop.
AE)[76]
This is an earlier presentation of the model later used in (AC)[7]. It more
complete than that later description. It elucidates the pH corrections for strong
salts and describes changes in ionic mobilities in concentrated solutions. A
194
unique feature of the model is that temperature effects are also included.
Corrosion rates and transport coefficients change with temperature. The model
is solved by a FD method.
AF)[29]
This report is the most complete representation of the Gartland model used in
(AD)[7] and (AE)[76]. It presents in detail the approximations made and the
experimental data to which the simplifications were compared. The model is a
one-dimensional FD code that allows mass transport by migration and diffusion.
It accounts for the effects of temperature, concentrated solutions and viscosity
on transport coefficients and the piecewise linear approximations made of the
polarization curves provide good fidelity to experimental data. Chemical
hydrolysis and other reactions are accounted for. A minor limitation is that
chemical precipitates are not allowed to block the crevice. A more important
limitation is that the chemical effects of cathodic reactions do not seem to
appear in the governing equations.
AG)[77] A BEM approach is used to find the galvanic corrosion between a carbon and stainless
steel couple in flowing salt water. The model only calculates the potential distribution
between the two plates. The electrochemical boundary conditions are assumed to be
Tafel-like for the dissolution. The cathodic reactions are assumed to be mass transport
limited. The flow conditions are used to modify the cathodic reaction rate. The model
195
predicts that the greatest attack will occur on the carbon steel immediately adjacent to
the stainless steel and that increasing the solution resistivity will exacerbate the attack
there. The model predictions compare favorably with the experimental results.
AH)[10] The authors present an updated version of an earlier model. The model is a onedimensional finite difference representation of a crevice that includes mass transport by
migration and diffusion. Various hydrolysis and chemical reactions are allowed and the
heterogeneous electrochemical reactions can apparently be based on any combination
of potential, temperature and chemistry. Strengths of the model include the handling of
concentrated solutions. This treatment is apparently only intended for use in chemical
equilibria. The transport coefficients seem to be determined by the Nernst-Einstein
relationship given in subsection 2.3.2.2 of this dissertation and scaled for the assumed
viscosity of the solution as was shown in subsection 2.3.2.2.2. Comparisons are shown
between predictions of potential and experimental data. The model also generates
information about the chemical concentration fields inside the occluded region.
AI)[78]
This paper presents an earlier version of the model shown in (AH)[10]. It differs
from the later work in that while the governing equations are presented in a
temporal form but no data are shown in a time-varying format. The author may
be using a time-marching approach to find a steady-state solution. The paper
includes a section on dimensional analysis. The general conclusion is that the
196
condition in the crevice are the result of a competition between generation and
transport. Deeper crevices will thus form “stronger” cells.
AJ)[38]
This work presents a one-dimensional FEM model of chemical reaction and
transport. The generation rate is a constant value and chemical reaction is
allowed. The transport coefficients are a complicated function of the ionic
strength. The model uses a explicit approach to solving the temporal variation.
The authors present a justification for the use of Ohm’s law. The model is
compared to experimental results for the silver in potassium nitrate moving
boundary experiment. A very interesting result are the graphs of concentration
as a function of position. The authors present a sharp delineation between the
Ag+ and K+ species in solution.
AK)[37]
A prelude to the later work of (AJ)[38] was this effort at calculating potential
distributions. The author uses WECAN, a commercially available FEM
program to calculate potential distributions for a two-dimensional axisymmetric
geometry. Since the geometry is axisymmetric the problem is actually only onedimensional in cylindrical coordinates. The author presents an alternate
formulation for the E-I relationship that uses a variable polarization resistance
instead of a polarization curve. The apparent advantage of this formulation is
that it is well suited for use in commercial FEM programs.
197
AL)[44]
The author presents a simple analytic expression to relate the concentrations of
non-reacting species to the potential in solution. The “proof” is that at steadystate the concentrations of the non-reacting species must be the result of
migration and diffusive fluxes that exactly cancel. This assumption gives rise to a
relation that expresses the concentrations of the species in terms of the potential
in solution. This method has been refuted by Psaila-Dombrowski in (BA)[48].
The issue is also discussed in subsection 2.3.4.2.1 of this dissertation.
AM)[23]
This work is an earlier presentation of the model in (AL)[44]. The author uses the
theory to explain the observed crack tip chemistries in 7075 in various halide
solutions.
AN)[79]
The authors studied the dissolution of SS 304 and the Ni-based Alloy 600
wires to investigate pit repassivation. Wires of the two materials were held at
anodic potentials to form salt films and then the potential was stepped down
and the current decay was recorded. The data was modeled by an analytic
solution that only considered diffusion. The model assumed that the dissolved
species could be represented by a single “average” species and that the
conditions at the mouth were exactly those of the bulk. This was coupled with a
potential drop model to find the effective potential at the bottom of the pit. A
final assumption was that the concentration gradient was linear throughout the
198
pit initially. These two tools and the assumption are used to calculate the
corrosion rate at the surface as a function of saturation for several potentiostatic
holds. The correction appears to work well for pits of different depths.
Predicted stable states where the generation rate for a particular saturation was
equal to the transport rate were confirmed experimentally. The model yields
insights into the stabilization of pitting under different conditions.
AO)[30]
The authors present a model for the mass transport of chemical species out of a
pit. Diffusion is the only transport mechanism considered. Migration is assumed
to be negligible because of the salt film that forms with large anodic polarization.
The model used accounts for viscosity changes as a function of concentration.
The model shows that pits which are very strongly polarized (~1V) will become
saturated and diffusion limited.
AP)[45]
The author models the steady state distributions of chemical species inside 1-D
pits of Fe and Zn in borate buffer solution. They plot the resulting
concentrations of chemical species as a function of the product of current
density and depth. In other terms, a more rapidly corroding pit can be
shallower than a more slowly corroding one and still have equivalent conditions
at the base. This work differs from (AQ)[42] and (AR)[36] in that it includes
buffering reactions and considers the effects of migration on mass transport.
199
These extra complicating factors also caused the model to be solved
numerically rather than analytically.
AQ)[42]
The author extends his previous model[36] of crevice corrosion to include the full
hydrolysis of metal cations instead of only the first product. performing the full
hydrolysis calculation allows the regions where the soluble species dominate to
be identified as the ones where pitting is stable. Precipitated species are
assumed to be protective.
AR)[36]
The author presents his model for the stability of different phases based on the
product of current and depth. The model is an analytic one and only considers
diffusion. Only the first hydrolysis product is considered and only anodic
dissolution is assumed to occur inside the pit - no cathodic reactions are
allowed to occur. The model is applicable to a number of divalent metals such
as zinc and iron. The goal of the paper is to help clarify the combinations of pit
size and corrosion rate that are self-stabilizing.
AS)[19]
This paper presents a transient, one-dimensional finite difference model that
uses an implicit method to find the varying chemical concentration and potential
fields. There are two very interesting aspects to the model. The first is the
inclusion of the effects of temperature into the transport coefficients, O2
200
solubility, and even dielectric constant. The second is that the authors justify
their use of a brute force approach to correct the charge imbalances by direct
comparison with the use of the Poison term approach of Watson and
Postlethwaite[9, 28, 60-62]. The authors prefer to simply adjust the chloride
concentration to correct any charge imbalance after a chemical transport step.
This procedure results in a pH which is ~0.25 units higher and a chloride
content which is ~ 2/3 that of the Poisson corrected model. This model points
out the difficulties and advantages of modeling performed on long-term
structures like nuclear waste containers. The advantage is that modeling can
make predictions over a longer time span than is practical to experiment. The
disadvantage is that for this model the time multiplier in the best case was only
1200. The model was simplified by reducing the number of species considered
by eliminating all but chromium hydrolysis and switching to the brute force
approach for charge neutrality. A larger factor in keeping the multiplier high
which was not mentioned by the authors was the small number of nodes used.
This paper was performed with an eleven node system. The computation time
for solving a tridiagonal matrix, like that the authors used, goes as the number of
nodes . A thousand node simulation would require one hundred times the
calculation. For an unbanded matrix the penalty goes as the number of nodes
squared.
201
AT)[80]
In an investigation of the crevice corrosion of 625 in chlorinated seawater the
authors compare the results of two independent models to predict crevice
corrosion. A purely ohmic model is to predict possible potential distributions.
The approach is similar to Fu[37] who also used a variable polarization
resistance instead of a direct E-I relationship to represent material behavior.
The model was implemented using PSpice. The model formulation was really
direct-element FEM as implemented by PSpice. These potential results were
compared to data from Oldfield and Sutton[4] about the minimum crevice gaps
and depths needed to sustain electrolytes of different pH’s. It is not clear from
the paper what passive current density was used to generate the plots of
minimum crevice geometries. The major conclusion of the paper was that
chlorination was required to raise the open circuit potential on the boldly
exposed surface to produce enough potential drop to polarize the material into
its active nose at a deep enough point in the crevice to sustain the required
chemistry.
AU)[81, 82]
The authors present a FEM model for the calculation of galvanic corrosion. It is
a two-dimensional axisymmetric model. In cylindrical coordinates the radius
and height are variable. The governing equations are solved by FEM. The
boundary conditions for the different materials are polynomial expressions. No
chemical changes are allowed or predicted. The author presents a detailed
202
explanation of the governing equations. One reason the model is limited to
galvanostatic type problems is that the canned FEM package used, MARC,
does not allow the boundary conditions to vary as a function of multiple field
values. Several example cases as shown and the results are compared to an
analytic solution.
AV)[83]
The author examines the mass and electrical transport in cracks in Au-Cu alloys
in FeCl3 solutions as an analog for the cracking of brasses. Mass transport is by
diffusion and migration. Generation is by chemically sensitive Tafel-like
expressions and hydrolysis and chemical reactions are allowed. The crack
studied varies between 100 and 200 µm long and varies in height. The author
determines that hydrogen discharge is impossible because there is a lack of
potential drop under these conditions. One problematic aspect of the work is
the statement of the electroneutrality equation. In this paper it is stated as the
sum of the product of zi and the chemical concentration gradient. This does
statement does not on its face assure charge neutrality. For example, a gradient
of 2M Na+ to 1M in parallel with a gradient of 1M Cl- to 0M would meet the
author’s condition but not be charge neutral.
AW)[43]
The authors present a very interesting model that predicts the current transients
and shape change of metastable pits. The model is a 2-D FEM representation
203
of a pit in cylindrical coordinates. Diffusion is the only transport mechanism
considered. Electrochemical generation is considered to scale linearly with the
excess concentration above some threshold. No chemical equilibria or
hydrolysis reactions are considered. The starting geometry is 0.1 µm radius pits
filled with saturated solution. The model predicts concentric rings of
undercutting and repeated transient increases in the pit current. One strength of
the model is that the boundaries are allowed to move as corrosion occurs. It is
not clear from the authors descriptions how the concentration field is adjusted
after each step increase in pit size.
AX)[84] The authors present a simple analytic expression for IR-drop in a crevice to support
their experimental work on 625 in seawater. The approach is IR*-based. This theory
was described in subsection 2.2.2. The model assumes parallel sides, constant
conductivity and constant dissolution flux. Results from the model of Gartland[29] are
also mentioned, but that model is not presented in detail.
AY)[85]
This paper is the numerical companion to an analytic analysis[86]. The authors
use a numerical model to evaluate mass transport and reaction in three crackshaped regions. Convection, diffusion and migration are all considered.
Dissolution reactions are assumed to be of a Tafel form and only the first
hydrolysis reaction is considered. The model is written for any divalent metal.
204
The authors examine the correlation between one- and two-dimensional models
and the relative importance of the various transport processes. For a 0.2 cm
long crack of width 0.02 cm filled with 0.6 M NaCl a diffusion-only, onedimensional crack was found to be an acceptable simplification. These
assumptions were used in the companion paper in an effort to develop analytic
expressions that would more clearly show the interrelationships of the
geometrical and electrochemical variables.
AZ)[86]
The authors present an analytic, one-dimensional model of the changing
conditions inside a crevice that occur when diffusion is the only transport
mechanism. The choice of this dimensionality and transport mechanism was
justified in (AY)[85]. The authors investigate the interplay between the various
factors and revisit the effects of migration on crack tip composition.
BA)[48]
This dissertation presents in detail a one-dimensional finite difference model
with implicit time-stepping that is used to analyze nuclear reactor safe-ends.
These structures are analogs of crevice in that they have large length-todiameter ratios. All three transport mechanisms are considered as are
hydrolysis, chemical reaction and radiolysis. The boundary conditions are Tafellike. In addition to reviewing much of the relevant literature on crevice
modeling, the author presents the governing equations in detail. One notable
205
aspect of the dissertation is the refutation in Appendix B of the commonly used
exponential form for the concentration of non-reacting species[51]. This issue is
redeveloped in subsection 2.3.4.1. The author carefully compares the results of
the numerical model to analytic solutions.
BB)[84]
The authors present an iterative method to find the chemical concentration and
potential fields inside occluded regions. The model considers only migration and
diffusion. The electrochemical generation rate is a constant and hydrolysis is
effectively considered. The dissolution mechanism is changed where
appropriate to consume hydroxyls as well as generate metal ions.
BC)[87]
The authors discuss the possible role of chemical transport in the IR*model for
crevice corrosion. Chemical changes are considered in the context of how they
will affect the Flade potential and the size of the active nose. Hydrolysis
equations are shown as governing equations but their use in the model is not
explained.
BD)[90]
The authors present their model for calculating crevice initiation by the IR*
mechanism. The FEM model used is two dimensional and accounts for both the
interior of the occluded site and the boldly exposed surface. The
electrochemical boundary condition is obtained experimentally. No mention is
206
made of the exact format used to represent the polarization curve in the model.
Several analytic simplifications are included in an appendix to the document to
show the interrelationships between the various physical parameters. The model
results are compared to some experimental work on pure iron in 0.5 M aceticacid 0.5 M sodium acetate and 1 M NH4OH - 1 M NH4NO3. This work is the
most complete representation of the IR* model used by Pickering.
BE)[47]
The authors present some analytic solutions for the concentration and potential
inside cracks and crevices. The authors show plots of concentration and
potential as a function of position for various current densities. The major
assumptions used are the crack has parallel sides, transport occurs only by
migration and diffusion and the electrochemical reaction is HER. The authors
show that dissolution can occur inside a crack that is being cathodically
polarized on the boldly exposed surface.
Summary
This chapter has provided the basic information needed to model and understand the
modeling of crevice corrosion. A basic grounding in electrochemistry led immediately into a
discussion of the two major competing theories on the initiation of crevice corrosion - the CCS
and IR* models. Computer simulations of these theories depend on calculating the chemical
concentration and electrical fields within an occluded region. This can be done by building from
207
the flux equations through the mass conservation equation for chemical species and by an
application of Ohm’s law for the electrical field. Each term in these governing equations carries
along its own set of assumptions and simplifications. After expanding on the issues associated
with the terms of the governing equations the chapter concluded by reviewing the previous
work which has been done in modeling crevice corrosion. The next chapter will address the
model which was developed for this dissertation.
208
Chapter 3: Definition of the CREVICER Model
One of the goals of this thesis was to develop a general, adaptable model that could
represent the two processes which are common to all forms of crevice corrosion - generation
and transport. By performing the modeling in this fashion, which stresses the commonalities
among different systems of crevice corrosion, it is possible to greatly shorten the development
time of models that are specific to a particular system. This chapter will discuss the rationale for
attempting to model the corrosion process for a “general” crevice, the precepts of objectoriented design (OOD) which force the code to be written in a modular fashion and enable it to
operate on the general case, and give an overview of the finite element method (FEM) which is
used to solve the required mathematical equations. The last section of the chapter will discuss
the specifics of the code developed in this thesis.
3.1 General Aspects of Crevice Corrosion
In order to make a code which is suitable to model crevice corrosion for a wide variety
of material/environment systems it is necessary to examine the factors which all instances of
crevice corrosion have in common. At the broadest level, each instance of crevice corrosion is
governed by generation and transport. The reaction rate at any interface is determined by the
local conditions. The local chemistry, the sum of all the quantities of all the species present
209
(Ci,...,Cj), the local electrochemical potential, E, and the temperature and absolute pressure (T
and P) are sufficient to determine the reaction rate on any given interface. Understanding
crevice corrosion is a matter of predicting how the local conditions, principally chemistry and
potential, evolve in space and time and thus change the corrosion rate.
At steady-state, the generation of chemical species and electrical charge at an interface
is exactly balanced by their transport away from the interface. There are two methods of
transporting chemical species, flux due to a gradient in electrochemical potential and flux due to
physical flow of solution. The former is often broken into diffusion, flux due to an activity
gradient, and migration, flux due to the interaction of charged ions with an electrical field. Flux
due to the physical flow of solution is called convection. Electrical flux is always carried by ions
in aqueous solution. It can be visualized by treating the charge flow as current through a medium
of varying electrical resistivity.
In an occluded region, the crevice former retards transport and allows the reaction
products from the interface to accumulate. The former acts by creating a long, thin path over
which species and charge must move. For the transport of a fixed quantity of ions, a reduction
in the cross-sectional area available for transport increases the required flux proportionately.
Additionally, since the fluxes of both chemical species and electrical charge are determined by
the gradients of the appropriate field variables, activity and electrostatic potential, an increase in
path length causes a proportionately larger total change between one end of the path and the
other. Another retarding effect of a crevice on transport is that drag from the crevice walls
dramatically reduces convective flow as the crevice narrows.
210
These change in local conditions caused by the retarding effect of the crevice former on
transport affect the reaction rate, and if the entire process spirals out of control, crevice
corrosion occurs. The general description of the preceding two paragraphs holds for all types
of crevice corrosion. It is only the specific parameters such as the transport coefficients
diffusivity and mobility (Di and ui), reaction rate as a function of chemistry and potential and any
homogeneous chemical reactions such as hydrolysis or precipitation that make any
material/environment combination unique.
A general model for crevice corrosion needs to solve the following two equations at
every point inside the crevice:
MC i
Mt
MDel
Mt
' & L̃ @ J˜i(C i...C j,T,P) % Ri(E,C i...C j,T,P)
(155)
' & L̃ @ J˜el(C i...C j,T,P) % Rel(E,C i...C j,T,P)
(156)
Solution of these equations gives the concentration and electrostatic potential fields from
which the electrochemical reaction rates can be generated. The generality for such a model
comes from its ability to use different functional dependencies for the fluxes, ( J˜i , J˜el ), and
generation rates, (Ri, Rel), for different materials. For example, the passive films on stainless
steels are relatively unaffected by high levels of caustic whereas aluminum alloys begin to
dissolve rapidly in extremely alkaline environments.
All types of crevice corrosion share the need to solve equations 155 and 156 and only
differ in the exact effects of chemistry, potential, temperature and pressure on corrosion rate,
211
homogeneous chemical reactions, and transport. The problem is one of how to represent the
underlying equations and data in a fashion which allows the specifics to be readily changed
without affecting the rest of the code. One approach for programming such a model is Object
Oriented Design (OOD).
3.2 Object Oriented Design
One goal of this thesis was to create a model which was flexible enough to handle the
variety conditions which must be expressed in simulating crevice corrosion and was extendable
to include future modeling efforts. To accomplish this, it was decided to use Object Oriented
Design (OOD). OOD is a programming methodology which is characterized by two main
attributes: encapsulation and inheritance.[91]
An object is piece of code meant to represent a physical entity or idea. It includes all of
the data and all of the methods that operate on that data. An example, shown in Figure 3.2(a)
would be an object representing a child’s ball. ‘Mass’ and ‘velocity’ might be data properties
of the object. ‘Accelerate’ would be a method property, included in the ‘ball’ object, which
uses the ‘mass’ property and the ‘force’ and ‘time’ inputs to change the ‘velocity’ property.
Encapsulation is accomplished by hiding the internal functionality of the object away
from other objects or code. Objects interact with each other only in defined ways, and the
necessary information is passed overtly through formal calls rather than accessed directly from
one object to another. This approach allows individual objects to be modified without causing
212
unforeseen errors in other parts of the program. Continuing the ‘ball’ example, the initial form
of the ‘ball’ object might use Newton’s First Law to calculate velocity changes in the
‘accelerate’ method. If the object is properly encapsulated, rewriting the ‘accelerate’ method
to account for relativistic effects will correctly and uniformly affect the entire program. Figure
3.2(b) shows this more clearly. The encapsulated code can be changed and verified quickly
and with little chance of introducing errors, while the non-encapsulated code is more difficult to
modify and runs significant risks of introducing new errors elsewhere in the code when it is
changed.
Inheritance allows an object to inherit the properties of a parent class. Additional
properties can be added or inherited ones overridden. This characteristic is useful because it
allows the reuse of code. An example drawn from this dissertation is the TASpecies class and
its children classes, such as TClm as shown in Figure 3.2(c). For any chemical species, we are
interested in the same types of properties. Physical properties such as charge number, z, and
transport properties such as mobility, u, and diffusivity, D must be defined for all chemical
species. Inheritance allows a derived property, such as D, to be easily and accurately applied
to all child classes derived from TASpecies. Figure 3.2(c) shows the default behavior of
TASpecies as using the Nernst-Einstein equation to calculate D from u and temperature, T. A
child class, such as TClm, must give new values for identifying physical traits such as z and u,
but automatically inherits the method of calculating D from u. This property saves code, but
more importantly inheritance makes it easier to debug the overall code, since the method of
calculating D must only be verified at one point rather than many. It should be pointed out that
213
this inheritance in no way limits the ability of a child class to redefine any inherited property. If it
were desirable to redefine D for a particular child class it could be done.
Encapsulation and inheritance allow the type of model suggested in section 3.1 to be
created. Figure 3.2(d) is a high level representation of the code developed in this project for the
modeling of crevice systems. Conceptually, there are four areas that have to be addressed. By
encapsulating them, each can be modified or improved without affecting the others. The central
elements are the forms of the equations governing the accumulation of electrical charge and
chemical species given in section 3.1. Two separate types of information, specific to each
crevice system, are required to produce the coefficients for those equations. The first is the
physical geometry and construction of the crevice. This information defines how deep and
narrow the modeled crevice is as well as the metal it is constructed of and the electrolyte which
fills it. The second type of information concerns how materials and chemical species act under
different conditions. Corrosion rates at different potentials and the effects of ionic strength on
diffusion coefficients are examples. Finally, the last important conceptual area is the
mathematical method which solves the specific equations for the chemical and electrical fields
inside the crevice. In the program CREVICER which was developed for this dissertation the
finite element method (FEM) was used for these calculations and a short discussion of the
method is included in the next section.
216
3.3 Finite Element Method
Many possible methods can be used to solve differential equations. The most accurate
techniques are analytical ones. They produce a solution in the form of an equation which can be
solved at every point inside the parameter space to give the exact solution. Unfortunately,
analytic solutions are only available for a very limited number of geometries and boundary
conditions. Typically the cases for which they are available are very simple and not
representative of “real-world” crevices, though experimental cases have been constructed to fit
the available analytic solutions.[7, 30, 79] Numerical approaches are more general and can be
applied to any well-defined geometry. Numerical solutions use computer algorithms to produce
results that are approximately correct at a finite number of points. However, for many types of
problems, numerical solutions are the only possible ones and they dominate in the fields of fluid
flow, heat transfer, and stress analysis.
There are numerous methodologies for arriving at numerical solutions to differential
equations as was discussed in subsection 2.3.4. Three principal ones are Finite Difference
(FD), the Boundary Element Method (BEM) and the Finite Element Method (FEM)[50]. Each
has advantages and disadvantages. FD is easy to code, but is computationally inefficient. BEM
and FEM are both more complicated to code initially, but use computational resources more
efficiently once implemented. BEM is more suited to solving differential equations over areas
that have a low surface to volume ratio, while FEM better applied to volumes with large surface
to volume ratios[50]. For this thesis, FEM was the mathematical technique used to solve the
217
differential equations governing the transfer of chemical and electrical flux. The method allows
the grid to be adapted to maximize the resolution in areas of high gradients. The basic reference
text used was Allaire[51].
Another important issue in solving the relevant differential equations is the dimensionality
of the mathematical solution. The physical situation being modeled has three spatial dimensions
and also varies in time. Limitations on the amount of computational power available constrain
the number of dimensions that can be practically modeled, since all numerical methods depend
on solving matrices of equations. The size of these matrices is varies linearly with number of
points or nodes where the equation is solved. The number of computations, and thus the time,
required to solves the matrix varies as the square of the number of nodes - in O notation solving
matrices is O(n2). The number of nodes depends on r, the resolution desired along an axis, and
the dimensionality. In one-dimensional problems the resolution directly determines the number
of nodes. If the equation is to be solved with a resolution of ten points along an axis, then only
ten nodes are required. For two- and three- dimensional problems, however, the number of
nodes required scales as the square and cube respectively of the resolution. The amount of
time required to solve a matrix for a fixed resolution varies as r2 for one-dimension, r4 for two
dimensions, and r6 for three dimensions. For this thesis, the solution is performed for two
independent spatial dimensions and the temporal dimension and allowances are made to
account for the effect of charges in a dependent third spatial dimension. This compromise
choice of dimensionality provides a good match to the physical shapes of crevices, which are
by definition much larger in two dimensions than they are in the third and also allows a higher r
218
to be solved in the available time than if three independent spatial dimensions were used. The
method used for reflecting dependent changes in the third dimension allows CREVICER to
reflect gross changes in that dimension, such as an opening crack, but does not permit the
effects of surface roughness to be included.
The following subsections address the implementation of FEM for the spatial and
temporal dimensions and the limitations of the method for both.
3.3.1 Spatial FEM
The general steady-state second order partial differential equation which FEM has to
solve is represented in Equation 157 below.
M
MM
M 1
MM
%
Kxy(x,y)
K x(x,y)
Mx
Mx
Mx 2
My
%
M 1
MM
M
MM
K y(x,y)
Kyx(x,y)
%
My 2
Mx
My
My
% Mx(x,y)
(157)
MM
MM
% My(x,y)
Mx
My
% P(x,y)M % Q(x,y) ' 0
Where:
φ is the general field variable
x and y are the independent spatial dimensions
Kx, Ky, Kxy, and Kyx are the spatially-varying coefficients for the
second-order terms
219
Mx and My are the spatially-varying first-order terms
P is the spatially-varying scaling factor for the field variable
Q is a spatially-varying generation term
In CREVICER the field variable is either potential or the chemical concentration of
some species. The values of the coefficients vary throughout the crevice and depend on which
field variable is being solved. The derivation of the coefficients from physical parameters was
shown in subsections 2.3.1.1 and 2.3.1.4. Finally, this steady-state representation is usually
replaced by the time-dependent formulation shown later in this section.
Defining the differential equation is not sufficient to solve it as the appropriate boundary
conditions must also be supplied. The general form for a boundary condition is given below.
K x(x,y)
MM
MM
% K y(x,y)
% "(x,y)M % $(x,y) ' 0
Mx
My
(158)
Where:
Kx and Ky are the spatially-varying coefficients for the first-order terms
α is the scaling factor for the field variable
β is the constant term
Two aspects of the boundary can be defined: the value of the field variable and its
derivative. Depending on the values of the coefficients, a boundary condition can be classified
into one of three categories shown in Table 7. In the first (or Dirichlet) type of boundary
220
condition, the value is fixed and the derivative is free. In the second (or Neumann) type, the
derivative of the field variable is defined at the boundary, but the actual value is free. In the
third (or Robin) type, neither the value nor the derivative is set, rather their relationship is
defined. Any boundary can have only one type of boundary condition applied to it; the value
and the derivative of the field variable cannot be set simultaneously on any boundary.
Equation
Type
"(x,y)M % $(x,y) ' 0
K x(x,y)
K x(x,y)
MM
MM
% K y(x,y)
% $(x,y) ' 0
Mx
My
MN
MN
% K y(x,y)
% "(x,y)N % $(x,y) ' 0
Mx
My
First (Dirichlet)
Second(Neumann)
Third(Robin)
Table 7. Boundary conditions for second order differential equations can be classed in three
ways
In FEM the volume over which the differential equation is to be solved is broken into
nodes and elements. A node is a point in the volume, an element is the shape which connects
sets of nodes. The value of the differential equation is found at each node by solving a set
simultaneous equations. That matrix of equations is created by applying the differential equation
221
over all of the elements. A sample element is illustrated in Figure 3.3.1(a) where a single linear
simplex element is shown connecting three nodes. This code uses Galerkin’s method on these
simplex elements arrive at values for the nodes. This method forces the sum of the differences
between the FEM approximate solution and the true solution to be equal to zero. This method
is discussed extensively in Allaire’s text on FEM[51]. Although reiterating Allaire’s derivation of
FEM would be repetitive, some discussion of the limitations of spatial FEM is appropriate.
One point to note is that while Allaire’s derivation of FEM allows for the coeffecients,
Kx(x,y), Ky(x,y), etc. to vary spatially, they are held constant within each element. There is
some dispute about the validity of this discretization and concern that it fails to fully account for
the effects of the changes in the coefficients.
3.3.1.1 Limitations of Spatial FEM
The FEM produces results which approximate the true solution to the differential
equation at a finite number of points. As with any discretization process, the fineness of the
intervals affects the accuracy of the result. For a given shape, the more nodes that are used, the
more accurate the final result. Unfortunately, the time required to solve a mesh is proportional
to the square of the number of nodes. In order to halve the separation between nodes in a twodimensional shape, four times as many nodes will be required and the time to perform the
calculation will go up by a factor of sixteen!
Another deviation between FEM and the true solution is the shape of the solution
between the nodes. A FEM solution applies the shape function define the field variables
222
between the nodes. For a solver such as CREVICER which uses linear simplex elements, if the
results were plotted in three dimensions using the field variable as the third, the surface would
be composed of triangular facets. Only the value is continuous across the surface, the first and
all higher order derivatives are discontinuous. Obviously such a surface differs from the true
solution. Other shape functions could give more accurate representations of the spaces
between nodes. This increased accuracy would require a more complicated formulation and
slightly longer running time.
A final error that can occur in spatial FEM is numerical oscillations caused by Peclet
instability[51]. This problem occurs when the first order terms are large compared to the second
order terms. In fluid mechanics, Peclet instability occurs when the convective terms are large
compared to the diffusive terms. This relationship is shown in the equation below where the
numerical approximations to the first and second order terms are made and divided to yield Pe,
the Peclet number. The same calculation has to be made in the y direction. As long as both
Peclet numbers are less than two, no numerical oscillations will occur spatially[51].
MM
Mx
M
MM
Kx
Mx
Mx
Mx
–
Mx
Kx
)M
M ()x)
)x
' x
' Pe
)M
Kx
(159)
()x)2
Where:
∆x
is the discretization difference between adjacent points
in the x direction [m]
223
Pe
is the Peclet number
If numerical oscillations do occur, the resulting FEM solution will differ markedly and
unpredictably from the true solution. Two recourses are available in such situations. One is to
refine the mesh, thus decreasing ∆x and ∆y and reducing the Peclet number. This is the only
method currently available in CREVICER. The second method is a numerical technique called
upwinding[29]. While spatial FEM provides a good basis for the discussion of the technique and
some of the problems that can be encountered with it, CREVICER rarely uses steady-state
FEM. Instead, the temporal forms of the equations are employed, to model how variations
occur with time inside an occluded site.
3.3.2 Temporal FEM
While steady-state modeling of a crevice can provide some information about the
endpoints of crevice corrosion, many central questions require a time-based approach. For
instance, the time required for the pH to drop low enough to initiate corrosion for a particular
geometry may be an important parameter in the design of a structure. The canonical equation
for a general two-dimensional second order partial differential equation that varies in time is
shown
224
M
MM
M 1
MM
%
Kxy(x,y)
K x(x,y)
Mx
Mx
Mx 2
My
%
M 1
MM
M
MM
Kyx(x,y)
%
K y(x,y)
My 2
Mx
My
My
MM
MM
% My(x,y)
% Mx(x,y)
Mx
My
% P(x,y)M % Q(x,y) ' K t
(160)
MM
Mt
Where:
Kt
is the scaling factor for the rate of change of the field
variable
Equation 160 is little changed from Equation 157. Essentially, the steady-state form
represented by Equation 157 is reached when the rate of change of the field variable is zero.
Equation 160 is solved in a fashion similar to purely spatial FEM, except that instead of
solving for the distribution of the field variable that makes the spatial terms sum to zero, the
existing distribution is used to calculate the rate of change with time. That rate of change is then
applied for a small period of time (∆t) and the calculations are repeated from the resulting
distribution. If the spatial terms are calculated for the next time period based on the present
time interval, then the method is fully explicit. If instead the distribution for each point during the
next time period is expressed in terms of its neighbors values at the next time period the method
is said to be fully implicit. This was discussed in subsection 2.3.4.2.1. CREVICER uses a
weighted implicit-explicit technique from Allaire[51]. This approach is illustrated in the following
series of equations. This case solves a time-dependent, parabolic differential equation instead
225
of the full canonical equation for simplicity, but the principles are the same. The equation to be
solved for this illustration is time-dependent diffusion:
M
MM
Kx
Mx
Mx
& Kt
MM
' 0
Mt
(161)
In the weighted explicit-implicit approach a weighting factor, θ which varies from 0 to
1, is used to vary the contributions of the explicit and implicit terms as shown below.
2
M
MMm %1
Kx
Mx
Mx
% (1&2)
M
MMm
Kx
Mx
Mx
' Kt
MM
Mt
(162)
Where:
φm
is the general field variable at time t = m (explicit terms)
φm+1
is the general field variable at time t = m +1 (implicit
terms)
The following table shows how different combinations of θ and Kt can be combined to
run CREVICER in different modes.
226
τ
Kt
θ=1
Kt <> 0
Fully implicit
θ=0
Kt <> 0
Fully explicit
θ = 0.5
Kt <> 0
Crank-Nicholson
θ=1
Kt = 0
Steady state
FEM mode
Table 8. τ and Kt can be combined to run CREVICER in a time dependent way that varies
from fully explicit to fully implicit, or to force it to make steady state calculations.
Typically, CREVICER is run in Crank-Nicolson mode which is a combination of the
explicit and implicit techniques.. This reduces some of the problems with stability that are
discussed in the next section.
228
3.3.2.1 Problems with Temporal FEM
Numerical instability can occur in explicit temporal FEM and is related to the Courant
number, r(e). The Courant number is defined by the following equation (16.15 taken from
Allaire[51]).
r (e) '
K x)t
(163)
()x)2 K t
Where:
r(e)
is the Courant number
Depending on the value of r(e) the solution may oscillate and/or fail to converge to the
correct final answer.
Value of r(e)
Result
0 < r(e) < 1/4
Non-oscillatory, stable
1/4 < r(e) < 1/ 2
Oscillatory, stable
1 /2 < r(e)
Unstable
Table 9. r(e) can have various effects on an explicit solution
The result of this limitation is that fine spatial grids require small time steps in the
temporal solution to maintain stability. This solution has negative consequences on the solution
time, because as was discussed in subsection 3.3.1.1. on the limitations of spatial FEM, fine
grids already require more computational time. Halving the spacing between the nodes, which
229
already caused a factor sixteen increase in time per matrix solution, now requires four time
steps to be performed where one would have sufficed before. The total penalty for halving the
separation is now a factor of sixty-four.
Fully implicit solutions are always stable, but may oscillate. Crank-Nicolson, which
weights the explicit and implicit contributions equally is a good compromise that converges well
and avoids some of the stability problems encountered in a fully explicit technique. Neither
technique allows large time steps to be used with impunity, since large Courant numbers can still
cause oscillations even though the final answer may converge. This brief summary of FEM has
only addressed the relevant equations in canonical form. For use in crevice modeling the
various coefficients (Kx, Mx, etc. ) must be represented in terms of physical constants. This
connection is made in the next section.
3.4 Applications of FEM to Crevice Corrosion
CREVICER uses FEM to model both electrical potential and chemical concentration
fields. Each case can be represented in the canonical form of Equation 160 by using the relation
that the time rate of change is the negative of the divergence of the appropriate flux plus the rate
of generation. This is done first for electrical charge. The electrical flux is equal to the
conductivity times the gradient of electrostatic potential, as shown in Equation 164.
J˜el ' 6L̃N
(164)
230
Where:
J˜el
is the electrical flux [C/m2-s]
κ
is the conductivity [(Ω-m)-1]
L̃Ns
is the gradient of electrostatic potential in solution [V/m]
The rate of accumulation of charge at each point is found by taking the divergence of
this flux and adding the rate of generation of electrical charge. Since charge is only generated at
electrochemical interfaces, the rate of generation is the product of the reacting area and the rate
divided by the volume of interest.
MDel
Mt
Jel A(x,y)
2
' &6(x,y) L̃ N %
h(x,y)A(x,y)
(165)
Where:
Del
is the charge density [C/m3]
h(x,y) is height at point (x,y) [m]
A
is area [m2]
By canceling terms and multiplying through by h, Equation 165 is placed in the proper
form for solution by FEM. Table 10 shows the correspondence between the terms for FEM
and the physical parameters of the crevice.
231
h(x,y)
MQ
2
' &6 h(x,y) L̃ N % J˜el(x,y)
Mt
FEM Coefficient
Physical Parameters
Kt
h(x,y)
Kx = Ky
- κ(x,y) h(x,y)
Mx = My
0
P
0
Q
Jel(x,y)
(166)
Table 10. The coefficients for use in FEM can be related to physical parameters for use in
calculating electrostatic potential fields.
A similar analysis can be performed for the case of chemical concentration fields. The
starting point is the flux equation using the gradient of concentration for diffusivity and ignoring
convection for the reasons discussed in section 2.3.1.
J˜i ' & Di L̃C i & zi F u i C i L̃N
(167)
The rate of accumulation of chemical species at each point is found by taking the
divergence of this flux and adding the rate of generation of chemical species. Because charge is
only generated at electrochemical interfaces, the rate of generation is the product of the reacting
area and the rate divided by the volume of interest.
232
MC i
Mt
2
' Di(x,y) L̃ C i % zi F u i(x,y) L̃N L̃C i %
J˜i(x,y)A(x,y)
A(x,y)h(x,y)
(168)
By canceling terms and multiplying through by h, Equation 168 is placed in the proper form for
solution by FEM.
h(x,y)
MC i
Mt
2
' h(x,y)Di(x,y) L̃ C i % h(x,y)zi F ui(x,y) L̃N L̃C i % Ji(x,y)
(169)
Table 11 shows the correspondence between the terms for FEM and the physical
parameters of the crevice.
FEM Coefficient
Physical Parameters
Kt
h
Kx = Ky
h(x,y)Di(x,y)
Mx = My
h(x,y)ziFui(x,y) grad tilde phi
P
0
Q
Ji(x,y)
Table 11. The coefficients for use in FEM can be related to physical parameters for use in
calculating chemical concentration fields.
3.5 Program Structure and Simplifications used in CREVICER
CREVICER is a two-dimensional FEM code for the solution of time-varying partial
233
differential equations used in modeling the chemical concentration and potential fields of
occluded regions. This section will address the basic structure of the program and the
simplifications used within it. Any text marked (Bold) refers to a data structure or procedure in
CREVICER and is included to more directly tie this subsection to the actual code. Any item
with a “T” prefix is an object.
3.5.1 Program structure
Figure 3.5.1(a) shows the major information flows within CREVICER. The diagram is
complemented by Figure 3.5.1(b) which illustrates the objects and their inter-relationships. The
Setup procedure uses the input node and element files to create the two data structures needed
to define a crevice: the nodes and elements arrays. The nodes array contains all of the nodes in
the crevice. Each node (NodeInfo) consists of an x,y,z position for the node, the conditions at
the current time step (chem) and the conditions at the previous time step (oldchem). The z
coordinate is not used by CREVICER, but is included for future functionality. The elements
array stores all of the elements that form the crevice. Each element (TSolutionVolume) lists the
i,j and k nodes that define the element, the height (h) of the element, and the material of which it
is constructed (mat), and the materials along each of the edges if needed (ijmat, ikmat,
jkmat).
The program then consists of two loops: one for activities that happen within a time
period, and another for the series of time periods being modeled. The inner loop includes an
additional iterative step of variable length that is used to find the potential field.
234
The inner loop finds the chemical concentration or electrical field at the next time period
for each field variable (concentration or potential) in turn. In order to find m field variables at n
nodes the loops solves an n by n matrix m times. This approach is faster than solving an mn by
mn matrix once by a factor of 1/m. The conditions of charge neutrality and chemical equilibrium
are enforced after the transport of all the species for each time period.
The matrix of equations is developed using the FEM equations presented in subsection
2.3.4.2.3. The mode of the solver, steady-state vs explicit, implicit or mixed is controlled by Kt,
θ (theta) and ∆t (time) as was described in section 3.3.2. The matrix is constructed elementby-element. Three equations are generated by each element, one for each node. The entries
into the matrix depend on the x,y positions of the nodes, the values of the field variable (in
oldchem), and h.
Equations for chemical species also depend on zi, Di, and ui. These parameters are
encapsulated in TAllSpecies, a container class for all possible species. This object in turn
accesses the values for a particular species through the particular TASpecies which defines it.
The heterogeneous reaction rates are queried from the element’s mat (which is a TMaterial).
A material sums the reaction rates from the various TReaction’s that are included in it. At a
minimum a TMaterial should have one anodic and one cathodic TReaction. This separation
of the reactions on a surface into different groups not only provides better fidelity to the physical
situation, it also allows chemical fluxes even when the electrical flux is small or zero. This ability
is vital if the crevice will be depolarized to Ecorr. Information on E, Ci,...,Cj, T and P is passed to
each of the objects when a request is made for any parameter. The end of this subsection lists
235
which of the parameters are used, the unused parameters are passed for future use.
The procedure for electrical transport is similar. The transport parameters are replaced
by κ (kappa) which is calculated based on the local chem. Generation rates are found from the
appropriate TMaterial which in turn uses the TReaction. One difference is that because
electrical processes equilibrate much more rapidly than chemical ones an additional loop is
performed only on the electrical parameter to find the proper potential distribution for each time
step.
Chemical and charge equilibria are enforced once all the transport steps have occurred.
These routines are hard-coded as procedures into TAllspecies. Once equilibrium is restored
output occurs and the new chem for each node becomes its new oldchem and the process
restarts.
Figure 3.5.1(b) is a view of the code that emphasizes objects. The Main() routine
initializes the Elements and the Nodes with the geometry (Elements and Nodes) as well as the
boundary and initial conditions. Elements is an array of TSolutionVolume. Nodes is an array
of NodeInfos. Each Nodeinfo contain two TChemistrys one for the current and one for the
next time period. The Main() procedure also controls the use of Solve(). Solve() operates on
each species in turn. It builds an array of simultaneous equations and solves it to find the value
of the field variables at the next time step.
Solve() requests from each TSolutionVolume in Elements the values of the
coefficients in the canonical equation (Kx, Ky, Mx, My, P and Q). These parameters are
generated from the appropriate transport coefficients and generation rates.
236
TAllSpecies is a container class for TASpecies. It passes through information on
conditions such as E, Ci ... Cj, T and P to the correct TASpecies and receives and returns the
appropriate parameter, such as D, u or z.
Each TMaterial performs a similar function for the TReactions it contains. The local
conditions are passed to each TReaction and the resulting fluxes of chemical species and
electrical current (Ji and Jel) are summed and returned.
More information about the structure of the code can be obtained by reading the
comments in the program itself. The individual files are listed in Appendices A - S. As a further
aid the next subsection will address all the simplifications used in the code.
239
3.5.2 Simplifications in CREVICER
Several types of simplifications have been made in CREVICER. The physical geometry
of a crevice is approximated, the governing equations are simplified and several of the terms
ignore the full functional dependency on the local conditions. The format used in this subsection
is name of the concept or term being simplified, the relevant sections of this dissertation where
the problem is discussed and the approach taken towards to problem in CREVICER.
3.5.2.1 Governing Equations
Convection:
Relevant Sections: 2.3.1.1.1
Approach Used: CREVICER ignores convection. Small crevice gaps are unlikely to
experience much flow unless a driving mechanism like crack pumping in
corrosion fatigue is present.
Diffusion:
Relevant Sections: 2.3.1.1.2, 2.3.2.1
Approach Used: CREVICER calculates diffusion based on the gradient of
concentration rather than the gradient of activity. This is a valid assumption if the
gradient of the activity coefficient with respect to chemistry is zero. D is
determined separately for each element according to the method described in
240
3.5.2.2.
Migration:
Relevant Sections: 2.3.1.1.3
Approach Used: Migration is calculated based on φs, the potential in solution. It
ignores the diffusion potential. u is determined separately for each element
according to the method described in 3.5.2.2.
Potential:
Relevant Sections: 2.3.1.4, 2.3.1.5, 2.3.1.6, 2.3.2.4
Approach Used: The potential field is found from Ohm’s law. It ignores the diffusion
potential. κ is determined separately for each element according to the method
described in 3.5.2.2.
3.5.2.2 Terms
z:
Relevant Sections: None
Approach Used: z is a constant for each chemical species and is stored in the
appropriate TASpecies. This is not an approximation.
241
u:
Relevant Sections: 2.3.2.2, 2.3.3.2.1
Approach Used: The mobility for each species used in CREVICER is a constant
stored in the appropriate TASpecies. E, Ci,...,Cj, T and P are passed when u
is called but no accounting is made for the effects of those variables or the
derived effects of viscosity and tortuousity.
D:
Relevant Sections: 2.3.2.2, 2.3.3.2.1
Approach Used: The diffusivity for each species used in CREVICER is calculated
from the Nernst-Einstein equation. Ie, D is proportionate to the absolute
temperature. No accounting is made for the effects of P the chemistry or the
derived effects of viscosity and tortuousity.
a:
Relevant Sections: 2.1.2.1, 2.3.1.1.2, 2.3.2.1
Approach Used: The single ion activity is not used in CREVICER. In the future it
could be used for diffusive flux or to modify the transport coefficients. It is here
that concentrated solution effects should eventually be accounted for. The
function call passes E, Ci,...,Cj, T and P.
242
T:
Relevant Sections: 2.3.3.1.1
Approach Used: Temperature is only used in CREVICER in calculating D from u
according to the Nernst-Einstein relationship. It is consistently exchanged
between objects to allow for future functionality.
P:
Relevant Sections: 2.3.3.1.2
Approach Used: Pressure is not used in CREVICER. It is consistently exchanged
between objects to allow for future functionality.
3.5.2.3 Heterogeneous and Homogeneous Reactions
Jel:
Relevant Sections: 2.1.2, 2.1.3, 2.1.4. 2.3.3.2.3, 2.3.3.3.4
Approach Used: Electrical flux is determined in CREVICER by summing the electrical
fluxes from each of the component reactions on a TMaterial. This summation
is done with the convention that anodic currents are positive and cathodic ones
negative. The function call passes E, Ci,...,Cj, T and P. Some reactions in
CREVICER use Ci to adjust the polarization curve. The polarization curve itself
can be programed in any functional format. CREVICER has employed
constant, Tafel and polynomial representations for the polarization curve.
243
Ji:
Relevant Sections: 2.1.2, 2.1.3, 2.1.4, 2.3.2.3.1, 2.3.3.3.4
Approach Used: Chemical flux is determined in CREVICER by summing the fluxes
from each of the component reactions on a TMaterial. This summation is done
with the convention that dissolution reactions are positive and plating ones
negative. The function call passes E, Ci,...,Cj, T and P. Some reactions in
CREVICER use Ci to adjust the polarization curve. The polarization curve itself
can be programmed in any functional format. CREVICER has employed
constant, Tafel and polynomial representations for the polarization curve.
Homogeneous Chemical Reactions:
Relevant Sections: 2.3.2.3.2, 2.3.3.2.4
Approach Used: Homogeneous chemical reactions including hydrolysis can be
programmed into CREVICER. Chromium hydrolysis is already implemented. It
uses only the mononuclear species and assumes that hydrolysis is fast
compared to transport.
3.5.2.4 Derived Parameters
pH:
Relevant Sections: None
244
Approach Used: CREVICER reports the pH of a chemistry for use in chemically
sensitive polarization curves or for output purposes. The code assumes the
dilute solution approximation and returns the negative of the log of the H+
concentration.
I:
Relevant Sections: 2.3.2.3.2.1
Approach Used: CREVICER reports the ionic strength of a chemistry for use in
chemically sensitive polarization curves or for output purposes. The code uses
Equation 83 given in 2.3.2.3.2.1.
η:
Relevant Sections: 2.3.2.2.2
Approach Used: Viscosity is not used in CREVICER, nor is it even a defined
parameter. If a general method of calculating the viscosity were developed it
would have to be implemented as a new object.
Tortuousity:
Relevant Sections: 2.3.2.2.3
Approach Used: Tortuousity caused by precipitation is not used in CREVICER, nor is
245
it even a defined parameter. If a general method of calculating the porosity were
developed it would have to be implemented as a new object.
This section has covered the general structure needed by code that models crevice
corrosion, the suitability of OOD for use in such a code, the basis and limitations of FEM for
solving such a model and presented how the physical parameters are translated into the form
needed for solution by FEM. It concludes by presenting the structure and approximations of the
CREVICER code. The next chapter will apply the CREVICER code to several test cases in
order to verify the code and present some of its capabilities.
246
Chapter 4: Model Verification and Use
OVERVIEW
An integral step in the development of any model is the testing and verification
procedure. In this chapter the CREVICER code is tested against known analytic and numerical
solutions. The FEM code that acts as the numerical engine for CREVICER is a solution solver
for second-order partial differential equations. Such equations can be represented in the form
of Equation 160 from subsection 3.3.2 below.
M
MN
M 1
MN
K x(x,y)
%
Kxy(x,y)
Mx
Mx
Mx 2
My
%
M 1
MN
M
MN
Kyx(x,y)
%
K y(x,y)
My 2
Mx
My
My
MN
MN
% Mx(x,y)
% My(x,y)
Mx
My
% P(x,y)N % Q(x,y) & K t
(160)
MN
' 0
Mt
Section 4.1 of this chapter verifies the ability of CREVICER to solve the different forms
of this differential equation that are relevant to crevice corrosion. The three subsections test
and verify the code’s ability to find the correct solutions for steady-state potential distributions,
steady-state chemical transport, and time-transient chemical transport. Each subsection
progresses from one-dimensional cases with simple boundary conditions to greater
dimensionality and more complicated boundary conditions.
247
Section 4.2 discusses the known limitations of the code. The mathematical methods it
uses are only stable over a limited range of conditions, restrictions have to be made to the
incremental steps in time and space used in each model to prevent oscillations.
4.1 Comparisons of CREVICER to Analytic Solutions
Equation 160 in the introduction to this chapter is the general form for a second-order
partial differential equation. In modeling crevice corrosion, this type of equation is used in two
basic ways. To calculate the potential distributions in a crevice only the
second and zeroeth order terms are present, i.e., no first-order terms are needed. This was
shown in section 2.3.1.4. Potential distributions reach equilibrium on a timescale much shorter
than that required to transport chemical species. Because of this, the potential distributions
remain at quasi-steady-state. Test cases of this type are solved in subsection 4.1.1. The
potential distributions used in this subsection all ignore the effects of diffusion potential.
As was shown in section 2.3.1, chemical transport requires not only the second order
terms caused by diffusion, but also demands first order terms for migration and convection. Test
cases of this type are solved in section 4.1.2. Convective terms are not used in this thesis for the
reasons discussed in section 2.3.1.1.1. It is interesting to model chemical transport for both
steady-state and transient solutions. Comparison of the code to one time transient solution is
shown in subsection 4.1.3.
CREVICER models two independent spatial dimensions in a cartesian coordinate
248
system with provisions to account for dependent changes in a third dimension. The code is
compared to analytic solutions representing one, two and “two-plus” -dimensional cases. In all
cases the code is actually solving the differential equation in two dimensions. For the
comparison to one-dimensional solutions, the boundary conditions are arranged such that the
only variations occur along one axis. The “two-plus” cases show the code’s ability to model
the effects of dependent changes in a third dimension. The field variable is assumed to vary only
in the xy plane, but that distribution reflects the effect of changes in the height of the third
dimension across the xy plane. This partial accounting of the third dimension is discussed in
greater depth later in this section.
249
4.1.1 Test Cases Evaluating Potential
Potential distributions are critical to the rates of generation and mass transport within
crevices. For clarity, all of the cases in this section concern themselves with φs, the solution
potential. As was discussed in section 2.3.2.4.2 this potential is related to the electrochemical
potential. The contribution of φdiffusion is not considered. Consideration of the diffusion potential
would make the analytic solutions intractable.
4.1.1.1 Case 1 - One-D Crevice With Active Tip and Passive Flanks
The simplest geometry against which to test the CREVICER code is a one-dimensional
crevice filled with an electrolyte of uniform conductivity. An equally simple set of boundary
conditions would represent a potentiostatically controlled crevice corroding only at the tip.
These conditions roughly simulate a simple environmentally-assisted crack. To define such
boundary conditions the mouth is held potentiostatically at constant potential, the active base
has constant electrical flux, and the crack flanks are perfectly passive (zero flux). These
conditions are illustrated in Figure 4.1.1.1(a). They represent a 1-cm long crevice with a
uniform 10-µm gap, filled with 0.6 M NaCl and corroding along the crevice base at a rate of 10
mA/cm2. The mouth potential is held at 0 V. These conditions have been converted to standard
units and are summarized in Table 12.
250
Parameter
Value
Jtip
-102 [A/m2]*
6
7.58335 [S-m]-1
N0
0 [V]
l
10-2 [m]
h
10-5 [m]
*
An anodic current at the base is oriented in the
-x direction, hence the negative sign.
Table 12. Summary of conditions for Case 1.
Analytic Solution for Case 1
The governing equation for this problem is the LaPlace Equation. At equilibrium the
divergence of the potential in solution is equal to zero.
2
L̃ Ns ' 0
(170)
Where:
φs
is the solution potential [V]
This equation can be represented in one-dimensional cartesian coordinates as shown
below.
M2 N
Mx
2
' 0
(171)
251
The first boundary condition for this problem occurs at the mouth (x=0). It is a Dirichlet
condition since the value of the field variable, φs, is fixed at a constant value φ0.
Ns(x'0)'N0
(172)
The other boundary condition occurs at the crevice tip (x = x0). It is a Neumann
condition since the fixed flux and constant solution conductivity determine the derivative of the
potential.
J
/0
' & tip
Mx 000
6
x'x 0
MNs
(173)
Where:
Jtip
is current density at the crack tip[A/m2]
6
is conductivity [S-m]-1
The solution for this differential equation has the form:
Ns(x) ' K1 x % K0
(174)
Where:
K1, K2 are the coefficients of the solutions
By substituting in for the boundary conditions given in equations 172 and 173 the final
252
solution can be found and is shown below.
Ns(x) ' &
Jtip
6
x % N0
(175)
For this geometry and these boundary conditions the solution has the form of a straight
line. It is interesting to note that for this geometry, which has constant height throughout the
crevice, there is no dependence on h. It is the ratio of the electrical current density to the
solution conductivity which determines the gradient of potential. In a crevice with constant
height and non-reacting flanks the current density in solution is uniformly equal to the flux at the
tip, Jtip.
The physical parameters in this situation that are needed to determine the potential
distribution are the current density at the crack tip, Jtip, the solution conductivity, κ , and the
mouth potential, φ0. The values for these were given in Table 12. Substituting these values into
Equation 175 gives the numerical form for the potential distribution inside the crevice shown
below.
Ns(x) ' 13.2 x
(176)
Numerical Solution with CREVICER for Case 1
CREVICER was configured to run a crevice with the conditions shown in Table 12.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
253
numerical solutions obtained by Equation 176 is shown in Figure 4.1.1.1(b). As can be seen in
Table 13 the quality of the fit is extremely good. Each of the 100 variable nodes is a separate
degree of freedom (D.O.F). Summation of the relative errors between the numerical and
analytic solutions at each node yields the Chi-square (P
P2 ) of the fit.
D.O.F.
P2
100
1.96 x 10-11
Table 13. Goodness of fit for Case 1.
For this simple geometry the correspondence between the numerical data calculated by
CREVICER and the exact solution is extremely good. The calculated P2 is essentially
measuring truncation error. The next test case considers a more complicated set of boundary
conditions applied to the same geometry.
256
4.1.1.2 Case 2 - One-D Crevice With Active Flanks and Passive Tip
A slightly more complicated case than the previous one can be generated by starting
with the same geometry but applying different boundary conditions. A simple first
approximation of the boundary conditions for a crevice would be to hold the mouth
potentiostatically and allow the crevice flanks to corrode at a uniform rate, without any
contribution to the current from the crevice tip. This test case was referred to in subsection
2.3.1.6 and was used in the calculation of the charge density in solution which is related to the
value of the second derivative of potential.
To define the situation for this test cases the mouth is held potentiostatically at constant
potential and the crack flanks are equally active at all potentials with constant flux regardless of
potential. These conditions are illustrated in Figure 4.1.1.2(a). They represent a 1-cm long
crevice with a uniform 10-µm gap, filled with 0.6 M NaCl and corroding along the crevice walls
at a rate of 0.1 mA/cm2. The mouth potential is held at 0 V. These conditions have been
converted to standard units and are summarized in Table 14.
257
Parameter
Value
1 [A/m2]
Jwalls
6
7.58335 [S-m]-1
N0
0 [V]
l
10-2 [m]
h
10-5 [m]
Table 14. Summary of conditions for Case 2.
Analytic Solution for Case 2
The governing equation for this problem is the LaPlace Equation. At equilibrium the
divergence of the flux is equal and opposite to the rate of generation of charge. Another way of
stating this is to say that the current flow out through solution is equal to the charge injected
from the crack flanks into the electrolyte. This situation occurs because at equilibrium the
amount of free charge in solution does not change.
2
L̃ Ns % Q ' 0
(177)
Where:
φs
is the solution potential [V]
Q
is related to the generation rate of charge [V/m2]
258
When this equation is represented in cartesian coordinates and Q is expressed in
physical terms Equation 178 is generated.
M2 Ns
%
Mx 2
Jwalls
6h
' 0
(178)
Where:
Ns
is the potential [V]
Jwalls
is the current perpendicular on crevice walls [A/m2]
6
is the solution conductivity [S-m]-1
h
is the crevice height [m]
The boundary condition at the mouth (x=0) is once again the Dirichlet condition
presented in Equation 172 since the potential is fixed at φs, = φ0.
Ns(x'0)'N0
(172)
The other boundary condition is a Neumann condition since the derivative of the
solution potential, φ, is fixed. In this case however the value of the derivative is fixed at zero,
since no current crosses the boundary at the crevice base where x = x0.
/0
' 0
Mx 000
x 'x0
MNs
(179)
259
The solution to this differential equation has the following form.
Ns(x) ' K2 x 2 % K1 x % K0
(180)
The final solution is found by substituting in for the boundary conditions and solving for
the coefficients.
Ns(x) ' &
Jwalls
26h
x2 %
Jwallsx 0
6h
x % N0
(181)
For this geometry and these boundary conditions the solution has the form of a
parabolic curve. Unlike the situation in Case 1, where only the tip was active, the height of the
crevice is an integral part of the final solution. Because charge is injected along the crevice wall,
whose area is independent of the crevice height, the resulting current density does scale
inversely with crevice height. Likewise, the length of the crack enters into the equation since
changing the crack length increases the amount of total current leaving the crevice as well as the
length over which it must be transported. Finally, it is worth pointing out that the current density
(and thus the derivative of potential with distance) changes throughout the crevice. For a onedimensional crevice, with sides corroding at a constant rate, the current density decreases
linearly from a maximum at the mouth to zero at the base.
The physical parameters in this situation that are needed to determine the potential
distribution are the current density on the crevice walls, Jwalls, the solution conductivity, κ, the
crevice height, h, and depth, x0, and the mouth potential, φ0. The values for these were given in
Table 14. Substituting these values into Equation 181 gives the numerical form for the potential
260
distribution inside the crevice shown below.
Ns(x) ' &6.59@103 x 2 % 1.32@102 x
(182)
Numerical Solution with CREVICER for Case 2
CREVICER was configured to run a crevice with the conditions shown in Table 14.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solutions obtained by Equation 182 is shown in Figure 4.1.1.2(b). As can be seen in
Table 15 the quality of the fit is extremely good.
D.O.F.
P2
100
5.2 x 10-10
Table 15. Goodness of fit for Case 2.
For this simple geometry the correspondence between the numerical data calculated by
CREVICER and the exact solution is extremely good and the measured P2 is essentially
representing truncation error. The next test case combines the boundary conditions for these
two cases and applies them simultaneously to the same geometry.
263
4.1.1.3 Case 3 - One-D Crevice With Active Flanks and Active Tip
Continuing with the same geometry used in Cases 1 and 2 the boundary conditions
used in the preceding cases can be combined. A more complete representation of the
environmentally assisted cracking in Case 1 would include corrosion reactions on the crack
flanks as well as at the crack tip. To define this situation the mouth is held potentiostatically at
constant potential, the crack flanks are equally active at all potentials with constant flux
regardless of potential, and the crack tip corrodes at a constant rate. These conditions are
illustrated in Figure 4.1.1.3(a). They represent a 1-cm long crevice with a uniform 10-µm gap,
filled with a 0.6 M NaCl solution, corroding along the crevice walls at a rate of 0.1 mA/cm2 and
at the crack tip at a rate of 10 mA/cm2. The mouth potential is held at 0 V. These conditions
have been converted to standard units and are summarized in Table 16.
Parameter
Jwalls
Value
1 [A/m2]
Jtip
-102 [A/m2]*
6
7.58335 [S-m]-1
N0
0 [V]
l
10-2 [m]
h
10-5 [m]
*
An anodic current at the base is oriented in the
-x direction, hence the negative sign.
Table 16. Summary of conditions for Case 3.
264
Analytic Solution for Case 3
The governing equation for this problem is the same LaPlace Equation that ruled Case
2. Once again, at equilibrium the divergence of the flux is equal and opposite to the rate of
generation of charge yields Equation 177.
2
L̃ Ns % Q ' 0
(177)
Converting the equation to cartesian coordinates and again substituting in for the
boundary conditions yields Equation 178 once more.
M2 Ns
Mx 2
%
Jwalls
6h
' 0
(178)
Where:
Ns
is the potential [V]
Jwalls
is the current perpendicular on crevice walls [A/m2]
6
is the solution conductivity [S-m]-1
h
is the crevice height [m]
The first boundary condition, applied at the potentiostatically controlled mouth, is the
same Dirichlet condition as in all of these first three test cases.
Ns(x'0)'N0
(172)
265
The boundary condition at the crack tip, where x = x0, is also the same Neumann
condition as was used in subsection 4.1.1.1.
J
/0
' & tip
Mx 000
6
x 'x0
MNs
(173)
Where:
Jtip
is the current at the crevice tip (A/m2)
6
is the solution conductivity (S-m)-1
This problem has the same form for the solution as Case 2.
Ns(x) ' K2 x 2 % K1 x % K0
(180)
Finally, by substituting in for the boundary conditions and deriving the coefficients the
final form for the solution is found.
Ns(x) ' &
Jwalls
26h
x2 %
Jwallsx 0
6h
&
Jtip
6
x % N0
(183)
For this one dimensional case and these boundary conditions of an active tip combined
with active crack flanks, the resulting solution is the superposition of the linear and parabolic
solutions found in Cases 1 and 2. The physical interpretation of the results can also be viewed
as the linear combination of two processes, one considering only the crack tip, the other only
266
the crack flanks.
The resulting equation requires both the current density at the crack tip, Jtip, as well as
along the crack walls, Jwalls, the solution conductivity, κ , both aspects of the crevice geometry,
h and x0, and the crack mouth potential, N0, to determine the potential distribution. Using the
values from Table 16 gives the numerical form for the equation shown below.
Ns(x) ' &6.59@103 x 2 % 1.45@102 x
(184)
A comparison of Equation 184 to Equations 176 and 182 shows that the result is
indeed the sum of the solutions to Cases 1 and 2.
Numerical Solution with CREVICER for Case 3
CREVICER was configured to run a crevice with the conditions shown in Table 16.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solutions obtained by Equation 184 is shown in Figure 4.1.1.3(b). As can be seen in
Table 17 the quality of the fit is extremely good.
D.O.F.
P2
100
4.3 x 10-10
Table 17. Goodness of fit for Case 3.
267
For this simple geometry the correspondence between the numerical data calculated by
CREVICER and the exact solution is extremely good and the calculated P2 is essentially a
measure of truncation error. These three initial test cases investigated CREVICER’s ability to
solve the potential distributions inside one-dimensional crevices filled with uniform electrolytes.
The next case investigates the CREVICER’s fidelity to a situation where the electrolyte varies
throughout the crevice.
270
4.1.1.4 Case 4 - One-D Crevice With Active Tip and Varying Solution Conductivity
Although a crevice or crack may initially be filled with a uniform electrolyte,
electrochemical reactions within the occluded site cause variations in the aqueous solution that
fills the defect. Case 4 investigates a one-dimensional crack in which the solution conductivity
varies linearly from the crack mouth to the crack tip. To define this situation the mouth is held
potentiostatically at constant potential, the crack flanks are perfectly passive and the crack tip
corrodes at a constant rate. These conditions are illustrated in Figure 4.1.1.4(a). They represent
a 1-cm long crevice with a uniform 10-µm gap, corroding at the crack tip at a rate of 10
mA/cm2 , and filled with an electrolyte concentration that varies linearly from 10 mM NaCl at
the base (where the conductivity is κ0) to 1.01 M NaCl at the mouth (where the conductivity is
κ1 x0 + κ0) . These conditions may be considered roughly approximate to the situations found
in cracks and crevices, where the most concentrated electrolytes are found in the most
occluded portions of the sites. The mouth potential is held at 0 V. These conditions have been
converted to standard units and are summarized in Table 18.
271
Parameter
Value
Jtip
-102 [A/m2]*
61
1263.9 [S-m]-1
60
0.12639 [S-m]-1
N0
0 [V]
10-2 [m]
l
h
10-5 [m]
*
An anodic current at the base is oriented in the
-x direction, hence the negative sign.
Table 18. Summary of conditions for Case 4.
Analytic Solution for Case 4
The potential distribution for this case is found by using the relationship between the
gradient of solution potential, the electric flux in solution,
J˜el
, and the varying
conductivity.
L̃Ns '
J˜el
6(x)
Where:
J˜el
κ(x)
is the electric flux density in solution [A/m2]
is the conductivity at position x [Ω-m]-1
(185)
272
Expressed in one-dimensional cartesian coordinates this equation takes the form below.
MNs
Mx
'
J˜el
6 1 x % 60
(186)
Where:
6 1x + 6 0
is the solution conductivity [S-m]-1
The boundary condition at the crack mouth is the Dirichlet condition because of the
potentiostatic hold.
Ns(x'0)'N0
(172)
At the active crack tip the boundary is a Neumann condition because it is the derivative
which is defined. The conductivity at the crack tip depends on the length of the crack, x0, and
the conductivity coefficients, κ1 and κ0 .
Jtip
/0
' &
Mx 000
61x 0 % 60
x 'x0
MNs
Where:
Jtip
is the current at the crevice tip (A/m2)
6 1x + 6 0
is the solution conductivity (S-m)-1
(187)
273
Equation 186 can be directly integrated and the boundary conditions applied to yield
the general form for the solution.
Ns(x) ' &
Jtip ln(61 x%6 0 )
61
%
Jtip ln(6 0 )
61
% N0
(188)
The natural logarithm of the conductivity shapes the potential at any point within the
crack. Substituting the values from Table 18 yields the following numerical values for the
potential in this case.
Ns(x) ' 7.91 @ 10&2 ln(1.26 @ 103 x%1.26 @ 10&1 ) & 1.64 @ 10&1
(189)
Numerical Solution with CREVICER for Case 4
CREVICER was configured to run a crevice with the conditions shown in Table 18.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solution obtained by Equation 189 is shown in Figure 4.1.1.4(b). As can be seen in
Table 19 the quality of the fit is extremely good.
274
D.O.F.
P2
200
2.6 x 10-3
Table 19. Goodness of fit for Case 4.
For this simple geometry the correspondence between the numerical data calculated by
CREVICER and the exact solution is extremely good. This test case examined CREVICER’s
ability to solve the potential distribution inside a one-dimensional crevice with an electrolyte of
varying composition when the current density in solution was a constant. The next case
examines CREVICER when it models a crevice with both varying electrolyte composition and
varying current density in solution which is caused by actively corroding walls.
277
4.1.1.5 Case 5 - One-D Crevice With Active Walls, Passive Tip and Varying Solution
Conductivity
The previous case considered a simple system with varying solution composition. This
case uses the same geometry and variations in solution composition as Case 4, but uses active
crevice walls rather than an active crack tip to supply the electrical current. Thus, the current
density in solution decreases linearly from the mouth to zero at the tip. To define this situation
the mouth is held potentiostatically, (constant potential) and the crack flanks are uniformly
active, generating the same current at all potentials and environments. These conditions are
illustrated in Figure 4.1.1.5(a). They represent a 1-cm long crevice with a uniform 10-µm gap,
corroding along the crevice walls at a rate of 10 µA/cm2 , and filled with an electrolyte that
varies linearly from 10 mM NaCl at the tip (where the conductivity is κ0) to 1.01 M NaCl at
the base (where the conductivity is κ1 x0 + κ0) . These conditions are rough analogs to the
situations found in cracks and crevices, where the most concentrated electrolytes are found in
the most occluded portions of the sites. The mouth potential is held at 0 V. These conditions
have been converted to standard units and are summarized in Table 20.
278
Parameter
Jwalls
Value
0.1 [A/m2]
61
0.12639 [S-m]-1
60
1263.9 [S-m]-1
N0
0 [V]
l
10-2 [m]
h
10-5 [m]
Table 20. Summary of conditions for Case 5.
Analytic Solution for Case 5
The potential distribution for this case is found by using the relationship between the
gradient of solution potential, the changing electric flux in solution, J˜el(x) , and the varying
conductivity.
L̃Ns '
J˜el(x)
6(x)
(190)
Where:
J˜el (x) is the electric flux density in solution at position x
[A/m2]
279
κ(x)
is the conductivity at position x [Ω-m
The flux density in solution changes with position based on the amount of current
generated between x and the base at x0. Equation 190 be expanded and placed into cartesian
coordinates.
x0
MNs
Mx
m
'
Jwalls dx
x
(191)
6 1 x % 60
Where:
Jwalls
is the current perpendicular on crevice walls
[A/m2]
6 1x + 6 0
is the solution conductivity (S-m)-1
In this case, as in every one investigated thus far, the initial boundary condition is a
Dirichlet one where the mouth is held at a constant potential, N0.
Ns(x'0)'N0
(172)
At the crevice tip, the boundary condition still defines the derivative of potential. Since
no current crosses the crevice tip in this case, the derivative is equal to zero.
280
/0
' 0
Mx 000
x 'x0
MNs
(179)
Equation 191 be solved by a double integration and the use of the boundary conditions
to find the general form of the solution potential as a function of x.
Ns(x) '
Jwalls
h
&
x 6 0 ln(61 x%6 0 ) x 0 ln(6 1 x%60 ) x 0 ln(60 ) 60 ln(6 0 )
%
% N0
&
&
%
2
2
6
6
61
1
1
6
6
1
(192)
1
The potential distribution is determined by the magnitude of the electrical fluxes, Jwalls,
the coefficients for the solution conductivity, κ1 and κ0 , and the crevice geometry x0 and h. The
crevice height is required here where it was not in Case 4 because it directly affects the current
density in solution. Given equal current densities on the crack flanks, a narrower crevicer, i.e. a
smaller h, will have to support higher fluxes of electrical current through solution.
The values from Table 20 can be substituted into Equation 192 to produce the
numerical form for the exact conditions used in this case.
N(x) ' 104 7.91 @ 10&4 x & 7.99 @ 10&6 ln(6 1 x%60 ) & 1.65 @ 10&5
(193)
Numerical Solution with CREVICER for Case 5
CREVICER was configured to run a crevice with the conditions shown in Table 20.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
281
A comparison of the numerical results obtained with CREVICER and the exact
numerical solution obtained by Equation 193 is shown in Figure 4.1.1.5(b). As can be seen in
Table 21 the quality of the fit is extremely good.
D.O.F.
P2
100
3.0 x 10-3
Table 21. Goodness of fit for Case 5.
For this simple geometry the correspondence between the numerical data calculated by
CREVICER and the exact solution is extremely good. This initial group of five test cases has
established CREVICER’s ability to model one-dimensional cracks and crevices with a spread
of boundary conditions and internal distributions of conductivity. The next two cases will
examine CREVICER’s operation on two-dimensional occluded regions.
284
4.1.1.6 Case 6 - Two-D Crevice With Passive Walls and Active Tip
The CREVICER code is at its heart a two-dimensional, cartesian, finite element code.
The previous five cases were modeled using a two-dimensional grid that had the majority of the
gridding in the x-direction. Cases 6 and 7 apply CREVICER to two-dimensional test cases.
The geometry used in Case 6 is a washer-shaped crevice with active corrosion occurring along
the tip, or interior edge, while the mouth (exterior edge) is held potentiostatically. The crevice is
of uniform height and is filled with a uniform electrolyte. This system is radially symmetric and is
solved analytically in one-dimension cylindrical coordinates. CREVICER treats the geometry
as an approximately circular shape laid out on a rectangular grid, so the test truly does show
CREVICER’s ability to model in two dimensions. To define this situation the mouth (outside
edge) is held potentiostatically, (constant potential) and the crevice base (along the interior
edge) is active, generating the same current at all potentials. These conditions are illustrated in
Figure 4.1.1.6(a). They correspond to a washer-shaped crevice with 2-cm inner diameter, a 4cm outer diameter and a 10-µm gap filled with 0.6M NaCl solution. The inner edge is
corroding at a rate of 10 mA/cm2 and the outer edge is held potentiostatically at 0 V. These
conditions have been converted to standard units and are summarized in Table 22.
285
Parameter
Value
Jtip
102 [A/m2]
rinner
10-2 [m]
router
2x10-2
6
7.58335 [S-m]-1
N0
0 [V]
h
10-5 [m]
Table 22. Summary of conditions for Case 6.
Analytic Solution for Case 6
The governing equation for this problem is the LaPlace Equation without generation
that determined Cases 1 and 4. It simply states that the divergence of the flux is zero.
2
L̃ Ns ' 0
(170)
By taking advantage of the radial symmetry of the washer, this can be expressed in
one-dimensional cylindrical coordinates.
M2 Ns
Mr 2
%
1 MNs
' 0
r Mr
(194)
The outer edge of the washer-shaped crevice being held potentiostatically. This causes
286
a Dirichlet boundary condition.
Ns(r'router)'N0
(195)
At the inner edge of the washer the current flow (along with the solution conductivity)
defines the derivative of the potential.
J
/0
' & tip
Mr 000
6
r'rinner
MNs
(196)
Where:
Jtip
is current density at tip axis [A/m2]
6
is conductivity [S-m]-1
The solution to this differential equation has the following form.
Ns(r) ' K1 lnr % K0
(197)
The boundary conditions can be used to produce an expression defining the potential in
terms the physical parameters of the crevice.
Ns(r) ' &
Jtip rinnerln(r)
6
%
Jtip rinnerln(router)
6
% N0
(198)
The potential field established by this geometry and these boundary conditions is also
radially symmetric. The current, established by Jtip, interacts with the solution resistance, which
287
depends on the conductivity, κ, and the geometry rinner and router to create the potential
distribution. Just as in Cases 1 and 4 the height of the crevice does not appear in the equation.
Another way of viewing this is that the total current scales linearly with height, while the solution
resistance scales inversely and the two factors cancel.
The values of the physical parameters given in Table 22 can be substituted into
Equation 198 to produce the exact equation for this situation.
Ns(r) ' &0.132 ln(r) & 0.516
(199)
Numerical Solution with CREVICER for Case 6
CREVICER was configured to run a crevice with the conditions shown in Table 22.
The grid used had 1270 nodes arranged to form 2348 elements. The average element was
approximately 600 µm across. A plot of the numerical results is shown in Figure 4.1.1.6(b).
Figure 4.1.1.6(c) shows a comparison of the numerical data created with CREVICER
and the exact values predicted by Equation 199. The plot was obtained by plotting the
potential value at the radius for each of the 1270 nodes that CREVICER solved for. As can be
seen in Table 23 the quality of the fit is extremely good.
D.O.F.
P2
1269
1.9 x 10-5
Table 23. Goodness of fit for Case 6.
288
The next test case is an extension of this one to slightly more complicated boundary
conditions. In this case the total current crossing any isoradial line was a constant, although the
current density decreased due to the increase in circumference. For Case 7, where the crevice
walls are corroding, the total current drops off as the center of the crevice is approached.
292
4.1.1.7 Case 7 - Two-D Crevice With Active Walls
The case extends the exploration of CREVICER’s two-dimensional capabilities started
in Case 6. Case 7 is a disc-shaped crevice with active corrosion occurring along the crevice
walls, while the mouth (exterior edge) is held potentiostatically. The crevice is of uniform height
and is filled with a uniform electrolyte. This system is radially symmetric and is solved
analytically in one-dimension. Just as in Case 6 CREVICER treats the geometry as an
approximately circular shape laid out on a rectangular grid, so the test truly does show
CREVICER’s ability to model in two dimensions. To define this situation the mouth (outside
edge) is held potentiostatically at constant potential and the crevice base (interior edge) is
active, generating the same current at all potentials. These conditions are illustrated in Figure
4.1.1.7(a). They correspond to a disc-shaped crevice with 2-cm diameter, a 10-µm gap filled
with 0.6M NaCl solution. The inner surface is corroding at a rate of 100 µA/cm2 and the outer
edge is held potentiostatically at 0 V. These conditions have been converted to standard units
and are summarized in Table 24.
293
Parameter
Value
Jwalls
1 [A/m2]
router
10-1 [m]
6
7.58335 [S-m]-1
N0
0 [V]
h
10-5 [m]
Table 24. Summary of conditions for Case 7.
Analytic Solution for Case 7
The governing equation for this problem is the LaPlace Equation with generation that
determined Cases 2 and 3. It simply states that the divergence of the flux is equal and opposite
to the generation rate of current from the crevice walls into the solution.
2
L̃ Ns % Q ' 0
(177)
Using the radial symmetry of the disc and substituting in for the generation term the
governing equation can be expressed in one-dimensional cylindrical coordinates.
M2 Ns
Mr 2
Where:
%
J
1 MNs
% walls ' 0
r Mr
6h
(200)
294
Jwalls
is the current density at the tip axis [A/m2]
6
is the conductivity [S-m]-1
h
is the height [m]
The potentiostatically-held outer edge causes the same Dirichlet condition as was in
Case 6.
Ns(r'router)'N0
(195)
Despite the fact that there is no physical inner edge to a disc, as there is in a washer,
there is still an internal boundary condition for the derivative of potential. At the center of the
disc, where r=0, there is no current flow since there is no area at r < 0 to generate any current.
/0 ' 0
Mr 000
r'0
MNs
(201)
The solution to this differential equation has the form below:
Ns(r) ' K2 r 2 % K1 r % K0
(202)
The boundary conditions can be applied and the differential equation solved to generate
the expression for the potential distribution inside the disc.
295
Ns(x) ' &
Jwallsr 2
46h
2
%
Jwallsrouter
46h
% N0
(203)
The potential distribution inside the disc depends on the current density, Jwalls, the disc
geometry, router and h, and the solution conductivity, κ.
The values for the physical constants from Table 24 can be placed into the above
equation to generate the exact polynomial representing the potential distribution inside the disc.
Ns(x) ' &3.30 @ 103 r 2 % 3.30 @ 101
(204)
Numerical Solution with CREVICER for Case 7
CREVICER was configured to run a crevice with the conditions shown in Table 24.
The grid used had 574 nodes arranged to form 1082 elements. The average element was
approximately 500 µm across. A plot of the numerical results is shown in Figure 4.1.1.7(b).
Figure 4.1.1.7(c) shows a comparison of the numerical data created with crevicer and
the exact values predicted by Equation 204. The plot was obtained by plotting the potential
value at the radius for each of the 574 nodes that CREVICER solved for. As can be seen in
Table 25 the quality of the fit is extremely good.
296
D.O.F.
P2
573
P2 = 1.9 x 10-4
Table 25. Goodness of fit for Case 7.
These two test cases 6 and 7 have tested the functionality of CREVICER on twodimensional situations. In addition to solving two free spatial dimensions, CREVICER can
incorporate the effects of changes in third dimension. Cases 8 and 9 evaluate CREVICER’s
abilities in this area.
300
4.1.1.8 Case 8 - One-D Wedge with Varying Height and Active Tip
Cases 8 and 9 test CREVICER’s ability to simulate dependent changes in a third
dimension. The test geometry is a trapezoidal wedge shape as might be found in a growing
crack under stress. The crack plane is the xy-plane which CREVICER models with its two
spatial dimensions, though in this case only one of the two free dimensions is used to
correspond with this analytic solution. The dependent third dimension is the crack height which
decreases linearly from the crack mouth (where h = h0) to the crack tip (where h = h1). For
Case 8 all of the current is generated at the crack tip and the crack is filled with a uniform
electrolyte. To define this situation the mouth (x = 0) is held potentiostatically at constant
potential and the crevice base (along the interior edge) is active, generating the same current at
all potentials. These conditions are illustrated in Figure 4.1.1.8(a). They correspond to a
wedge-shaped crack 1 cm long with a mouth height of 300 µm that decreases linearly to a tip
height of 5 µm, filled with 0.6M NaCl solution and corroding at the tip at a rate of 10 mA/cm2.
These conditions have been converted to standard units and are summarized in Table 26. This
problem is analogous to Case 4 presented in subsection 4.1.1.4. There, the potential gradients
were steepest near the mouth because of conductivity increases. Here, the steepest gradients
occur at the crack tip where the cross-sectional area is smallest.
301
Parameter
Value
Jtip
-102 [A/m2]
x0
10-2 [m]
h0
3 x 10-4 [m]
h1
5 x 10-6 [m]
2
2.95 x 10-2 [radians]
6
7.58335 [S-m]-1
N0
0 [V]
Table 26. Summary of conditions for Case 8.
Analytic Solution for Case 8
The potential distribution for this case is found by using the relationship between the
gradient of solution potential, the varying electric flux in solution, J˜el(x) , and the solution
conductivity.
L̃Ns '
J˜el(x)
6
(205)
J˜el(x) changes because the total current from the crack tip remains constant while
the crack itself increases linearly in height to the crack mouth. The above equation can be
expressed in one-dimensional cartesian coordinates and the flux density can be expressed in
302
terms of the crevice parameters. θ is a derived parameter, the crack opening angle.
MNs
Mx
Jtip h1
' &
2
2
6 h0 &2sin
(206)
Where:
θ
is the crack opening angle [rad]
The boundary condition at the crack mouth is the familiar Dirichlet condition caused by
the potentiostatic hold.
Ns(x'0)'N0
(172)
At the tip boundary, where x=x0, the imposed constraint determines the derivative of
the potential with position.
MNs
Mx /0(x'x0)
' &
Jtip
6
(173)
The solution to this differential equation has the form:
Ns(x) ' K1 ln(ax%b) % K0
(208)
The boundary conditions can be substituted in and the coefficients solved for to
produce an expression for the potential.
303
Ns(x) '
Jtip h1 ln h0 &2sin
26sin
2
2
x
2
2
&
Jtip h1 lnh0
26sin
2
% N0
(209)
2
The potential distribution inside the wedge depends on the current density at the crack
tip, Jtip , the solution conductivity, κ, and the wedge geometry which is determined by h0 and θ.
The values for the physical constants from Table 26 can be placed into the above
equation to generate the exact expression representing the potential distribution inside the
wedge
Ns(x) ' 2.24 @ 10&3 ln 3 @ 10&4 &2.95 @ 10&2 x & 1.81 @ 10&2
(210)
Numerical Solution with CREVICER for Case 8
CREVICER was configured to run a crevice with the conditions shown in Table 26.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solutions obtained by Equation 210 is shown in Figure 4.1.1.8(b). As can be seen in
Table 27 the quality of the fit is extremely good.
D.O.F.
P2
100
P2 = 2.5 x 10-6
Table 27. Goodness of fit for Case 8.
304
The next test case continues to address the wedge geometry but deals with the added
complication of changing total electrical current along the length of the crevice. Instead of
generating electrical current at the crack tip it arises along the crack flanks.
307
4.1.1.9 Case 9 - One-D Wedge With Varying Height and Active Sides
Case 9 concludes the test of CREVICER’s ability to simulate dependent changes in a
third dimension. As in Case 8, the test geometry is a trapezoidal wedge shape as might be
found in a growing crack under stress. The crack plane is the xy-plane which CREVICER
models with its two spatial dimensions, though in this case only one of the two free dimensions
is used to correspond with this analytic solution. The dependent third dimension is the crack
height which decreases linearly from the crack mouth (where h = h0) to the crack tip (where h
= h1). In Case 9 all of the current is generated on the crack flanks and the crack is filled with a
uniform electrolyte. To define this situation the mouth (x = 0) is held potentiostatically at
constant potential and the crack flanks are active, generating the same current at all potentials.
These conditions are illustrated in Figure 4.1.1.9(a). They correspond to a wedge-shaped
crack 1 cm long with a mouth height of 300 µm that decreases linearly to a tip height of 5 µm,
filled with 0.6M NaCl solution and corroding along the flanks at a rate of 100 µA/cm2. This can
be interchangeably viewed as each of the two flanks corroding at 50 µA/cm2 since the
important parameter is the total corrosion rate per unit length. These conditions have been
converted to standard units and are summarized in Table 28.
308
Parameter
Value
Jwalls
0.1 [A/m2]
h0
3 x 10-4 [m]
h1
5 x 10-6 [m]
2
2.95 x 10-2 [radians]
6
7.58335 [S-m]-1
N0
0 [V]
Table 28. Summary of conditions for Case 9.
Analytic Solution for Case 9
The potential distribution for this case is found by using the relationship between the
gradient of solution potential, the varying electric flux in solution, J˜el(x) , and the solution
conductivity. This is the same governing equation, 205, that was used in Case 8 of subsection
4.1.1.8.
L̃Ns '
J˜el(x)
6
(205)
J˜el(x) changes in this case because of the changes in the crack height with position
and the varying total current that must cross each point. If the terms in the above equation are
expanded and placed into cartesian coordinates the following governing equation is found. θ is
a derived parameter, the crack opening angle.
309
x0
MNs
Mx
m
Jwallsdx
(211)
x
' &
6 h0 &2sin
2
2
At the mouth the boundary condition is the regular Dirichlet condition that reflects the
potentiostatic hold.
Ns(x'0)'N0
(172)
The other boundary condition applies at the crack tip and defines the derivative of the
flux.
MNs
' 0
Mx /0(x'x0)
(179)
Equation 211 can be solved by a double integration and the use of the boundary
conditions.
Ns(x) '
J walls
6
h 0 ln h 0 &2sin
x
2sin
%
2
2
4sin 2
2
2
2
x
2
x 0 ln h 0 &2sin
&
2sin
2
2
2
x
2
%
x0 ln(h 0 )
2sin
2
2
&
h 0 ln(h 0 )
4sin 2
2
2
% N0
(212)
The values for the physical constants from Table 28 can be placed into the above
310
equation to generate the exact expression representing the potential distribution inside the
wedge.
Ns(x) ' 1.32@10&2 33.9x % 5.76@10&3 ln h0 &2sin
2
x
2
% 4.67@10&2
(213)
Numerical Solution with CREVICER for Case 9
CREVICER was configured to run a crevice with the conditions shown in Table 28.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solutions obtained by Equation 213 is shown in Figure 4.1.1.9(b). As can be seen in
Table 29 the quality of the fit is extremely good.
D.O.F.
P2
100
P2 = 4.0 x 10-9
Table 29. Goodness of fit for Case 9.
This test case concludes the exploration of CREVICER’s abilities to model potential
distributions. The next set of test cases examines CREVICER’s usefulness in solving
differential equations with first as well as second order terms. These types of differential
equations are involved in the mass transport by diffusion and migration of chemical species in
solution.
313
4.1.2 Test Cases Evaluating Mass Transport
The calculation engine which powers CREVICER solves two-dimensional partial
differential equations. The previous nine cases only tested the program’s ability to analyze the
types of differential equations required to solve potential distributions. There were only three
different types of governing equations used, 172, 177 and 190. They involved the second
order terms with or without the addition of a generation term. Modeling the mass transport of
chemical species is slightly more complicated as the first order terms are also required as was
shown in Section 2.3.1.3.
4.1.2.1 Case 10 - One-D Mass Transport of Chemical Species
The first case used to test CREVICER’s abilities in this area is somewhat artificial, but it
was chosen to be in the same form as Psaila-Dombrowski[48]. The physical situation is a onedimensional slot-shaped crevice, filled with a conducting electrolyte to keep the conductivity
constant, and the mass transport is done on minor, non-reacting species. Although these
species are affected by the potential gradient in the crevice, which is defined to be constant in
this case, there is no generation. This problem was discussed in subsection 2.3.4.1.2 and the
limitations of this solution to real problems were explored.
To define this situation the mouth (x = 0) is held constant in both potential and in the
concentration of the minor species. These conditions are illustrated in Figure 4.1.2.1(a). They
314
correspond to a slot-shaped crack 1cm long with a mouth height of 10 µm, filled with 0.5 M
Na2SO4 + 1 mM NiCl2. The sodium sulfate is the supporting electrolyte. It dominates the
conductivity over the minor species of nickel chloride, whose transport is being modeled in this
case. The tip is corroding at a rate of 10 mA/cm2. These conditions have been converted to
standard units and are summarized in Table 30.
Parameter
Value
Parameter
Value
-100 [A/m2]
6
13.0338 [S-m]-1
DNi++
6.6523x10-10 [m2/s]
DCl-
2.0309x10-9 [m2/s]
zNi++
2 [eq/mol]
zCl-
-1 [eq/mol]
µNi++
2.6850x10-13
[m2-mol/J-s]
µCl-
8.197x10-13
[m2-mol/J-s]
Kx(Ni++)
6.6523x10-10 [m2/s]
Kx(Cl-)
2.0309x10-9 [m2/s]
Mx(Ni++)
3.9753x10-7 [m/s]
Mx(Cl-)
-6.0681x10-7 [m/s]
C0(Ni++)
1 [mol/m3]
C0(Cl-)
2 [mol/m3]
10-5 [m]
x0
10-2 [m]
Jtip
h
Table 30. Summary of conditions for Case 10.
Analytic Solution for Case 10
The governing equation for this problem is the LaPlace Equation without generation but
including the first order terms. This equation was generated from the mass transport equation
and was developed in section 2.3.1. For simplicity the coefficients of the equation, Kx, Mx, α,
315
and β have been left in the equations, their representations in terms of physical constants are in
Table 31.
2
K x L̃ C i %MxL̃C i ' 0
(214)
The above equation can be represented in one-dimensional cartesian coordinates as
shown below.
Kx
M2 C i
Mx 2
% Mx
MC i
Mx
' 0
(215)
At the crevice mouth the concentration of each species, Ci, is held at a constant value,
Ci0.
C i(x'0) 'C i
0
(216)
At the other boundary, the crevice tip (x=x0 ), the fluxes from the diffusion and
migration are equal and opposite for each species.
K xC0 i(x'x 0 ) % MxC i(x'x 0 ) ' 0
(217)
This differential equation has the following exponential form.
C i(x) ' K1 e (ax) % K0
Substituting in for the boundary conditions and solving yields:
(218)
316
&
C i(x) ' C i e
Mx
Kx
x
(219)
0
The values for the coefficients in terms of physical parameters of the crevice are given in
Table 31.
Parameter
Value
Kx
Di [m2/s]
Mx
zFµi LN [m/s]
Table 31. Coefficient Values for Case 10.
The concentration of each non-reacting species, i, depends exponentially on the ratio of
the first to second order terms. A higher L̃Ns causes larger exponential terms.
Substituting in all of the values yields the following numerical expression for the
concentration of each species
C Ni(x) ' e &5.98@10
2
x
(221)
C Cl(x) ' 2e 2.99@10
2
x
(222)
Numerical Solution with CREVICER for Case 10
317
CREVICER was configured to run a crevice with the conditions shown in Table 30.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solutions obtained by Equations 221 and 222 is shown in Figure 4.1.2.1(b). As can
be seen in Table 32 the quality of the fit is extremely good.
D.O.F.
P2
100
P2 = 1.37x10-6 (Na+)
P2 = 6.64x10-5 (Cl-)
Table 32. Goodness of fit for Case 10.
As was discussed in subsection 2.3.4.1.2 the solution of this test cases is only
applicable for a limited set of conditions. There must be no diffusion potential, the electrical flux
cannot be a function of chemistry or potential and the conductivity must be a constant.
CREVICER can simulate all of these limitations, for a physical system the equations only apply
to the concentrations of minor species in a supporting electrolyte. The next test case examines
chemical transport with generation.
320
4.1.2.2 Case 11 - One-D Mass Transport of Chemical Species With Generation
Case 11 continues with Case 10's exploration of CREVICER’s abilities. It differs in
that the governing equation now includes generation. To test this, the modeled situation is a
one-dimensional slot-shaped crevice filled with a conducting electrolyte to keep the
conductivity constant, and the mass transport is done on minor, non-reacting species. Although
these species are affected by the potential gradient in the crevice, which is defined to be
constant in this case, they contribute little to it by their generation along the crevice flanks. This
case was chosen to represent the assumptions of a commonly-solved analytic case and is not
physically realizable.
To define this situation the mouth (x = 0) is held constant in both potential and in
concentration of the minor species. These conditions are illustrated in Figure 4.1.2.2(a). They
correspond to a slot-shaped crack 1 cm long with a mouth height of 10 µm, filled with 0.5 M
Na2SO4 + 1 mM NiCl2. The sodium sulfate is the supporting electrolyte, it dominates the
conductivity over the minor species of nickel chloride, whose transport is being modeled in this
case. The tip is corroding at a rate of 10 mA/cm2 , but not contributing to chemical generation.
The sides are corroding at a rate of 10-9 mol/m2-s. This chemical flux of nickel is equivalent to
an electrical current of 20 nA/cm2. These conditions have been converted to standard units and
are summarized in Table 33.
321
Parameter
Value
Parameter
Value
Jtip
-100 [A/m2]
DNi++
6.6523x10-10 [m2/s]
Jwalls
10-9 [mol/m2]
zNi++
2 [eq/mol]
6
13.0338 [S-m]-1
µNi++
2.6850x10-13
[m2-mol/J-s]
h
10-5 [m]
Kx
6.6523x10-10 [m2/s]
x0
10-2 [m]
Mx
3.9753x10-7 [m/s]
C0(Ni++)
1 [mol/m3]
Table 33. Summary of conditions for Case 11.
Analytic Solution for Case 11
The governing equation for this problem is the LaPlace Equation with generation and
including the first order terms. This equation was generated from the mass transport equation
and was developed in Section 2.3.1.3. For simplicity the coefficients of the equation, Kx and
Mx have been left in the equations. Their representations in terms of physical constants are in
Table 34.
2
K x L̃ C i %MxL̃C i % Q ' 0
(223)
This can be expressed in one-dimensional cartesian coordinates.
Kx
M2 C i
Mx 2
% Mx
MC i
Mx
% Q ' 0
(224)
322
The Dirichlet boundary condition at the crevice mouth fixes the concentrations of the
species.
C i(x'0) 'C i
(216)
0
At the other boundary the fluxes caused by migration and diffusion must be equal and
opposite
K xC0 i(x'x 0 ) % MxC i(x'x 0 )' 0
(217)
This differential equation has the same form of solution as Case 10
C i(x) ' K1 e (ax) % K0
(225)
The final solution for this equation can be found by substituting in for the boundary
conditions and solving.
C i(x) ' &
Jwalls
hMx
Mx
%
K xJwalls x 0 Jwalls & Kx x
K xJwalls
x J
C0 &
&
e
% 0 walls
%
2
2
hMx
hMx
hMx
hMx
(226)
The values for the coefficients in terms of physical parameters of the crevice are given in
Table 34.
323
Parameter
Value
Kx
Di [m2/s]
Mx
-zFµi LN [m/s]
Q
Jwalls / h [A/m]
$
Ji [mol/m2-s]
Table 34. Coefficient Values for Case 11.
Substituting in all of the values yields the following numerical expression for the
concentration of each species.
C i(x) ' & 2.52@102 x & 1.94e &598x % 2.94
(227)
Numerical Solution with CREVICER for Case 11
CREVICER was configured to run a crevice with the conditions shown in Table 33.
The grid used had divisions every 100 µm in the x direction (101 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solution obtained by Equation 227 is shown in Figure 4.1.2.2(b). As can be seen in
Table 35 the quality of the fit is extremely good.
324
D.O.F.
P2
100
P2 = 4.59 x 10-7
Table 35. Goodness of fit for Case 11.
The form of the resulting concentration distribution is interesting. It exhibits a maximum
at x = 0.002 m. At deeper portions of the crevice the diffusive flux acts to counteract the
migration flux. Nearer the mouth the diffusive flux acts in concert with the migration flux to
remove Ni+2 from the crevice. At each point the net flux of current from the crevice at point x is
equal to the integral current from x to x0. This is shown in Figure 4.1.2.2(c).
The next case examines CREVICER’s ability to model time-transient problems.
328
4.1.3 Test Case Evaluating Time
The final area of verification for CREVICER is a time-transient solution.
4.1.3.1 Case 12 - Transient Diffusion of Chemical Species
The calculation engine which powers CREVICER solves two-dimensional, timetransient partial differential equations. This final test case is loosely based on Allaire’s[51]
example problem 16.1. That problem modeled the transient diffusion of heat from a heated bar
whose ends were held at a fixed temperature. This case solves the directly analogous problem
of a two-ended crevice filled with a concentrated electrolyte whose ends are suddenly held at
lower concentrations.
To define this situation a 1cm long crevice is initially filled with a homogeneous solution
and then the mouths are dropped to a lower concentration. These conditions are illustrated in
Figure 4.1.3.1(a). They correspond to a two-ended crevice 1cm long with a height of 10 µm,
filled with 1 M NaCl. At time t=0 the concentration of NaCl at both ends is lowered to 0 M
and held there. There is no generation inside the crevice, nor is there an electric field to cause
migration. These conditions have been converted to standard units and are summarized in Table
36.
329
Parameter
Value
1000 [mol/m3]
Ci0
1.31037 x 10-9 [m2/s]
DNa+
x0
10-2 [m]
h
10-5 [m]
Table 36. Summary of conditions for Case 12.
Analytic Solution for Case 12
The governing equation for this problem is the LaPlace Equation without generation but
including the first order terms. This equation was generated from the mass transport equation
and was developed in Section 2.3.1.3.
Kt
MC i
Mt
2
' K xL̃ C i
(228)
This can be expressed in one-dimensional cartesian coordinates.
h
MC i
Mt
' Dih
M2 C i
Mx 2
Where:
Ci
is the concentration of species i [mol/m3]
Di
is the diffusivity of species i [m2/s]
(229)
330
h
is the crevice height [m]
The initial condition is that the entire crevice is initially at the same concentration.
C i(x,t'0) ' C i
(230)
0
The two boundary conditions for the problem are the Dirichlet constraints imposed at
the two ends.
C i(x'0,t>0) ' 0
(231)
C i(x'x 0 ,t>0) ' 0
(232)
and
Equation 229 can be solved by directly integrating.
C i(x,t) '
4
1
(2n%1)2 B2 t
(2n%1)Bx
exp
&D
sin
j
2
B n'0 2n%1
x0
x
4C i
0
(233)
0
This solution is the summation of a series of exponential terms. For this test case the
summation was carried over the first ten terms. Substituting in for the boundary conditions from
Table 36 yields the following numerical representation.
331
4
C i(x,t) ' 1.27@103 j
n'0
1
exp &1.29@10&4 (2n%1)2 t sin 3.14@102 (2n%1)x
2n%1
(234)
Numerical Solution with CREVICER for Case 12
CREVICER was configured to run a crevice with the conditions shown in Table 36.
The grid used had divisions every 625 µm in the x direction (17 nodes along the x-axis).
A comparison of the numerical results obtained with CREVICER and the exact
numerical solutions obtained by Equation 234 is shown in Figure 4.1.3.1(b). The numerical data
agrees well with the analytic solution despite the relatively coarse gridding of only sixteen
elements along the x-axis.
334
4.2 Limitations of Model
In addition to the various limitations imposed by the simplifications used in producing
the CREVICER model, there are four separate problems that affect usage of the code. The
most minor and easily corrected problem is caused by the discretization of the crevice. An
additional difficulty, Peclet stability, can arise for spatial solutions if the first-order terms are
large compared to the second-order. Courant stability restricts the size of time steps that can be
used in temporal solutions. Finally, potential solutions can be difficult to find for certain
geometries and polarization curves.
4.2.1 Discretization Limitations
CREVICER approximates a crevice as a collection of elements and nodes. The field
variables are only solved at the nodes and a flat inclined plane is used to represent the value of
the field variable over each element. CREVICER finds an approximation of the true
distribution.
Coarse grids can be solved rapidly but may miss important details of the solution. This
is especially true in regions where steep gradients are present. Such areas occur near the mouth
of a crevice, especially if the conditions at that point are assumed to be those of the bulk
environment. While this may not be a good assumption - Evitts et al [60] and Walton[78] both
present data which suggests that in fact crevices influence a region of the bulk solution outside
the mouth - it is commonly used in modeling crevice corrosion.
335
Increasing the spatial resolution imparts a cost that can only be paid in terms of
additional computing time. The time required to solve one iteration of a crevice goes as the
number of nodes squared. As will be seen in subsection 4.2.3 decreasing average size of an
element also decreases the length of time that can be solved for an time step.
A coarse grid is only imprecise. The following two types of problems can produce
solutions which oscillate and are inaccurate.
4.2.2 Peclet Limitations
A commonly encountered problem in computational fluid dynamics is Peclet stability,
discussed in subsection 3.3.1.1. In that situation the problem arises when the convective flux is
large compared to the diffusive flux. Mathematically, the problem is caused when the first-order
terms of a partial differential equation are large compared to the second-order ones. Despite
the fact that convection is usually ignored in crevice corrosion an analogous situation arises in
modeling that phenomenon. Migration fluxes are also first-order and can cause a Peclet
problem.
Walton[10] describes a dimensionless grouping of the migration flux to the diffusional flux
that is the electrochemical analog to the Peclet number.
Pe '
ziFDiL̃Ns
RT
/
Di
)x
'
ziF)x L̃Ns
RT
(235)
336
When this term is greater than 2 the numerical method is unstable. An unstable problem
can only be made stable by refining the mesh (decreasing ∆x) or reducing the gradient of
solution potential that drives migration. Another approach to solving problems with large Peclet
numbers is to change the mathematical method. Upwinding is an approach that has been used
by other researchers[10, 48].
Peclet instabilities are a spatial problem. They affect the code both in both steady-state
and time-transient modes. Problems with the Courant number, discussed in the next subsection,
affect only the temporal portion of the code.
4.2.3 Courant Limitations
Explicit temporal solutions can have a problem with stability. The Courant number, r,
can be used to differentiate stable, oscillatory, and unstable solutions and was discussed in
subsection 3.3.2.1. The parameter is found by the formula below.
r (e) '
K x)t
)x 2 K t
Different values of r identify different regions of stability[51].
0 < r(e) < 1/4
Non-oscillatory and stable
1/4 < r(e) < 1/2
Spatially oscillartory and stable
1/2 < r(e)
Unstable
(236)
337
Halving the size of each element forces the length of the timestep to be quartered.
Because of the Courant component the computational penalty for increasing the resolution of
the mesh is quite high. The time for solving each iteration goes as n2. An additional factor of n2
arises if the number of time steps must be increased to reduce the length of each to retain
Courant stability.
This limitation does not affect implicit time approaches. The mode most commonly used
by CREVICER, Crank-Nicolson, has fewer problems than a fully explicit approach, but may
still be affected.
The last type of numerical problem that CREVICER can experience is related to the
discretization problem, but is caused by specific types of polarization curves.
4.2.4 dI/dE Stability Limitations
Although each element in the crevice model can corrode at a different rate, within each
element the behavior must be constant. CREVICER uses the average chemistry and potential
of each of the nodes to determine the corrosion rate for each element. This approach can cause
problems in modeling the potential distribution for materials whose polarization curves have
very high rates of change for current with respect to potential. Potential-type problems are
more sensitive to this issue than chemical ones because of the feedback from the current and
solution resistance into determining the potential distribution. Finding the potential distribution
inside a crevice is a search procedure to locate the potential distribution(s) that produce
338
currents which interact with the crevice geometry and conductivity that in turn generate the
original potential distribution.
The only remedies found in this dissertation was to decrease the average size of the
elements and to avoid modeling polarization curves with steep, narrow active noses.
4.2.5 Variable Coefficient-Induced Stability Limitations
The fact that the coefficients of the canonical equation (Equation 160, below) are
themselves functions of position may introduce instabilities into the numerical solution.
M
MM
M 1
MM
%
Kxy(x,y)
K x(x,y)
Mx
Mx
Mx 2
My
%
M 1
MM
M
MM
K y(x,y)
Kyx(x,y)
%
My 2
Mx
My
My
MM
MM
% Mx(x,y)
% My(x,y)
Mx
My
% P(x,y)M % Q(x,y) ' K t
(160)
MM
Mt
Section 8.3 of Allaire’s[51] development of Galerkin’s method for FEM, used in
CREVICER, assumes that the coefficients are variable, but are constant within each individual
element. An examination of a one-dimensional second-order differential equation without any
apparent first order terms highlights one potential problem with this approach.
M
MM
MM
K x(x)
' Kt
Mx
Mx
Mt
(237)
When the derivative is applied over the bracketed term a first-order term proportional
339
to the derivative of Kx appears.
K x(x)
M2 M
Mx 2
%
MK x(x) MM
MM
@
' Kt
Mx
Mx
Mt
(238)
Analogously to the Peclet problem discussed in Section 4.2.2 instabilities can occur if
the first-order term is large compared to the second-order. The ratio of the terms is:
Pe '
K x )(x))x
K x(x)
(239)
If this ratio exceeds 2 then the solution may oscillate. This type of instability may be
important for potential type problems since the variation in either κ or h (depending on the exact
formulation) may introduce an unexpected first-order term. A similar problem exists for
chemical transport since variations in D will produce an additional first-order term.
Summary
This chapter has presented three series of test cases that verify CREVICER’s abilities
in modeling crevice corrosion. Example problems for potential distribution, chemical transport
and time-transient solutions were solved and compared to analytic solutions. In all cases
CREVICER was able to replicate the analytic result. The example cases showed
CREVICER’s ability to operate under diverse conditions of: varying conductivity; two free
spatial dimensions; changes in a third dependent dimension; with various boundary conditions
and with time. These cases have verified CREVICER’s ability to fulfill the first goal of this
340
dissertation, to produce a versatile model that would be suitable to model the crevice behavior
of a variety of crevice and crack systems.
The next chapter uses CREVICER to examine one of the commonly observed features
of crevice corrosion, intermediate attack and meet the second goal of the dissertation.
341
Chapter 5: Intermediate Attack
OVERVIEW
This chapter uses the model that was developed and verified in the previous two
chapters to present a new theory, the Cathodic Focusing (CF) model to explain “Intermediate
Attack” (IA) in crevice corrosion. The CF model differs from the standard crevice models in
the literature in that in that it accounts for the effects of cathodic reactions occurring deep within
crevices. Although much more extensive experimental work would be required to gather a data
set which could be used to definitively prove if the model operates, this thesis establishes the
basis for the theory.
IA is the commonly observed phenomenon that corrosion damage in crevices is usually
concentrated near, but not exactly at, the mouth of the site. Section 5.1 discusses the
phenomenology of IA and defines the terms and questions to be answered.
Conceptually, there are several possible explanations for IA. Although the standard
CCS and IR* models do not explicitly address the problem of IA, minor modifications keeping
in the spirit of the models allow them to attempt to explain the problem. Section 5.2 addresses
the strengths and weaknesses of each model as applied to the problem of not only where does
a crevice start to corrode, but where does the corrosion end. This question is important
because a more complete understanding of the entire crevice corrosion process might lead to
342
better strategies for combating it.
Some background material on metal cation hydrolysis and the differences between
hydrolyzing metal ions that are generated electrochemically rather than chemically is presented
in Section 5.3. This material is needed to explain the counter intuitive effects predicted by the
CF model in Section 5.4.
Finally, the chapter ends by presenting the results of modeling IA with CREVICER
according to the IR*, modified CCS, and CF models for some hypothetical test cases.
Although the test cases do not represent any specific situation, they are all physically plausible
and illustrate the capabilities of CREVICER. CF is shown to be a plausible explanation for IA.
5.1 Phenomenology of Intermediate Attack
Intermediate attack describes the commonly observed condition in crevice corrosion
where the area nearest the crevice mouth is uncorroded, the next deepest area is heavily
attacked, and the deepest regions are paradoxically unaffected by the corrosion. This is
illustrated schematically in Figure 5.1.1.1(a) from Jones[49] This figure can be compared to the
SEM micrograph in Figure 5.1.1.1(b) which was taken of a 304 SS sample which had been
pressed face down onto a Teflon crevice former, held potentiostatically at 0.05 V vs SCE in a
solution of 17 mM NaCl and tightened to a mean crevice gap of 4 µm. The corroded region
(lighter colored area) occurs neither at the “mouth” (outside edge of sample) nor at the “base”
343
(center of sample). Rather, it occurs only at intermediate depths. Using the terminology of
Figure 5.1.1.1(c) there is an unattacked region of width xinit from the mouth of the crevice to
the first point of attack. The size of the corroded region can be expressed by its width, xattack
and depth, dattack.
Most previous models for the initiation crevice corrosion have concerned themselves
with determining, for a given material, environment, and geometry the depth within a crevice
where attack will occur and the incubation time for that attack to start. Those are two
important parameters for making engineering predictions about the suitability of a particular
design for use in an environment. However, these approaches uniformly failed to address a
peculiar quirk of crevice corrosion, the fact that it often fails to occur at the deepest points in the
crevice.
Understanding not only what processes promote corrosion in a crevice but also which
ones might retard it may yield insights into better design to prevent localized attack. The next
section addresses how the standard theories of CCS and IR* can be modified to predict IA.
347
5.2 Standard Theories Applied to IA
The standard theories for crevice corrosion may not explicitly address IA, but some
minor modifications to the theories can give some insight into the IA process. If the IA is the
result of a steady-state process, there must be some corrosion-retarding force to counteract the
corrosion-promoting one that is the focus of each theory. In the case of CCS, acidification and
chloride enrichment is the promoting process. In IR* it is destabilization of the protective oxide
by decreased anodic overpotential. In both cases a reasonable offsetting force is decreasing
anodic overpotential which decreases the driving force for dissolution. This protective
mechanism is also present for crevices corroding according to the IR* model once the potential
is on the open circuit side of the active nose.
Another possibility is that the observed IA is only a temporal effect. The differing
depths of corrosion might be the product of a moving corrosion front and that the structure at
long times will be entirely different.
Each of these theories has limitations when applied to modeling IA. Later in the
chapter, CF will be presented as a possible explanation of IA. It proposes that the chemical
effects of small amounts of cathodic current on pH retard corrosion.
5.2.1 CCS Theory Applied to IA
Essentially the CCS theory for the initiation of crevice corrosion proposes that a crevice
348
acts as a barrier to the mass transport of metal cations out of the occluded site. The resulting
accumulation of positively charged metal cations causes the ingress of rapidly moving,
negatively charged anions, such as chloride. The metal cations also hydrolyze in solution,
producing hydronium and lowering the local pH. As will be stressed later in this chapter, an
important but implicit assumption in this theory is that the cathodic reactions needed to balance
the dissolution reactions occur outside of the crevice.
CCS holds that it is the increasing acidity of the crevice environment that causes the
increased corrosion rate with the crevice. In its original formulation, the theory assumes that
potential has an insignificant role in promoting crevice corrosion.
A theory which uses acidification as the only force affecting corrosion rate cannot
predict IA. Such a theory must predict monotonically decreasing pH with greater depth from
the mouth to the base of a crevice and accordingly, monotonically increasing corrosion rate. To
account for IA, some offsetting force must be added.
Potential drop within the crevice is a reasonable candidate. The flow of a net anodic
current from the interior of the crevice to the exterior where the supporting cathodic reactions
are occurring must produce a potential drop. The magnitude of the drop depends on the
electrical resistance of the crevice and the size of the current. The resistance of the crevice
depends on geometry and solution conductivity. Crevices by definition are tight and combined
with the limited conductivity of even highly concentrated solutions, even small currents can
produce appreciable potential drops on the order of hundreds of millivolts[25].
This potential drop inside a crevice will decrease the driving force for dissolution.
349
Indeed for all metals except active/passive ones, potential drop inside a crevice is a protective
factor. These competing processes, increased solution aggressiveness and decreased driving
force are shown in Figure 5.2.1(a). This figure is illustrative only and is meant to depict the
processes rather than any particular situation. Part (a) is a diagram showing the orientation of
the crevice and the location of three points within it. Part (b) shows the pH, a measure of
solution aggressiveness, and potential within the crevice. With increasing depth in the crevice
the pH first drops, then remains at a constant low level. The potential drops continuously
throughout the crevice, even after the solution saturates and no longer drops in pH. Part (c)
shows two polarization curves, one for the high pH, non-aggressive conditions near the mouth,
and the other for the acidic, highly aggressive conditions at the middle and base of the crevice.
Using the pH and potential information from part (b) the conditions at the three marked points
within the crevice are marked on the appropriate polarization curve at the correct potential.
Part (d) represents the resulting current density along the crevice walls. Starting at the mouth
(x=0) and going into the crevice, initially the increasing solution aggressiveness more than offsets
the decreased driving force. Once the rate of increase of solution aggressiveness drops off
however the reduced driving force begins to decrease the corrosion rate. One factor to note is
that IR drop cannot lower the potential below the open circuit potential in the relevant
environment. IR is thus a restoring force that allows the metal potential to approach its steadystate value in the absence of polarization.
The strength of this theory is that it is only a minor modification of a widely accepted
model for the initiation of crevice corrosion. Using IR to “turn off” corrosion keeps with the
350
spirit of CCS that potential is unimportant in assisting crevice corrosion. Rather IR drop is a
counterbalancing force which is overwhelmed in the shallow parts of the crevice by the increase
in solution aggressiveness, but whose effects can appear once the solution composition
stabilizes.
There are several weaknesses to the theory however. The most important is that IR
drop cannot lower the potential below the open circuit potential. The corrosion rate at open
circuit in highly aggressive environments can be significant. At open circuit it is only the net
current which is zero; the dissolution reactions can be significant. The tendency of the metal
potential to approach open circuit with increased depth is also problematic in that it begins to
violate one of the premises of the CCS model - the assumption that the cathodic reactions
occur outside the crevice. As the potential approaches open circuit a greater and greater
proportion of the required cathodic current is met locally. The effect of these local cathodic
reactions will be discussed extensively in sections 5.3 and 5.4.
352
5.2.2 IR* Theory applied to IA
Essentially the IR* theory claims that a crevice acts as a barrier to electrical transport.
A net anodic current flowing from the crevice across the resistive crevice solution causes the
potential in the crevice to drop towards its open circuit value. For active-passive metals held in
their passive region this decrease in potential can destabilize the protective oxide film and cause
in increase in corrosion rate. The IR* theory claims that potential is the dominant factor in
determining crevice corrosion.
Although it has not typically been used to predict IA, IR* can predict it. Once the
potential drops beyond the peak of the active nose, further drops in potential decrease the
corrosion rate, for the same reasons as explained in the previous section. The fact that for
active-passive metals over some potential ranges decreases in potential increase the corrosion
rate is a quirk of kinetics caused by the loss of the metal oxide. The two forces involved in
creating IA according to the IR* model are the promoting force of oxide destabilization and the
retarding force of decreased overpotential.
Figure 5.2.2(a) shows how the IR* model can predict IA. The figure is illustrative only
and is meant to depict the processes rather than any particular situation. Part (a) is a diagram
showing the orientation of the crevice and the location of three points within it. Anodic current is
shown arising on the crevice walls and flowing across the solution resistance within the crevice.
The circuit is completed on the boldly exposed surface where cathodic reactions consume the
electrons generated inside the crevice. Part (b) shows the potential within the crevice. The
353
potential drops continuously throughout the crevice. Part (c) shows the operative polarization
curve. The potentials at different points within the crevice are marked on it. At the mouth the
potential is held in the passive region. IR drop causes the potential at the middle of the crevice
to drop to the active nose. Further drop causes the potential at the base to approach the open
circuit value. Part (d) represents the resulting current density along the crevice walls. Starting at
the mouth (x=0) and going into the crevice, the corrosion rate remains at the passive current
density as long as the potential remains above the primary passivation potential. Once sufficient
potential drop has occurred to lower the potential into the active nose, the corrosion rate
increases. Further drop lowers the potential across the active nose and begins to decrease the
corrosion rate. Once the potential reaches the open circuit value the net current is zero and no
further drop occurs.
The strength of this theory is that it falls naturally from the published IR* theory. Xu and
Pickering[88] illustrate the process in depictions of IR but do not present information about the
trailing off process. There are two main limitations however. The first is that this theory only
applies to active-passive metals, and cannot be universally applied to all corrosion systems. The
second is identical to the main limitation of the CCS theory, the corrosion rate at open circuit
can be considerable.
355
5.2.3 IA as a Transient Phenomenon
It is possible that observed IA is not the result of a steady-state process. Instead it
could just be the trace of the early stages of attack. If crevice corrosion is nucleated at some
heterogeneous site, it may only propagate across the crevice at some finite rate.
5.3 Hydrolysis Reactions
Subsection 2.3.2 discussed the hydrolysis of metal cations and the methods used to
determine the change in pH for a given addition of metal cations. When metal cations are
introduced into aqueous solution they have a tendency to form metal hydroxides. This was
shown in Equation 95 from subsection 2.3.2.3.2.1 repeated below.
(xz&y)%
xM z% % yOH & º Mx(OH)y
(95)
By consuming hydroxyl ions the metal cations lower the pH of the solution. As was
discussed in Chapter 2, it is a relatively straightforward procedure to find the resulting pH for a
given addition of metal cations. Processes like the dissolution of a metal salt or the anodic
dissolution of a metal can create these metal cations.
There is one critical difference between adding metal cations through the chemical
dissolution of a metal salt and the electrochemical dissolution of a metal. The cations in the salt
are already ionized, whereas the reduced atoms of a metal must be oxidized to become soluble.
The electrons that are stripped from the atoms must be consumed in a reduction reaction at
356
some location. In aqueous solutions the common cathodic reactions are the Hydrogen Evolution
and Oxygen Reduction Reactions. These were first presented as Equations 3 and 4.
2 H % % 2 e & X H2
(3)
2 H2 O % O2 % 4 e & X 4 OH &
(4)
Each of these reactions generates hydroxyl ions that have a tendency to raise the pH.
When metal salts are dissolved the only force on the pH of the solution acts to lower it. When a
metal is electrochemically dissolved there are counterbalancing forces for acidification and
alkalinization. Each generated metal cation consumes some pH-dependent number of hydroxyl
ions. If the cathodic reactions required to support the dissolution of that cation are HER or
ORR, then one hydroxyl is generated per electron released, independent of pH.
Counterintuitively, it is the alkalinization process that dominates in almost all cases. An
examination of the distribution of hydrolysis products for chromium, as shown in Figure 5.3(a),
yields insight into the situation.
At low pH’s, less than 3, there are few hydoxyl ions available to form metal
hydroxides. The dominant Cr species is Cr+3 - more than 90% of the chromium ions have no
attached hydroxyl ions. The hydrolysis of a single trivalent chromium consumes less than one
hydroxyl on average. However, the cathodic reactions required to produce that ion from a
chromium atom generate three hydroxyl ions. The net result is that electrochemical dissolution
of chromium at low pH’s alkalinizes the solution.
357
As the pH rises each bare chromium ion hydrolyzes to a greater and greater extent. Fig
5.3(a) shows the number of hydroxyl ions consumed per chromium cation. Three hydroxyl ions
are generated by cathodic reactions to support the dissolution of each cation. The only point at
which the electrochemical dissolution of chromium will not have a tendency to affect the pH is
when the number of hydroxyl ions consumed is equal to the number generated. For chromium,
this occurs at a pH of 9.6. At pH’s below this fewer hydroxyl ions are consumed that generated
and the solution will become more alkaline. At pH’s above this value more are consumed than
produced and the solution acidifies.
The trace of the number of hydroxyl ions consumed per cation in Figure 5.3(a) was
generated by summing the products of the fraction of each species times the number of hydroxyl
ions consumed per cation. An alternate method of finding the equilibrium pH for the dissolution
of an element which only forms mononuclear hydrolysis products and whose cation has valence
n is to find the intersection of the curves for the n-1 and n+1 th order hydrolysis products. No
such graphical technique is possible when polynuclear species must also be considered.
Table 37 shows the equilibrium pH’s for several common cations.
358
Cation
Valence
Equilibrium pH
Al+3
3
6.7
Cr+3
3
9.6
Fe+2
2
10.7
Cu+2
2
10.0
Table 37. The equilibrium pH’s obtained when various metals are electrochemically dissolved
in neutral water. The pH’s are obtained by assuming that only ions of the given valence are
produced by dissolution and that only mononuclear products form.
It is interesting to note that Cr, which is considered a stronger hydrolyzer than Al, has a
higher equilibrium pH. This is because the equilibrium pH depends on the 2nd, 3rd, and 4th
order products. To achieve the equilibrium pH an ion must be hydrolyzed, on average, to the
same degree as the valence of the ion. At the equilibrium pH for a trivalent ion, such as Cr+3 or
Al+3, essentially none of the ions remain at only the first hydrolysis product. The minimum pH
that can be reached by the addition of a metal salt depends on the first hydrolysis coefficient.
The same kind of analysis can be applied to alloys as well as pure elements. Figure
5.3(b) shows the number of hydroxyl ions consumed per “average cation” of the stainless steel
304 with the composition shown in Table 38. An average ion resulting from the dissolution of
304 has a valence of 2.2. The mix of ions produced by that dissolution consumes on average
2.2 hydroxyl ion per metal cation at a pH of 10.6.
359
Element
Weight %
Atomic %
Fe
69.75%
69.06%
Cr
19.00%
20.21%
Ni
9.25%
8.72%
Mn
2.00%
2.01%
Table 38. Composition of stainless steel 304. The composition was taken from Davis[#181].
Silicon, Phosphorus and Sulfur are not included.
This alkalinization when the material corrodes locally has been observed by Buchheit et
al[34] in experiments on isolated microcrevices and shaving experiments with high surface-tovolume ratios.
Crevices are usually thought of as being held anodically and as a result having the
majority of the anodic reactions occur inside the crevice and the bulk of necessary cathodic on
the boldly exposed surface. Were this absolutely true, that no cathodic reactions occurred
inside the crevice then there would be no alkalinizing force and crevices pH’s would drop
unfettered. It is possible to use the analysis of the previous section to calculate the equilibrium
pH when various fractions of the required cathodic current are met locally. This calculation is
shown in Figure 5.3(c). For 304, if only 10% of the cathodic current is met locally the
equilibrium pH is 5. For pure Fe, if 10% of the required electrons are consumed locally the pH
is 9.2. Both alloys have an equilibrium pH of near 10.7 if all of the cathodic current is filled
through local reactions.
At a material’s open circuit potential, all of the required current is being met locally.
360
Crevice corrosion generates large amounts of current. If the resulting potential drop depolarizes
parts of the crevice to the open circuit potential, then those depolarized regions can be
expected to become very alkaline.
Providing even small amounts (10%) of the required cathodic current locally can
dramatically limit the pH drop caused by metal cation hydrolysis. Meeting all of the current
locally, as occurs at open circuit, can cause a pH rise to quite alkaline values.
In comparison, Figure 5.3(c) shows that if the solution resulting from the dissolution of
304 is in equilibrium at pH=2, then only 0.09% of the required cathodic current is being met
locally. The vast majority of the cathodic current is being supplied from reactions occurring far
away in solution where the alkalinizing effect does not affect the chemistry at the dissolution site.
364
5.4 Cathodic Focusing Theory of IA
Undoubtedly both potential and chemistry effects are involved in crevice corrosion.
Some systems may be dominated by one effect or the other, but both CCS and IR* ignore the
chemical effects of cathodic reactions occurring within the crevice. Section 5.3 illustrated that
even small amounts of cathodic current can have large effects on the equilibrium pH. The CF
theory proposes that potential drop in the crevice lowers the potential to near the open circuit
value. Near the open circuit value the dissolution current is almost balanced by locally occurring
cathodic reactions and this causes the pH to rise. It is this rise in pH that protects the metal
deep in the crevice and causes IA.
Figure 5.4.1(a) shows this process. This figure is illustrative only and is meant to depict
the processes rather than any particular situation. Part (a) is a diagram showing the orientation
of the crevice and the location of three points within it. Part (b) shows the pH, a measure of
solution aggressiveness, and potential within the crevice. With increasing depth in the crevice
the pH first drops, then rises in the regions of the crevice which rest near their open circuit
values. The potential drops throughout the crevice, unless changes in chemistry cause the
deepest parts of the crevice to be polarized cathodically. This extreme is not shown in the
diagram, as it is unnecessary to illustrate the overall process. Part (c) shows two polarization
curves, one for the high pH, non-aggressive conditions near the mouth and base, and the other
for the acidic, highly aggressive conditions at the middle of the crevice. Using the pH and
potential information from part (b) the conditions at the three marked points within the crevice
365
are marked on the appropriate polarization curve at the correct potential. Part (d) represents
the resulting current density along the crevice walls. Starting at the mouth (x=0) and going into
the crevice, initially the increasing solution aggressiveness more than offsets the decreased
driving force. Once the potential is low enough to cause appreciable amounts of the required
cathodic current to be met locally, the pH rises again and the corrosion rate rapidly drops off
because both chemistry and potential are acting as retarding forces. One factor to note is that
while IR drop alone cannot lower the potential below the open circuit potential in the relevant
environment, changes in chemistry can polarize the sample either anodically or cathodically.
This theory allows for corrosion to be totally stopped within the crevice. For many
metals, while the corrosion rates in highly acidic solutions can be appreciable even at open
circuit, in neutral to alkaline environments they are negligible. This theory also fits with the
observations of Alavi and Cottis[93] and Guo[94] who saw pH rises in deep crevices and the
recommendations of Turnbull[95] who suggests using the alkalinization as a preventative measure
by stimulating the cathodic reaction in the crevice.
367
5.5 Modelling of IA by IR*, CCS and CF by CREVICER
CREVICER was used as a platform to model crevice corrosion under different sets of
assumptions. It is capable of accounting for or disregarding any variables as needed. This
section presents results of crevice corrosion modeling by each the two prevalent theories with
an eye towards explaining intermediate attack. It will end by modeling IA by the Cathodic
Focusing model of crevice corrosion.
5.5.1 IA by the IR* Model
As was discussed in section 5.2 the IR* theory for the initiation of crevice corrosion in
active/passive metals can explain intermediate attack. Depolarization of the crevice by resistive
potential drop can lower the potential of portions of a crevice thus destabilizing the protective
oxide film and initiating rapid attack. Further decreases in potential reduce the driving force for
initiation and lower the dissolution rate to icorr, the corrosion rate at the open circuit value of the
relevant environment.
CREVICER can be used to model such a situation. Figure 5.5.1(a) represents a onedimensional crevice held potentiostatically at the mouth with one active/passive flank. The length
of the crevice is x0 and the separation of the two parallel sides is h. The crevice is filled with a
uniformly conducting electrolyte of composition 0.5 M sodium sulfate + 0.5 M sulfuric acid.
This case was drawn from the work of Walton[78] modeled in CREVICER using the physical
parameters of Table 39. The final physical parameter used was E-I relationship for the material
368
in this environment.
Parameter
Value
x
1 [cm]
h
0.5 [mm]
w
1 [cm]
κ
2.67085 [Ω-m]-1
φ0
0.71 [V SHE]
Table 39. The parameters used for modelling the IA by the IR* model. These values are the
exact ones used to define the size and character of the crevice illustrated in Figure 5.5.1(a). The
only remaining piece needed is the polarization curve shown in Figure 5.5.1(b) and defined in
Table 40. CREVICER uses the geometrical, chemical and electrochemical properties of the
crevice to find the potential and current distributions within the crevice. These are shown in
Figure 5.5.1(c)
The exact relationship used was the tenth-order polynomial given in Equation 240 that
was fit to the experimental data of Valdes-Moldon used by by Walton[78]. The raw data and the
fit are shown in Figure 5.5.1(b). The parameters of the polynomial are given in Table 40.
a 0 % a 1E % a 2E 2 % a 3E 3 % a 4E 4 % a 5E 5 % a 6E 6 % a 7E 7 % a 8E 8 % a 9E 9 % a 10E 10
i ' 10
(240)
369
Parameter
Value
Parameter
Value
a0
2.34608
a6
275.231
a1
0.753641
a7
96.0202
a2
-1.20439 a8
-428.904
a3
37.838
a9
a4
-69.4211 a10
a5
-137.304
284.36
-59.7865
Table 40. The values for the coefficients of the tenth-order polynomial used to fit the
polarization curve of Valdes-Moldon.
The use of a tenth-order polynomial to fit the logarithm of the experimental data allows
a good representation of the data. It captures the polarization curve in a compact, continuous
format.
The physical data on the crevice geometry, the solution conductivity, and the material
behavior can be used to find the steady-state potential distribution. The resulting distributions of
potential and current density along the crevice flank are shown in Figure 5.5.1(c).
The point of greatest attack is predicted to occur 0.6 mm from the mouth. Neither the
model nor the physical system it is based upon experience chemistry changes, or by extension
polarization curve shifts. The only driving force for corrosion is the varying potential within the
crevice.
370
The other major competing theory for the initiation of crevice corrosion is the CCS. As
will be seen in the next subsection, 5.5.2, the model cannot account for IA. Modifying the
process to account for the effects of potential variations can allow it to model IA and will be
shown in subsection 5.2.3.
374
5.5.2 CCS Model
The CCS model in its purest form is not capable of modeling intermediate attack. If no
potential variations are allowed to occur then the only force which can affect the corrosion rate
in the crevice is the increasing aggressiveness of the electrolyte. Without a counterbalancing
force of some kind to slow corrosion, the rate of attack can only increase with increasing depth
into the crevice. This phenomenon was illustrated by using CREVICER. Figure 5.5.2(a) shows
the simple, one-dimensional, slot-shaped geometry used in subsection 5.5.1. It has length x0
and gap h. It is filled with a 0.6 M NaCl solution with conductivity 7.58335 [Ω-m]-1. These
values are summarized in Table 41. The polarization curves used to represent the material
behavior are shown in Figure 5.5.2(b). The set of polarization curves is continuous. The
behaviors at pH = 1 and pH = 7 are defined and the log of the current at other pH’s is
interpolated linearly between those two values. Traces of the interpolated polarization curves at
various pH’s are shown. Note that since for this case no potential drop is allowed to occur
within the crevice the potential is uniformly that of the mouth, 0.05 V. Essentially, only a single
point on each polarization curve is used.
375
Parameter
Value
xo
1 [cm]
h
4 [µm]
w
1 [cm]
κ
7.58335 [Ω-m]-1
φ0
0.05 [V]
Table 41. The parameters used for modelling according to the CCS model. These values are
the exact ones used to define the size and character of the crevice illustrated in Figure 5.5.2(a).
The only remaining piece needed is the polarization curve shown in Figure 5.5.2(b).
CREVICER uses the geometrical, chemical and electrochemical properties of the crevice to
find the potential and current distributions within the crevice. These are shown in Figure
5.5.2(c)
Figures 5.5.2(c) shows the pH distribution within the crevice at various times. Since
there are no potential variations, the pH drops uniformly and evenly except near the mouth
where transport of chemical species out of the crevice keeps the pH more neutral than what
can be achieved at greater depths. This pH distribution and the fixed potential can be used to
find the corrosion rate along the crevice flanks at various times. This is shown in 5.5.2(d).
The corrosion rate inside the crevice is constantly increasing with greater depth. It is
only mitigated near the mouth because the close proximity of the bulk solution allows transport
which limits the pH drop.
The CCS model was originally only designed to predict the initiation of crevice
corrosion. It is not meant as a criticism to point out that is unable to model IA which it was
376
never intended to do. Extending the theory by accounting for the effects of potential drop
decreasing the overpotential for anodic dissolution can modify the theory to account for IA.
This is done in the next subsection.
381
5.5.3 IA by the CCS model
Accounting for the effects of potential drop provides the CCS model with the
counterbalancing force that reduces the corrosion rate and can be played against the corrosion
promoting force of acidification to produce IA. For a Tafel-like metal reducing the driving force
slows the corrosion rate. IA can be generated if attack is retarded at the mouth due to
insufficiently aggressive chemistry, promoted in the interior due to adequate driving force and
chemistry, and retarded near the base by a lack of driving force.
This case is modeled by CREVICER with the following conditions. Figure 5.5.3(a)
shows the same geometry that was used in the preceding subsections. Once again the length of
the crevice is x0 and the gap is h. It is initially filled again with 0.3 M NaCl, but this time the
conductivity of 3.791675 [Ω-m]-1 plays an important role by affecting the corrosion rate. These
physical parameters are shown in Table 42. The same set of polarization curves are used as in
5.5.2. Accounting for potential drop brings the entire curves to bear rather than just the 0.05 V
points. These curves are repeated in Figure 5.5.3(b).
382
Parameter
Value
xo
1 cm
h
4 µm
w
1 cm
κ
3.791675 [Ω-m]-1
φ0
0.05 V
Table 42. The parameters used for modeling according to the CCS model. These values are
the exact ones used to define the size and character of the crevice illustrated in Figure 5.5.3(a).
The only remaining piece needed are the polarization curves shown in Figure 5.5.3(b).
CREVICER uses the geometrical, chemical and electrochemical properties of the crevice to
find the potential and current distributions within the crevice. These are shown in Figure
5.5.3(c).
CREVICER produces information about the changing potential and pH distributions
within the crevice. These are shown in Figures 5.5.3(c) and (d). Figure 5.5.3(c) shows the
potential distribution within the crevice at various times. Initially the crevice is filled with 0.3 M
NaCl at a pH of 7. The combination of high conductivity and extremely low current generation
because of the neutral pH causes a nearly flat potential profile within the crevice. The
subsequent corrosion rate and release of the metal cations is nearly equal within the crevice.
Consequently, the entire crevice drops in pH nearly uniformly. This is seen in the t = 1 s line on
Figure 5.5.3(d).
This change in chemistry affects the potential distributions at later times. The minor
effect of these additional ions on increasing conductivity is more than overcome by the
383
exponential increase in current with decreasing pH and a significant potential distribution
appears with in the crevice by time t = 8 s. Once a significant potential distribution appears the
generation rate within the crevice is no longer equal. More corrosion occurs (and more metal
cations are released) at the most anodic potentials near the mouth, a process that is only limited
by the rapid transport of ions out of the crevice at the same location. This variable rate of
corrosion results in an uneven distribution of pH as seen in Figure 5.5.3(d) at times t >= 8 s.
The information in Figures 5.5.3(c) and (d) can be combined to find the corrosion rate
of the crevice at each point within the crevice. These data is presented in Figure 5.5.3(e). It
shows the transition from nearly uniform corrosion initially within the crevice to intermediate
attack where the corrosion rate peaks near, but not at, the mouth of the crevice.
An alternate method of presenting the information about the potential, pH and corrosion
rate within the crevice is Figure 5.5.3(f). It combines all of the information from Figures
5.5.3(c)-(e), but the position information is now implicit by the location of each data point along
the curve. The lowest potential points are deepest in the crevice. The information forms a quasipolarization curve. It records the current information from a potential sweep of a single material
in an electrolyte of varying composition.
Neither of the models for IA by CCS nor CCSIA have included the chemical effects of
the cathodic reactions. The next model differs from the previous two only in that it produces
hydroxyl along with any cathodic current.
390
5.5.4 IA by the CF Model
The CF model fully accounts for the electrical and chemical behavior of a crevice.
When modeling a Tafel-like material, the driving force for increased dissolution is greater
solution aggressiveness. The two counterbalancing forces that turn off corrosion are decreasing
driving force and alkalinization of the crevice depths. This alkalinization occurs by the
mechanism discussed in section 5.3 and the overall theory was discussed in section 5.4.
This case is modeled by CREVICER with the following conditions. Figure 5.5.4(a)
shows the same geometry that was used in the preceding subsections. Once again the length of
the crevice is x0 and the gap is h. It is initially filled again with 0.3 M NaCl, but this time the
conductivity of 3.791675 [Ω-m]-1 plays an important role by affecting the corrosion rate. These
physical parameters are shown in Table 43. The same set of polarization curves are used as in
5.5.2. Accounting for potential drop brings the entire curves to bear rather than just the 0.05 V
points. These curves are repeated in Figure 5.5.4(b)
391
Parameter
Value
xo
1 cm
h
4 µm
w
1 cm
κ
3.791675 [Ω-m]-1
φ0
0.05 V
Table 43. The parameters used for modeling according to the CCS model. These values are
the exact ones used to define the size and character of the crevice illustrated in Figure 5.5.3(a).
The only remaining piece needed are the polarization curves shown in Figure 5.5.3(b).
CREVICER uses the geometrical, chemical and electrochemical properties of the crevice to
find the potential and current distributions within the crevice. These are shown in Figure
5.5.3(c).
CREVICER produces information about the changing potential and pH distributions
within the crevice. These are shown in Figures 5.5.4(c) and (d). Figure 5.5.4(c) shows the
potential distribution within the crevice at various times. Initially the crevice is filled with 0.3 M
NaCl at a pH of 7. The combination of high conductivity and extremely low current generation
because of the neutral pH causes a nearly flat potential profile within the crevice. The
subsequent corrosion rate and release of the metal cations is nearly equal within the crevice.
Consequently, the entire crevice drops in pH nearly uniformly. This is seen in the t = 1 s line on
Figure 5.5.4(d).
This change in chemistry affects the potential distributions at later times. The minor
effect of these additional ions on increasing conductivity is more than overcome by the
392
exponential increase in current with decreasing pH and a significant potential distribution
appears with in the crevice by time t = 8 s. Once a significant potential distribution appears the
generation rate within the crevice is no longer equal. More corrosion occurs (and more metal
cations are released) at the most anodic potentials near the mouth, a process that is only limited
by the rapid transport of ions out of the crevice at the same location. This variable rate of
corrosion results in an uneven distribution of pH as seen in Figure 5.5.4(d) at times t >= 8 s.
A third phase in the crevicing process occurs once the solution becomes aggressive
enough to cause adequate current to depolarize the base of the crevice to values near the open
circuit potential. As can be seen in Figure 5.5.4(c) this starts to occur at time t = 40 s. Near the
open circuit potential in the relevant environment OH-’s are produced locally. This first
mitigates, then reverses, the acidification of the crevice. This can be seen in Figure 5.5.4(d) at
times t >= 40 s.
The information in Figures 5.5.4(c) and (d) can be combined to find the corrosion rate
of the crevice at each point within the crevice. This data is presented in Figure 5.5.4(e). It
shows the transition from nearly uniform corrosion initially within the crevice to intermediate
attack where the corrosion rate peaks near, but not at, the mouth of the crevice. When
compared to Figures 5.5.2(e) and 5.5.3(e) the degree of protection afforded the base of the
crevice becomes apparent.
An alternate method of presenting the information about the potential, pH and corrosion
rate within the crevice is Figure 5.5.4(f). It combines all of the information from Figures
5.5.4(c)-(e), but the position information is now implicit by the location of each data point along
393
the curve. The lowest potential points are deepest in the crevice. The information forms a quasipolarization curve. It records the current information from a potential sweep of a single material
in an electrolyte of varying composition. The dramatic slowing of corrosion rates caused by the
alkalinization of the crevice base is immediately obvious on this plot.
Another useful plot is a representation of the ration of anodic to cathodic current at
each point in the crevice. This is shown in Figure 5.5.4(g). Areas with ratios equal to 1 are at
the open circuit potential. Those with ratios > 1 are cathodically polarized. This can occur
because the local open circuit potential rises with pH.
The CF model can produce dramatically different rates of corrosion by alkalinizing the
base of a crevice. The model fully accounts for the generation of chemical species. Any crevice
that depolarizes to the open circuit potential will have a tendency to rise in pH in those regions.
This tendency can only be overcome by transport of acidity from the intermediate regions to the
depths of the crevice. In Figure 5.5.4(d) the movement of the acidity/alkalinity interface to
deeper depths with increasing time showed this process. Because current densities at the open
circuit are lower than those with higher driving force the areal production of acidity near the
mouth must be higher than the areal production of alkalinity near the base. This suggests that
changing the area ratio of the acidity producing areas to the alkalinity producing ones will shift
the motion of the acidity/alkalinity interface.
Figure 5.5.4(h) shows the pH versus position data at several times for a crevice that
differs from the one defined in Table 43 only in that it is 5-cm long instead of 1 cm. The
increased length of the crevice provides more crevice area that corrodes at the open circuit
394
potential and thus generates alkalinity. This increase in area more than compensates for the low
specific generation of hydroxyl ions and allows the alkaline region to expand at the expense of
the acidic region. Compare these results to Figure 5.5.4(d), which was generated for a 1-cm
long crevice, which shows the alkaline region shrinking.
Summary
This chapter has presented several models of crevice corrosion that were run under
CREVICER to test their suitability for modeling IA. The CCS model was unable to predict IA.
Both the IR* and CCS/IA models were able to produce some degree of differential corrosion
rates that peaked at intermediate depths by using potential drop to turn off the corrosion rate.
Neither model was able to produce as great a differential as the CF model. The CF model
alone fully accounts for the electrical and chemical processes occurring inside crevices.
Intermediate attack in crevice corrosion can only result from the interplay of at least one
corrosion-promoting and one corrosion-retarding force. An explanation of intermediate attack
must properly account for both forces. This understanding opens the possibility of adjusting the
balance between the forces to favor the corrosion retarding one and prevent crevice corrosion
entirely. The concepts of the CF model can also be applied to environmental cracks and
suggest a relationship between crack length and crack-tip pH.
403
Chapter 6: Conclusions
The two goals of this dissertation were to develop a broad-based code for the
modeling of crevice corrosion that would be adaptable enough to serve as a platform for a
variety of future modeling efforts and to use that code to investigate the phenomenon of IA.
CREVICER is a two-dimensional(+) FEM code for modeling the electrochemical
conditions that arise inside occluded sites. It models mass transport by migration and diffusion
and maintains charge neutrality and chemical equilibrium. The boundary conditions can be
programmed as free-form curves and can be sensitive to potential, chemical composition,
temperature and pressure. This range of applicability allows the code to be used to model the
chemical behavior of any two-dimensional crack or crevice.
This versatility was achieved through the use of OOD. Constructing the code as a
collection of objects allows easy revision of modification of individual portions. CREVICER
can act as a basis for future models that refine individual areas of the code. Many of these
possible improvements are discussed in Chapter 7.
Despite CREVICER’s overall versatility, the code has some limitations. It is restricted
in the kinds of polarization curves it can utilize, cannot account for shape changes, and may not
be properly accounting for the diffusion potential. Subsection 4.2.4 presented the difficulties
CREVICER encounters in finding potential distributions for materials with sharp, narrow active
noses. CREVICER depends on an outside mesher to create the elements and nodes that define
the crevice. This cannot be done as the code runs so a model cannot automatically adjust its
404
shape as corrosion or plating occurs. Finally, the diffusion potential is not be perfectly integrated
into the code. Its effects are included in transport but not in generation or the stability checks.
CREVICER was used to model crevice corrosion by the IR*, CCS, CCS/IA and CF
models in order to test their suitability for modeling IA in crevice corrosion. IA can only occur if
there are at least two opposing forces operating on the crevice. The CCS model only supplies a
single corrosion enhancing force, acidification, and cannot model IA. The CCS/IA model adds
the effects of potential drop and uses the resulting reduction in driving force to arrest corrosion
in the crevice depths. The IR* model includes the ability to model IA in its original form. The
potential drop which depolarizes an active/passive metal into its active region can also bring
parts of the crevice to the open circuit potential. Both of these two approaches ignore the
chemical effects of cathodic reactions in the crevice. Common cathodic reactions produce one
hydroxyl per electron consumed. The CF model accounts for these cathodic reactions and
predicts alkalinization at the most occluded portions of an occluded region. This alkalinization
can be a second force for retarding corrosion.
The CF model, by its explanation of the retarding force against crevice corrosion,
presents the possibility of strengthening that retarding force and stopping crevice corrosion
entirely. Section 5.5.4 showed that crevice length can have a marked effect on the size and
stability of any potential alkaline region. Other mechanisms to increase the rate of hydroxyl ion
production include adding cathodic catalysts, increasing the supply of a reducible, hydroxylgenerating ion like ozone or diatomic oxygen, or driving the cathodic reactions with a separate
embedded and powered cathode.
405
406
Chapter 7: Future Work
The CREVICER code is meant to act as a platform on which later models can be built.
Three types of future work can be performed to extend this dissertation: improvements to the
CREVICER code; improvements to the model implemented in CREVICER and experimental
work to verify the predictions of the code.
7.1 Code Improvements
The areas in which CREVICER can be improved are increased speed, increased
stability and increased ease of use. CREVICER is strongly limited by computational time.
Increasing the rate at which the code runs would allow proportionately more intensive problems
to be examined. The problems that are examined may or may not be stable. CREVICER alerts
the user if the problem may be numerically unstable, but the code takes no corrective action.
Another limitation of the code is that the functionality can only be accessed by programming.
An easy-to-use Graphical User Interface (GUI) that provided a shell between novice users and
the code would be a welcome addition. A successful GUI would make CREVICER more
accessible for a wider distribution of corrosion scientists and engineers.
The first area that should be examined to locate a speed increase is the solver routine.
The current solver uses Gaussian elimination to solve the n by n matrix that is created for each
variable in each time period. Although this algorithm is easy to code, it is extremely inefficient.
Possible improvements would be to use a vectorized approach that takes advantage of the
407
bandedness of the equations or to use a sparse matrix implementation that only manipulates the
non-zero elements of the matrix.
A second area for speed increases which should be examined is the routine for finding
the potential distribution in the crevice at each time period. Currently, CREVICER attempts to
find the steady-state solution by time marching through “pseudo-time”. This method can have
the same types of stability problems that were mentioned in subsections 4.2.2 and 4.2.3. Each
calculation of a pseudo-timestep takes as much time as a chemical timestep. Multiple steps in
pseudo-time can be required to find the quasi-steady-state potential distribution at each
timestep. A method to speed the calculation of the potential distribution could result in
significant time savings.
The second area the CREVICER could be upgraded in is enhancing the stability of the
code. CREVICER detects Peclet problems as it runs and informs the operator that the code
may not be stable. The code does not however adjust its own parameters, such as the timestep
or mesh size, to ensure stability. An alternate route would be to use upwinding or the method of
lines to ensure stability over a wider range of conditions[48].
The third area for improvement in the CREVICER code is in the area of interfacing
with the user. CREVICER’s object-oriented nature makes it easy to reprogram. This ease of
programmability is of little use to non-programmers. A GUI would make it easier for nonprogrammers to use CREVICER. The basic functions for such a GUI would be mesh
generation and definition, setup of initial conditions, control of the model execution and model
output.
408
Mesh generation is currently done in ANSYSTM. Integrating that separate step into
CREVICER would simplify model operation. The initial conditions for the model have an effect
on the course of the crevicing event. Graphical selection of the solution composition and the
materials for individual elements and edges would ease input and increase accuracy by ensuring
the boundary conditions actually used by the model correspond to the physical system. The
parameters of the model execution such as length of timesteps used, degree of
implicitness/explicitness and convergence criteria would ideally be located at a single point.
Finally, CREVICER can generate extremely large amounts of data. CREVICER can output not
only the field variables but derived parameters such as pH, conductivity, or flux across an edge.
The parameters that need to be output vary from model to model and the ability to selectively
output only the relevant data without programming would simplify the data analysis process.
This subsection has discussed changes that change the way CREVICER operates, but
not the fidelity of the model implemented in CREVICER to any particular physical situation.
The next section addresses such changes.
7.2 Model Improvements
CREVICER currently makes several simplifications about the behavior of individual
components of the crevicing process. Most of these can easily be addressed in the code by
modifying one or two objects. Better representations of concentrated solution effects,
precipitation, viscosity and tortuosity would be easily implemented. Accounting for shape
changes would be more complicated but would still involve only a minority of the code. One
409
omission, however, would require small modifications over most of the code. Absolute time is
not passed between any of the parameters and its inclusion into the code would cause changes
in almost every object of CREVICER. A final improvement would be reformulating the
mathematical method used to allow for moving boundaries.
As was seen in subsection 2.3.2.2 on the transport coefficients a number of factors can
come to bear on the kinetics of mass transfer when the solute ions begin to interact with one
another. Not only may the diffusivity and mobility be changed directly, but indirect effects like
viscosity changes or tortuousity caused by precipitation of a solid phase may play a role. None
of these factors are currently implemented in any object in CREVICER. Concentrated solutions
may also affect the thermodynamics of the crevice solution by changing the activity coefficients
of individual species. This can even destroy the underlying basis for using gradients of
concentration rather than activity in diffusion as was discussed in subsection 2.3.2.1.
Time was omitted as a variable when the interfacing between the various objects was
defined. CREVICER assumes that behaviors instantly change to reflect new electrochemical
conditions. This approach does not fully reflect the physical behavior of real systems. For
example, a previously passivated metal surface takes a finite period of time to remove the
protective oxide when it is placed in an activating solution. Another example might be the
dissolution of metastable pits. It would be useful to allow pits inside a crevice to corrode for
fixed periods of time and the turn off. Passing time as a parameter would not only allow
materials to show time transient behavior that is independent of chemistry or potential changes
but also allow for the model to make specific changes in the model at absolute time intervals.
410
A final improvement in the model would be to recast the mathematical solution
technique to allow for the boundaries of the crevice to move based on the corrosion rate. This
would allow for a single model to investigate the shape evolution of a crevice.
Model verification by experiment would strengthen the CF theory of intermediate attack
in crevice corrosion. In situ or ex situ measurements of pH within a creviced region similar to
the work of Alavi and Cottis[93] would be useful if compared directly to CREVICER
predictions.
Summary
CREVICER could benefit from modifications to the code to improve speed and
usability and from refinements of the models that are implemented in it.
411
Chapter 8: References
1.
Jones, D., Principles and Prevention of Corrosion. 1992: MacMillian Publishing
Company. 586.
2.
Hoar, T.P., Disc. Faraday Soc., 1947. 1: p. 299.
3.
Fontana, M.G.G., Corrosion Engineering. 1986, New York: McGraw-Hill Book
Company. 556.
4.
Oldfield, J.W. and Sutton, W.H., "Crevice Corrosion of Stainless Steels I. A
Mathematical Model". Br. Corros. J., 1978. 13(1): p. 13-22.
5.
Cho, K. and Pickering, H.W., "Demonstration of Crevice Corrosion in Alkaline
Solution Without Acidification". J. Electrochem. Soc., 1990. 137(10): p. 3313-3314.
6.
Sharland, S.M., "A Mathematical Model of the Initiation of Crevice Corrosion in
Metals". Corrosion Science, 1992. 33(2): p. 183-201.
7.
Gartland, P.O. "A Simple Model of Crevice Corrosion Propagation for Stainless Steels
in Sea Water". in Corrosion 97. 1997: National Association of Corrosion Engineers.
412
8.
Turnbull, A., "Modelling of Crack Chemistry In Sensitized Stainless Steel in Boiling
Water Reactor Environments". Corrosion Science, 1997. 39(4): p. 789-805.
9.
Watson, M.K. and Postlethwaite, J., "Numerical Simulation of Crevice Corrosion: The
Effect of the Crevice Gap Profile". Corrosion Science, 1991. 32(11): p. 1253-1262.
10.
Walton, J.C., Cragnolino, G., and Kalandros, S.K., "A Numerical Model of Crevice
Corrosion for Passive and Active Metals". Corrosion Science, 1996. 38(1): p. 1-18.
11.
Sridhar, N. and Dunn, D.S., "Effect of Applied Potential on Changes in Solution
Chemistry Inside Crevices on Type 304L Stainless Steel and Alloy 825". Corrosion,
1994. 50(11): p. 857-872.
12.
DeJong, L.A. and Kelly, R.G., "The Demonstration of the Microfabrication of
Rigorously Defined Crevices for the Investigation of Crevice Corrosion Scaling Laws",
in Critical Factors in Localized Corrosion III, R.G. Kelly, et al., Editors. 1999, The
Electrochemical Society: Pennington, NJ. p. 678-688.
13.
Brossia, C.S. and Kelly, R.G. "On the Role of Alloy Sulfur in the Initiation of Crevice
Corrosion in Stainless Steel". in Critical Factors in Localized Corrosion II. 1996:
Electrochemical Society Proceedings.
413
14.
Hebert, K. and Alkire, R., "Dissolved Metal Species Concentration for Initiation of
Crevice Corrosion of Aluminum I. Experimental Investigations in Chloride Solutions". J.
Electrochem. Soc., 1983. 130(5): p. 1001-1007.
15.
Lott, S.E. and Alkire, R.C., "The Role of Inclusions on Initiation of Crevice Corrosion
of Stainless Steel". J. Electrochem. Soc., 1989. 136(4): p. 973-978.
16.
King, F., Tang, Y., Quinn, M.J., and Litke, C.D. "The Effects of Dissolved Oxygen
Concentration and Mass-Transport Conditions on the Dissolution Behaviour of Copper
Nuclear Waste Containers". in Corrosion 95. 1995: National Association of Corrosion
Engineers.
17.
King, F. and Kolar, M. "Prediction of Lifetimes of Copper Nuclear Waste Containers
Under Restrictive Mass-Transport and Evolving Redox Conditions". in Corrosion 95.
1995.
18.
Shoesmith, D.W., Ikeda, B.M., and LeNevu, D.M. "Modelling the Failure of Nuclear
Waste Containers". in Corrosion 96. 1996.
19.
Sridhar, N., Cragnolino, G., Pennick, H., and Torng, T.Y. "Application of a Transient
Crevice Corrosion Model to the Prediction of Performance of High-Level Nuclear
414
Waste Container Materials". in Life Prediction of Corrodible Structures. 1991:
NACE International.
20.
Weast, R.C., ed. CRC Handbook of Chemistry and Physics. 59 ed. . 1978, CRC
Press, Inc.
21.
Newman, J., Electrochemical Systems. 1973, Englewood Cliffs, NJ: Prentice-Hall, Inc.
432.
22.
Lupis, C.H.P., Chemical Thermodynamics of Materials. 1983, New York: NorthHolland. 581.
23.
Bockris, J.O.M. and Reddy, A.K.N., Modern Electrochemistry. Vol. 2. 1970, New
York: Plenum Press. 1432.
24.
Bard, A.J. and Faulkner, L.J., Electrochemical Methods: Fundamanetals and
Applications. 1980, New York: John Wiley & Sons. 718.
25.
Pickering, H.W. and Frankenthal, R.P. "Mechanism of Pit and Crevice Propagation on
Iron and Stainless Steels". in U.R. Evans Conference on Localized Corrosion. 1971.
Williamsburg, VA: National Association of Corrosion Engineers.
415
26.
Johnson, W.A., Class Notes: MSE 792 Diffusional Processes in Materials.
27.
Turnbull, A. "Progress in the Understanding of the Electrochemistry in Cracks". in
Embrittlement by the Localized Crack Environment. 1983. Philadelphia, PA: The
Metallurgical Society/AIME.
28.
Watson, M. and Postlethwaite, J., "Numerical Simulation of Crevice Corrosion of
Stainless Steels and Nickel Alloys in Chloride Solutions". Corrosion, 1990. 46(7): p.
522-530.
29.
Gartland, P.O., A Mathematical Model of Crevice Corrosion for Fe-Ni-Cr-Mo
Alloys in Chloride Solutions, . 1988, SINTEF: Trondheim, Norway.
30.
Tester, J.W. and Isaacs, H.S., "Diffusional Effects in Simulated Localized Corrosion".
J. Electrochem. Soc., 1975. 122(11): p. 1438-1445.
31.
Song, W., "Activity Coefficient Model of Concentrated Electrolyte Solutions". AIChE
Journal, 1990. 36(12): p. 1896-1900.
32.
Hamilton, R.L. and Crosser, O.K., "Thermal Conductivity of Heterogeneous TwoPhase Systems". Industrial Engineering Chemistry, 1963. 1(3): p. 187-191.
416
33.
Baes, C.F. and Mesmer, R.E., The Hydrolysis of Cations. 1986, Malabar, Florida:
Krieger Publishing Company. 499.
34.
Buchheit, R.G., Moran, J.P., and Stoner, G.E. "The Role of Hydrolysis in the Crevice
Corrosion of Aluminum-Lithium-Copper Alloys". in NACE90. 1990. Las Vegas:
National Association of Corrosion Engineers.
35.
Bikerman, J.J., Surface Chemistry. 1958, New York: Academic Press. 551.
36.
Galvele, J.R., "Transport Processes and the Mechanism of Pitting of Metals". J.
Electrochem. Soc., 1976. 123(4): p. 464-474.
37.
Fu, J.W., "A Finite Element Analysis of Corrosion Cells". Corrosion, 1982. 38(5): p.
295-296.
38.
Fu, J.W. and Chan, S.-K., "A Finite Element Method for Modeling Localized
Corrosion Cells". Corrosion, 1984. 40(10): p. 540-544.
39.
Alkire, R., Tomasson, T., and Hebert, K., "The Critical Geometry for Initiation of
Crevice Corrosion". J. Electrochem. Soc., 1985. 132(5): p. 1027-1031.
417
40.
Sharland, S.M. and Tasker, P.W., "A Mathematical Model of Crevice and Pitting
Corrosion - I. The Physical Model". Corrosion Science, 1988. 28(6): p. 603-620.
41.
Sharland, S.M., "A Mathematical Model of Crevice and Pitting Corrosion - II. The
Mathematical Solution". Corrosion Science, 1988. 28(6): p. 621-630.
42.
Galvele, J.R., "Transport Processes in Passivity Breakdown - II. Full Hydrolysis of the
Metal Ions". Corrosion Science, 1981. 21(8): p. 551-579.
43.
Laycock, N.J., White, S.P., Noh, J.S., Wilson, P.T., and Newman, R.C., "Perforated
Covers for Propagating Pits". Journal of the Electrochemical Society, 1998. 145(4):
p. 1101-1108.
44.
Edwards, R.A.H., "A Simple Mass Transport Analysis of Localized Corrosion", in
Advances in Localized Corrosion, H. Isaacs, et al., Editors. 1990, NACE: Houston. p.
381-392.
45.
Gravano, S.M. and Galvele, J.R., "Transport Processes in Passivity Breakdown - III.
Full Hydrolysis Plus Ion Migration Plus Buffers". Corrosion Science, 1984. 24(6): p.
517-34.
418
46.
Turnbull, A. and Thomas, J.G.N., "A Model of Crack Electrochemistry for Steels in the
Active State Based on Mass Transport by Diffusion and Ion Migration". J.
Electrochem. Soc., 1982. 129(7): p. 1412-1422.
47.
Ateya, B.G. and Pickering, H.W., "On the Nature of Electrochemical Reactions at a
Crack Tip during Hydrogen Charging of a Metal". J. Electrochem. Soc., 1975.
122(8): p. 1018-1026.
48.
Psaila-Dombrowski, M.J., "Modeling of Crack and Crevice Chemistry in Light Water
Reactor Environments", Massachusetts Institute of Technology, Boston MA, 1990
49.
Chapra, S.C. and Canale, R.P., Numerical Methods for Engineers. 1988, New York:
McGraw-Hill Book Company. 812.
50.
Fletcher, C.A.J., Computational Techniques for Fluid Dynamics. Vol. 1. 1991, New
York: Springer-Verlag. 401.
51.
Allaire, P.E., Basics of the Finite Element Method. 1985, Dubuque, Iowa: Wm. C.
Brown Publishers. 691.
52.
Sharland, S.M., "A Review of the Theoretical Modeling of Crevice and Pitting
Corrosion". Corrosion Science, 1987. 27(3): p. 289-323.
419
53.
Munn, R.S., "A Review of the Development of Computational Corrosion Analysis for
Spatial Corrosion Modeling Through its Maturity in the Mid-1980's", in Computer
Modeling in Corrosion, ASTM STP 1154, R.S. Munn, Editor. 1992, American
Society for Testing and Materials: Philadelphia. p. 215-228.
54.
Turnbull, A., "Modelling of Environment Assisted Cracking". Corrosion Science,
1993. 34(6): p. 921-960.
55.
Turnbull, A., Review of Modelling of Environment-Assisted Cracking, . 1992.
56.
Turnbull, A. and Psaila-Dombrowski, M., "A Review of Electrochemistry of Relevance
to Environment-Assisted Cracking in Light Water Reactors". Corrosion Science,
1992. 33(12): p. 1925-1966.
57.
Turnbull, A., "Review of Modelling of Pit Propagation Kinetics". 1992.
58.
Turnbull, A., "Chemistry Within Localized Corrosion Cavities", in Advances in
Localized Corrosion, H.S. Isaacs, et al., Editors. 1990, National Association of
Corrosion Engineers: Houston, Texas. p. 359-373.
59.
Turnbull, A., "The Solution Composition and Electrode Potential in Pits, Crevices and
Cracks". Corrosion Science, 1983. 23(8): p. 833-870.
420
60.
Evitts, R.W., Watson, M.K., and Postlethwaite, J., "Numerical Simulation of Crevice
Corrosion of Titanium:Effect of the Bold Surface". Corrosion96, 1996: p. 121/1121/10.
61.
Watson, M.K., Evitts, R.W., and Wilmott, M.J., "Simulation of Changes in Stress
Corrosion Cracking Environments in Anaerobic CO2 Rich near Neutral Bulk
Solutions". Corrosion96, 1996: p. 251/1-251/13.
62.
Evitts, R.W., Postlewaithe, J., and Watson, M.K., "Modelling Crevice Corrosion".
1992.
63.
Harb, J.N. and Alkire, R.C., "Transport and Reaction during Pitting Corrosion of Ni in
0.5 M NaCl". J. Electrochem. Soc., 1991. 138(9): p. 2594-2600.
64.
Alkire, R.C. and Lott, S.E., "The Role of Inclusions on Initiation of Crevice Corrosion
of Stainless Steel II. Theoretical Studies". J. Electrochem. Soc., 1989. 136(11): p.
3256-3262.
65.
Hebert, K. and Alkire, R., "Dissolved Metal Species Mechanism for Initiation of
Crevice Corrosion of Aluminum II. Mathematical Model". J. Electrochem. Soc.,
1983. 130(5): p. 1007-1014.
421
66.
Alkire, R.C. and Siitari, D., "Initiation of Crevice Corrosion II. Mathematical Model
for Aluminum in Sodium Chloride Solutions". J. Electrochem. Soc., 1982. 129(3): p.
488-496.
67.
Siitari, D.W. and Alkire, R.C., "Initiation of Crevice Corrosion I. Experimental
Investigations on Aluminum and Iron". J. Electrochem. Soc., 1982. 129(3): p. 481487.
68.
Alkire, R., Ernsberger, D., and Damon, D., "The Role of Conductivity Variations
Within Artificial Pits During Anodic Dissolution". J. Electrochem. Soc., 1976. 123(4):
p. 458-464.
69.
Turnbull, A. and Ferriss, D.H., "Mathematical Modeling of the Electrochemistry in
Corrosion Fatigue Cracks in Steel Corroding in Marine Environments". Corrosion
Science, 1987. 27(12): p. 1323-1350.
70.
Turnbull, A. and Ferriss, D., "Mathematical Modelling of the Electrochemistry in
Corrosion Fatigue Cracks in Structural Steel Cathodically Protected in Sea Water".
Corrosion Science, 1986. 26(8): p. 601-628.
71.
Gangloff, R.P. and Turnbull, A. "Crack Electrochemistry Modeling and Fracture
422
Mechanics Measurement of the Hydrogen Embrittlement Threshold in Steel". in
Modeling Environmental Effects on Crack Growth Processes. 1985. Toronto,
Canada: The Metallurgical Society, Inc.
72.
Turnbull, A., "Theoretical Analysis of Influence of Crack Dimensions and Geometry on
Mass Transport in Corrosion-Fatigue Cracks". Materials Science and Technology,
1985. 1(9): p. 700-710.
73.
Sharland, S.M., Jackson, C.P., and Diver, A.J., "A Finite Element Model of the
Propagation of Corrosion Crevices and Pits". Corrosion Science, 1989. 29(9): p.
1149-1166.
74.
Oldfield, J.W., Masters, G.L., and Stokes, K.B. "Prediction of Initiation and
Propagation of Crevice Corrosion on Aluminum Alloys in Sea Water by Mathematical
Modelling". in Corrosion 96. 1996: National Association of Corrosion Engineers.
75.
Oldfield, J.W. and Sutton, W.H., "New Technique for Predicting the Performance of
Stainless Steels in Sea Water and Other Chloride Containing Environments". Br.
Corros. J., 1980. 15(1): p. 31-34.
76.
Gartland, P.O. "Modeling Crevice Corrosion of Fe-Cr-Ni-Mo Alloys in Chloride
423
Solution". in 12th International Corrosion Congress. 1993: NACE International.
77.
Bardal, E., Johnsen, R., and Gartland, P.O., "Prediction of Galvanic Corrosion Rates
and Distribution by Means of Calculation and Experimental Models". Corrosion, 1984.
40(12): p. 628-633.
78.
Walton, J.C., "Mathematical Modeling of Mass Transport and Chemical Reaction in
Crevice and Pitting Corrosion". Corrosion Science, 1990. 30(8/9): p. 915-928.
79.
Gaudet, G.T., Mo, W.T., Hatton, T.A., et al., "Mass Transfer and Electrochemical
Kinetic Interactions in Localized Pitting Corrosion". AIChE Journal, 1986. 32(6): p.
949-958.
80.
Lillard, R.S. and Scully, J.R., "Modeling of the Factors Contributing to the Initiation and
Propagation of the Crevice Corrosion of Alloy 625". J. Electrochem. Soc., 1994.
141(11): p. 3006-3015.
81.
Munn, R.S. and Devereaux, O.F., "Numerical Modeling and Solution of Galvanic
Corrosion Systems: Part I. Governing Differential Equation and Electrode Boundary
Conditions". Corrosion, 1991. 47(8): p. 612-618.
424
82.
Munn, R.S. and Devereaux, O.F., "Numerical Modeling and Solution of Galvanic
Corrosion Systems: Part II. Finite-Element Formulation and Descriptive Examples".
Corrosion, 1991. 47(8): p. 618-634.
83.
Bertocci, U., "Modeling of Crack Chemistry in Cu-Au Alloys". J. Electrochem. Soc.,
1989. 136(7): p. 1887-1892.
84.
Engelhardt, G. and Stehblow, H.-H., "A Quantitative Method of Describing Ionic
Transfer Processes in Electrolytes Under Metal Corrosion". Journal of
Electroanalytical Chemistry, 1994. 365: p. 7-18.
85.
Shuck, R.R. and Swedlow, J.L., "Analysis of Crack-Like Regions - Part I", in
Localized Corrosion, B.F. Brown, J. Kruger, and R.W. Staehle, Editors. 1974,
NACE: Houston, TX. p. 190-207.
86.
Shuck, R.R. and Swedlow, J.L., "Analysis of Crack-Like Regions - Part I", in
Localized Corrosion, B.F. Brown, J. Kruger, and R.W. Staehle, Editors. 1974,
NACE: Houston, TX. p. 208-220.
87.
Ateya, B.G. and Pickering, H.W. "The Dynamics of Interaction Bewteen the IR
Potential Drop and Composition Changes During the Activation and Propagation of
425
Crevice Corrosion". in Crevice Corrosion: The Science and its Control in
Engineering Practice. 1996.
88.
Xu, Y. and Pickering, H.W., "The Initial Potential and Current Distributions of the
Crevice Corrosion Process". J. Electrochem. Soc., 1993. 140(3): p. 658-668.
89.
Beavers, J.A. and Thompson, N.G., "Effect of Pit Wall Reactivity on Pit Propagation in
Carbon Steel". Corrosion, 1987. 43(3): p. 185-188.
90.
De Force, B. and Pickering, H., "A Clearer View of How Crevice Corrosion Occurs".
Journal of Materials, 1995(September): p. 22-27.
91.
Lippman, S.B., C++ Primer. 1991, Reading, Massachusetts: Addison-Wesley
Publishing Company. 614.
92.
Brossia, C.S., "Personal Communication". 1996.
93.
Alavi, A. and Cottis, R.A., "The Determination of pH, Potential and Chloride
Concentration in Corroding Crevices on 304 Stainless Steel and 7475 Aluminum
Alloy". Corrosion Science, 1987. 27(5): p. 443-451.
426
94.
Guo, S. "The Distribution of pH Within Corrosion Crevice Without External Surface".
in Aluminum Alloys '90. Second International Conference on Aluminum Alloys -Their Physical and Mechanical Properties. 1990. Beijing: International Academic
Publishers.
95.
Turnbull, A., "Prevention of Crevice Corrosion by Coupling to More Noble
Materials?". Corrosion Science, 1998. 40(4-5): p. 843-845.
96.
Evitts, R.W., Postlethwaite, J., and Watson, M.K. "Modelling Crevice Corrosion". in
Corrosion 92. 1992: National Association of Corrosion Engineers.
427
Appendix A: CREVICER Code Printout
CREVICER consists of the following header and c files.
constant.h
tchem.h
taspecie.h
tallspec.h
treactio.h
tmateria.h
fem.h
solver.h
tchem.c
taspecie.c
tallspec.c
treactio.c
tmateria.c
fem.c
solver.c
chemtest.c
The CREVICER code also requires two different input files, one to define the elements
and one to define the nodes. Example files have been included.
nosq8
elsq8
By convention in CREVICER “no” prefixed files denote node files while “el” prefixes
are used to label element files.
The font used on the following pages produces 80 characters per line. Several comment
lines in CREVICER exceed this length, in context it is clear where this has occurred.
Each file is reproduced in the following appendices for archival purposes. Electronic
versions of the code may be obtained from the author.
428
Appendix B: constant.h
/*********************************************************
This header file contains universal constants for CREVICER
It also defines conventions.
Conventions - units used
length
time
temperature
moles
potential
current
mass
charge #
_m_
_s_
_K_
_moles_
_V_
_A_
_g_
_eq_
Not intuitive units
concentration
Current density
Chemical flux
Electric field
density
used
_mol/m^3_
_A/m^2_
_mol/m^2_
_V/m_
_g/m^3_
NOT MOLAR
All electrochemical potentials are give as volts vs NHE
*********************************************************/
#ifndef __CONSTANT_H
#define __CONSTANT_H
#ifndef __STRING_H
#include <string.h>
#endif
#define
R 8.3143 // [J]/[mol-K]
//** Note: defining F as 96847 is an integer => F*F exceeds the upper limit
//for integers, causes problems in kappa of tallspec
#define
F 96487.0
// [C]/[eq]
#define
F2 9309741169.0
// error codes
#define
FALSE
0
#define
ERROR
0
#define
TRUE
1
#define
OK
1
#define
ITEMNOTINLIST 2
#define
BOOL
int
#define
MAXNUMSPECIES 15
429
int StringsEqual(char * str1, char * str2)
{if (strcmp(str1, str2) == 0)
{return(1);
}
else
{return(0);
}
}
/*
Values from CRC D-167 (Brossia's)
Equivalent Ionic Conductivities
UNITS FOR THE VALUES IN THIS TABLE
u = [cm^2-mol]/[J-s]
D = cm^2/s
*Per m^2 values are 10^-4 that
species lambda z
u
Al+++
61 3
H+ 349.65 1
Ca++
59.47
Cr+++
67 3
Cu++
53.6
Fe++
54 2
Fe+++
68 3
H+ 349.65 1
K+ 73.48
1
Li+ 38.66
1
Mg++
53 2
Mn++
53.5
NH4+
73.5
N2H5+
59 1
Na+ 50.08
1
Ni++
50 2
Zn++
52.8
D@ 298K
2.184E-09
5.411E-06
3.756E-08
9.305E-05
2
3.194E-09
7.914E-06
2.399E-09
5.944E-06
2
2.879E-09
7.132E-06
2.900E-09
7.186E-06
2.435E-09
6.032E-06
3.756E-08
9.305E-05
7.893E-09
1.956E-05
4.153E-09
1.029E-05
2.846E-09
7.053E-06
2
2.873E-09
7.119E-06
1
7.895E-09
1.956E-05
6.337E-09
1.570E-05
5.379E-09
1.333E-05
2.685E-09
6.653E-06
2
2.836E-09
7.026E-06
Anions
Br- 78.1
-1 8.389E-09
2.079E-05
CH3CO2- 40.9
-1 4.393E-09
1.088E-05
CO3-69.3
-2 3.722E-09
9.222E-06
Cl- 76.31
-1 8.197E-09
2.031E-05
ClO252 -1 5.586E-09
1.384E-05
ClO364.6
-1 6.939E-09
1.719E-05
ClO467.3
-1 7.229E-09
1.791E-05
CrO4-- 85 -2 4.565E-09
1.131E-05
HCO254.6
-1 5.865E-09
1.453E-05
HCO344.5
-1 4.780E-09
1.184E-05
HS- 65 -1 6.982E-09
1.730E-05
HSO350 -1 5.371E-09
1.331E-05
HSO450 -1 5.371E-09
1.331E-05
I- 76.8
-1 8.249E-09
2.044E-05
430
MnO4MoO4NO2NO3NH2SO3OH- 198
SO3-SO4-S2O3-S2O4-S2O6-S2O8-*/
#endif
61.3
-1 6.585E-09
1.631E-05
74.5
-1 8.002E-09
1.983E-05
71.8
-1 7.712E-09
1.911E-05
71.42
-1 7.672E-09
1.901E-05
48.6
-1 5.220E-09
1.293E-05
-1 2.127E-08
5.270E-05
79.9
-2 4.291E-09
1.063E-05
80 -2 4.297E-09
1.065E-05
85 -2 4.565E-09
1.131E-05
66.5
-2 3.572E-09
8.849E-06
93 -2 4.995E-09
1.238E-05
86 -2 4.619E-09
1.144E-05
431
Appendix C: tchem.h
/*********************************************************************
TCHEM.H
Kevin C. Stewart
2/25/94
This module includes all classes that deal with aqueous species.
TAllSpecies
|
TASpecies - [subclasses] AqAluminum - Ferrous - etc.
See pages 691-700 of BorlandC++ on how many subclasses
can be used simultaneously in place of TASpecies
TAllSpecies TASpecies
-
Super Class to hold all species
A generic class for aqueous species
TChemistry holds the species name/concentration information
for a solution volume
**********************************************************************/
#ifndef __TCHEM_H
#define __TCHEM_H
#ifndef __STDIO_H
#include <stdio.h>
#endif
#ifndef __CONSTANT_H
#include "constant.H"
#endif
// only needed for debugging
#ifndef __STRING_H
#include <string.h>
#endif
#define MAXSPECIESLENGTH 20
typedef char * TSpeciesName;
class TChemistry
/*
class TChemistry
432
last modified 2/25/94
*/
{
public:
AddSpecies(TSpeciesName name, double concentration, int isfixed = 0);
int size;
SetConcentration(TSpeciesName name, double concentration);
double GetConcentration(TSpeciesName name);
SetFixed(TSpeciesName name, int isfixed);
int GetFixed(TSpeciesName name);
CopyChemistry(TChemistry * source);
TChemistry();
TChemistry(TChemistry * old);
double
concentrations[MAXNUMSPECIES];
TSpeciesName names[MAXNUMSPECIES];
int
fixed[MAXNUMSPECIES];
private:
int count;
};
#endif
433
Appendix D: tchem.c
/**********************************************************************
TCHEM.CPP
4/8/94
TChemistry is a list of species names, concentrations, and booleans
that record if the parameter is changeable. It also contains
function to set and read both the value of a parameter and its
status.One data structure of this type is associated with each node.
Another one is associated with each solution volume.
All chemical concentrations are in moles/m^3.
1 m^3 = 1000 liter
The type "electrical" is in V vs NHE.
This entry was last edited on 3/6/97.
***********************************************************************/
#include "tchem.H"
TChemistry::TChemistry()
/***********************************************************************
TChemistry():
Constructor for class
***********************************************************************/
{size = 0; // initially no species present
}
TChemistry::TChemistry(TChemistry * old)
/***********************************************************************
TChemistry(): Constructor for class
copies another TChemistry
^^^^^^
***********************************************************************/
{int count;
size = old->size;
for(count=0;count<size;count++)
{concentrations[count] = old->concentrations[count];
names[count] = old->names[count];
fixed[count] = old->fixed[count];
}
}
TChemistry::AddSpecies(TSpeciesName name, double concentration, int isfixed = 0)
/***********************************************************************
AddSpecies(...):
434
Adds a new parameter to the set. Places a new entry in each of
the names, concentrations, and fixed arrays. Also increments
the size parameter.
***********************************************************************/
{ names[size]=name;
concentrations[size] = concentration;
fixed[size] = isfixed;
size++;
}
TChemistry::SetConcentration(TSpeciesName name, double concentration)
/***********************************************************************
Returns OK
if item present
Returns ITEMNOTINLIST if failed
(This function does not add parameters that aren't present because
no info about the parameters adjustable status is included.)
***********************************************************************/
{// find right name
for(count=0;!(StringsEqual(names[count],name)&&(count<size));count++);
if (count < size)
{concentrations[count] = concentration;
return(OK);
}
else
// name not in this TChemistry
{return(ITEMNOTINLIST);
}
}
double TChemistry::GetConcentration(TSpeciesName name)
/***********************************************************************
4/16/94
GetConcentration:
Returns:
Concentration of a species in solution in mol/m^3
***********************************************************************/
{// find right name
for(count=0;!(StringsEqual(names[count],name)&&(count<size));count++);
if (count < size)
{ return(concentrations[count]);
}
else
// name not in this TChemistry => species not present
{return(0);
}
}
435
TChemistry::SetFixed(TSpeciesName name, int isfixed)
/***********************************************************************
Returns OK
if item present
Returns ITEMNOTINLIST if failed
***********************************************************************/
{// find right name
for(count=0;!(StringsEqual(names[count],name)&&(count<size));count++);
if (count < size)
{fixed[count] = isfixed;
return(OK);
}
else // name not in this TChemistry
{return(ITEMNOTINLIST);
}
}
int TChemistry::GetFixed(TSpeciesName name)
/***********************************************************************
4/16/94
GetFixed:
Returns:
If the parameter is adjustable.
***********************************************************************/
{// find right name
for(count=0;!(StringsEqual(names[count],name)&&(count<size));count++);
if (count < size)
{ return(fixed[count]);
}
else
// name not in this TChemistry => species not present
{return(0);
}
}
TChemistry::CopyChemistry(TChemistry * source)
/***********************************************************************
TChemistry(): Copies another TChemistry
NOTE:
Don't really have to copy the names and fixed info since this is
to be used for copying chem into oldchem
***********************************************************************/
{int count;
size = source->size;
for(count=0;count<size;count++)
436
{concentrations[count] = source->concentrations[count];
names[count] = source->names[count];
fixed[count] = source->fixed[count];
}
}
437
Appendix E: taspecie.h
//
TASPECIE.H
#ifndef __TASPECIE_H
#define __TASPECIE_H
#ifndef __TCHEM_H
#include "tchem.H"
#endif
#ifndef __STRING_H
#include <string.h>
#endif
#ifndef __CONSTANT_H
#include "constant.H"
#endif
class TASpecies
/***********************************************************************
class TASpecies
Last Modified 3/12/97
See Comments in taspecie.C
**********************************************************************/
{
public:
int
z;
// the charge number of species
double dbu; // the mobility of species
double u0;
// the standard chemical potential of the species
virtual double u(double T, double P, TChemistry * chem); // mobility
virtual double D(double T, double P, TChemistry * chem); // returns the
diffusivity of species, Einstein Eq?
virtual double a(double T, double P, TChemistry * chem); // returns the
single ion activity coefficient
TASpecies();
TASpecies(int speciesz, double speciesu,double speciesu0, TSpeciesName
speciesname); // Constructor
TSpeciesName name;
private:
};
class TAlppp: public TASpecies
438
{public:
TAlppp();
private:
};
// constructor for Al+3
class THp: public TASpecies
{public:
THp();
// constructor for H+
private:
};
class TOHm: public TASpecies
{public:
TOHm();
// constructor for OHprivate:
};
class TKp: public TASpecies
{public:
TKp();
// constructor for K+
private:
};
class TNap: public TASpecies
{public:
TNap();
// constructor for Na+
private:
};
class TClm: public TASpecies
{public:
TClm();
// constructor for Clprivate:
};
class TNipp: public TASpecies
{public:
TNipp();
// constructor for Ni+2
private:
};
class TFepp: public TASpecies
{public:
TFepp();
// constructor for Ni+2
private:
};
class TCrppp: public TASpecies
{public:
TCrppp();
// constructor for Cr+3
private:
439
};
class TCrO4mm: public TASpecies
{public:
TCrO4mm();
// constructor for CrO4-2
private:
};
class TNO3m: public TASpecies
{public:
TNO3m();
// constructor for NO3private:
};
class TAgp: public TASpecies
{public:
TAgp();
// constructor for Ag+
private:
};
class TCrOHpp: public TASpecies
{public:
TCrOHpp();
// constructor for CrOH+2
private:
};
class TCrOHOHp: public TASpecies
{public:
TCrOHOHp();
// constructor for Cr(OH)2+
private:
};
class TCrOHOHOH: public TASpecies
{public:
TCrOHOHOH();
// constructor for Cr(OH)2+
private:
};
class TCrOHOHOHOHm: public TASpecies
{public:
TCrOHOHOHOHm();
// constructor for Cr(OH)2+
private:
};
class TLip: public TASpecies
{public:
TLip();
// constructor for Li+
private:
};
class TSO4mm: public TASpecies
{public:
440
TSO4mm();
private:
};
// constructor for SO4--
class TElectrical: public TASpecies
{public:
TElectrical();
// constructor for electrical
private:
};
class TTemperature: public TASpecies
{public:
TTemperature(); // constructor for electrical
private:
};
class TPressure: public TASpecies
{public:
TPressure();
// constructor for electrical
private:
};
#endif
441
Appendix F: taspecie.c
/*******************************************************
TASPECIE.C
Tested by test.cpp
This the parent class for (all?) aqueous species.
All Species have the following attributes
z
u
= charge number of species (invariant)
= ionic mobility (does this vary w/ T?)
(redo as function?)
u0 = standard chemical potential (invariant)
D = diffusivity (varies with T)
a = single species ionic activity
UNITS
equivalents
[mol-m^2]/[J-s]
J/mol
m^2/s
----
Sources for data on species:
"Hydrolysis of Cations" Baes and Mesmer
QD501.B162 (not available as of 3/5/94)
CRC Handbook Vol 66
esp sections
D50
D151
D167
F44
-D100
-D158
-D170
-F45
Code was last edited on on 3/7/97.
*********************************************************/
#ifndef __TASPECIE_H
#include "taspecie.H"
#endif
TASpecies::TASpecies()
/***********************************************************************
TASpecies():
Constructor for class
This function is more for form's sake than anything else. The
full constructor needs to be called to do anything useful (and
avoid crashes)
***********************************************************************/
{z = 0;
dbu = 0;
}
TASpecies::TASpecies(int speciesz, double speciesu, double speciesu0,
TSpeciesName speciesname)
442
/***********************************************************************
TASpecies():
Constructor for class
This function is the proper constructor to call to create a
species.
NOTE: Most species have their own type that derives from this
one.
***********************************************************************/
{z
= speciesz;
// [equivalents]
dbu = speciesu;
// [mol-m^2]/[J-s]
u0
= speciesu0;
// [J/mol]
name = speciesname;
}
double TASpecies::u(double T, double P, TChemistry * chem)
/***********************************************************************
u: This function calculates mobility based on the thermodynamic state.
It is a virtual function and can be redefined.
INPUTS: The thermodynamic state
Temperature (T)
Pressure (P)
Composition (chem)
RETURNS:
mobility in mol m^2 / J-s
***********************************************************************/
{return(dbu);
}
double TASpecies::D(double T, double P, TChemistry * chem)
/***********************************************************************
D: This function returns the Diffusivity of the species. The default
method of calculating the diffusivity is to use the NernstEinstein Equation. It is a virtual function and can be redefined.
INPUTS: The thermodynamic state
Temperature (T)
Pressure (P)
Composition (chem)
RETURNS:
diffusivity in m^2 / s
NOTE: The Nernst-Einstein Relation is "strictly applicable at
infinite dilution." (J. Newman, Electrochemical Systems
p 229)
***********************************************************************/
{double diffusivity;
diffusivity= R*T*dbu; //Nernst-Einstein Eq
return(diffusivity);
443
}
double TASpecies::a(double T, double P, TChemistry * chem)
/***********************************************************************
a: This function returns the activity of the species. The default
method is to use the dilute solution approximation and return
the concentration of the species as the activity. It is a virtual
function and can be redefined.
INPUTS: The thermodynamic state
Temperature (T)
Pressure (P)
Composition (chem)
RETURNS:
activity in unitless
***********************************************************************/
{double conc;
conc = chem->GetConcentration(name);
return(conc);
}
TAlppp::TAlppp()
/***********************************************************************
TAlppp(): This is the constructor for the Aluminum +3 ion.
***********************************************************************/
{z = 3;
dbu = 2.184e-13; // CRC compare w/%%11%% Siitari
u0 = -485343;
// CRC
name="Al+++";
}
THp::THp()
/***********************************************************************
THp(): This is the constructor for the Hydrogen +1 ion.
***********************************************************************/
{z = 1;
dbu = 3.756e-12;
u0 = 0;
name="H+";
}
TOHm::TOHm()
/***********************************************************************
TOHm(): This is the constructor for the Hydroxyl -1 ion.
***********************************************************************/
{z = -1;
dbu = 2.127e-12;
u0 = 0;
name="OH-";
}
444
TKp::TKp()
/***********************************************************************
TKp(): This is the constructor for the Potassium +1 ion.
***********************************************************************/
{z = 1;
dbu = 7.893e-13;
u0 = 0;
name="K+";
}
TNap::TNap()
/***********************************************************************
TNap(): This is the constructor for the Sodium +1 ion.
***********************************************************************/
{z = 1;
dbu = 5.379e-13;
u0 = 0;
name="Na+";
}
TClm::TClm()
/***********************************************************************
TClm(): This is the constructor for the Chloride -1 ion.
***********************************************************************/
{z = -1;
dbu = 8.197e-13;
u0 = 0;
name="Cl-";
}
TNipp::TNipp()
/***********************************************************************
TNipp(): This is the constructor for the Nickel +2 ion.
***********************************************************************/
{z = 2;
dbu = 2.685e-13;
u0 = 0;
name="Ni++";
}
TFepp::TFepp()
/***********************************************************************
TFepp(): This is the constructor for the Nickel +2 ion.
***********************************************************************/
{z = 2;
dbu = 2.900e-13;
u0 = 0;
name="Fe++";
}
TCrO4mm::TCrO4mm()
445
/***********************************************************************
TCrO4mm(): This is the constructor for the Chromate -2 ion.
***********************************************************************/
{z = -2;
dbu = 4.565e-13;
u0 = 0;
name="CrO4--";
}
TCrppp::TCrppp()
/***********************************************************************
TCrppp(): This is the constructor for the Chromium +3 ion.
***********************************************************************/
{z = 3;
dbu = 2.399e-13;
u0 = 0;
name="Cr+++";
}
TNO3m::TNO3m()
/***********************************************************************
TNO3m(): This is the constructor for the Nitrate -1 ion.
***********************************************************************/
{z = -1;
dbu = 7.672e-13;
u0 = 0;
name="NO3-";
}
TAgp::TAgp()
/***********************************************************************
TAgp(): This is the constructor for the Silver +1 ion.
***********************************************************************/
{z = 1;
dbu = 4.78e-13;
u0 = 0;
name="Ag+";
}
TCrOHpp::TCrOHpp()
/***********************************************************************
TCrOHpp(): This is the constructor for the Cr(OH) +2 ion.
***********************************************************************/
{ z = 2;
dbu = 4.78e-13;
u0 = 0;
name="CrOH++";
}
TCrOHOHp::TCrOHOHp()
/***********************************************************************
446
TCrOHOHp(): This is the constructor for the Cr(OH)2 +1 ion.
***********************************************************************/
{z = 1;
dbu = 4.78e-13;
u0 = 0;
name="CrOHOH+";
}
TCrOHOHOH::TCrOHOHOH()
/***********************************************************************
TCrOHOHOH(): This is the constructor for the Cr(OH)3 solid in
saturated solution. Changue u to zero to make immobile;
***********************************************************************/
{z = 0;
dbu = 4.78e-13;
u0 = 0;
name="CrOHOHOH";
}
TCrOHOHOHOHm::TCrOHOHOHOHm()
/***********************************************************************
TCrOHOHOHOHm(): This is the constructor for the Cr(OH)4 -1 ion.
***********************************************************************/
{z = -1;
dbu = 4.78e-13;
u0 = 0;
name="CrOHOHOHOH-";
}
TLip::TLip()
/***********************************************************************
TLip(): This is the constructor for the Li +1 ion.
***********************************************************************/
{z = 1;
dbu = 4.153e-13;
u0 = 0;
name="Li+";
}
TSO4mm::TSO4mm()
/***********************************************************************
TSO4mm(): This is the constructor for the SO4 -2 ion.
***********************************************************************/
{z = -2;
dbu = 4.297e-13;
u0 = 0;
name="SO4--";
}
TElectrical::TElectrical()
/***********************************************************************
TElectrical(): This is the constructor for the Electrical value
addin.
447
***********************************************************************/
{z = 0;
dbu = 0;
u0 = 0;
name = "electrical";
}
TTemperature::TTemperature()
/***********************************************************************
TElectrical(): This is the constructor for the Temperature value
addin.
***********************************************************************/
{z = 0;
dbu = 0;
u0 = 0;
name = "temperature";
}
TPressure::TPressure()
/***********************************************************************
TElectrical(): This is the constructor for the Pressure value
addin.
***********************************************************************/
{z = 0;
dbu = 0;
u0 = 0;
name = "pressure";
}
448
Appendix G: tallspec.h
//
TALLSPEC.H
#ifndef __TALLSPEC_H
#define __TALLSPEC_H
#ifndef __TASPECIE_H
#include "taspecie.H"
#endif
#ifndef __MATH_H
#include <math.h>
#endif
#ifndef __STRING_H
#include <string.h>
#endif
#define
MAXNUMBEROFSPECIES 100
class TAllSpecies
/************************************************************************
class TAllSpecies
last modified 3/13/97
To Do: Work on EnforceEquilibria
************************************************************************/
{
public:
TASpecies * allspecies[MAXNUMBEROFSPECIES];
// Properties to look up for individual species
int z(TSpeciesName name);
//returns charge equivalence
double u(TSpeciesName name, double T, double P, TChemistry
ionic mobility
double D(TSpeciesName name, double T, double P, TChemistry
double a(TSpeciesName name, double T, double P, TChemistry
#
* chem); //returns
* chem); //
* chem);
double u0(TSpeciesName name); //returns std. chemical potnential
// Properties of collections of species
double kappa(double T, double P, TChemistry * chem);
double ChargeDensity(TChemistry * chem);
double IonicStrength(TChemistry * chem);
double pH(TChemistry * chem);
EnforceEquilibria(TChemistry * chem); // NOT VALIDATED
CrEquilibria(TChemistry * chem);
449
// Properties to create and maintain data structure
void AddSpecies(TASpecies * newspecies);
void AddSpecies(int speciesz, double speciesu, double speciesu0,
TSpeciesName speciesname);
void DeleteSpecies(TSpeciesName name);
int size;
TAllSpecies();
private:
TASpecies * FindTASpecies(TSpeciesName name);
};
#endif
450
Appendix H: tallspec.c
/***********************************************************************
TALLSPEC.CPP 3/6/94
This object is just a container to hold all of the TASpecies
that are in use. It can be queried for a,u,D,z,u0 just like
TASpecies. Currently it does not check for the presence
of a specie in the set. => Will blow if misused.
***********************************************************************/
#ifndef __TALLSPEC_H
#include "tallspec.H"
#endif
TAllSpecies::TAllSpecies()
/***********************************************************************
TASpecies(): Constructor for class
***********************************************************************/
{size = 0;
}
int TAllSpecies::z(TSpeciesName name)
/***********************************************************************
z(): This function finds the z for species name.
RETURNS: the charge equivalents of species name
DANGER: Do not call a species that does not exist in this data
structure.
***********************************************************************/
{if(!((StringsEqual(name,"electrical"))
||(StringsEqual(name,"temperature"))
||(StringsEqual(name,"pressure"))) )
{return(FindTASpecies(name)->z);
}
else
{return(0);
}
}
double TAllSpecies::u(TSpeciesName name, double T, double P, TChemistry * chem)
/************************************************************************
u(): This function returns the mobility for species name.
RETURNS: the ionic mobility of species name[mol-m^2/J-s]
DANGER: Do not call a species that does not exist in this data
structure.
************************************************************************/
{if(!((StringsEqual(name,"electrical"))
451
||(StringsEqual(name,"temperature"))
||(StringsEqual(name,"pressure"))) )
{return(FindTASpecies(name)->u(T,P,chem));
}
else
{return(0);
}
}
double TAllSpecies::D(TSpeciesName name, double T, double P, TChemistry * chem)
/************************************************************************
D(): This function returns the diffusivity for species name
RETURNS: the ionic Diffusivity of species name [m^2/s]
DANGER: Do not call a species that does not exist in this data
structure.
************************************************************************/
{if(!((StringsEqual(name,"electrical"))
||(StringsEqual(name,"temperature"))
||(StringsEqual(name,"pressure"))) )
{return(FindTASpecies(name)->D(T,P,chem));
}
else
{return(0);
}
}
double TAllSpecies::a(TSpeciesName name, double T, double P, TChemistry * chem)
/************************************************************************
a(): This function returns the single ion activity of species name
RETURNS: the single ion activity [no units]
DANGER: Do not call a species that does not exist in this data
structure.
************************************************************************/
{if(!((StringsEqual(name,"electrical"))
||(StringsEqual(name,"temperature"))
||(StringsEqual(name,"pressure"))) )
{return(FindTASpecies(name)->a(T,P,chem));
}
else
{return(0);
}
}
double TAllSpecies::u0(TSpeciesName name)
/************************************************************************
u0(): This function returns the standard Gibb's Free energy of
formation of species name.
452
RETURNS: the standard Gibbs Free Energy of formation
[mol-m^2/J-s]
DANGER: Do not call a species that does not exist in this data
structure.
************************************************************************/
{if(!((StringsEqual(name,"electrical"))
||(StringsEqual(name,"temperature"))
||(StringsEqual(name,"pressure"))) )
{return(FindTASpecies(name)->u0);
}
else
{return(0);
}
}
double TAllSpecies::kappa(double T, double P, TChemistry * chem)
/************************************************************************
kappa(): This function returns the ionic conductivity of a solution with
composition chem.
RETURNS: the conductivity of the solution in (Ohm-m)^-1
From Scully A. Echem Notes Vol 1 pg 2
lambda = zi F^2 ui
kappa = Sum ( zi^2 F^2 ui Ci)
************************************************************************/
{int count;
int z1;
double kappa = 0;
for(count=0;count<chem->size;count++)
{if (!((StringsEqual(chem->names[count],"electrical"))
||(StringsEqual(chem->names[count],"temperature"))
||(StringsEqual(chem->names[count],"pressure"))) )
{z1 = z(chem->names[count]);
kappa = kappa +
z1*z1*F2*u(chem->names[count],T,P,chem)*chem->concentrations[count];
}
}
return(kappa);
}
void TAllSpecies::AddSpecies(TASpecies * newspecies)
/************************************************************************
AddSpecies(): This function is the better of the two for adding species
to this container class. (It is better because by adding one of
453
the child classes of TASpecies you don't have to remember the
properties each time you create of these types.)
************************************************************************/
{allspecies[size] = newspecies;
size++;
}
void TAllSpecies::AddSpecies(int speciesz, double speciesu, double speciesu0,
TSpeciesName speciesname)
/************************************************************************
AddSpecies(): This function is the worse of the two for adding species
to this container class. (It is worse because by not adding one
of the child classes of TASpecies you have to remember the
properties each time you create of these types.)
************************************************************************/
{allspecies[size] = new TASpecies(speciesz,speciesu,speciesu0,speciesname);
size++;
}
void TAllSpecies::DeleteSpecies(TSpeciesName speciesname)
/************************************************************************
DeleteSpecies(): This function deletes a species from the type.
Immediately, I can't see any reason why you would want to do
that. It would speed things up a little, but why you add a
species you didn't want to begin with?
************************************************************************/
{int count;
// Find the right name
for(count=0;!(StringsEqual(speciesname,allspecies[count]->name)&&(count<size));co
unt++);
// get rid of pointer
delete allspecies[count];
size--; //there is one fewer TASpecies
for(;count!=size;) // move the rest of the TASp[count]->name[ecies' up
{allspecies[count]=allspecies[count+1];
count++;
}
}
TASpecies *TAllSpecies::FindTASpecies(TSpeciesName name)
/************************************************************************
FindTASpecies: This function sorts through the collection of TASpecies
objects and returns the one whose name matches "name".
454
DANGER: Will return a pointer to an undefined TASpecies if the
name is not present in the list, ie. it will point to
whatever garbage is present in memory at the address
just after the end of the array. This will give
incorrect results to all the steps following.
************************************************************************/
{int count;
// Loop thru list, testing equality of target and destination names
for(count=0;!(StringsEqual(name,allspecies[count]->name)&&(count<size));count++);
return(allspecies[count]);
}
double TAllSpecies::ChargeDensity(TChemistry * chem)
/************************************************************************
ChargeDensity(): This function retuns the charge density of a given
solution composition, chem.
RETURNS: Charge Density in C/m^3
DANGER: All the species in the chem have to be present in this
data structure.
************************************************************************/
{int count;
int size,z1;
double conc;
double cd = 0;
TSpeciesName name;
for(count=0;count<chem->size;count++)
{name = chem->names[count];
if(!((StringsEqual(chem->names[count],"electrical"))
||(StringsEqual(chem->names[count],"temperature"))
||(StringsEqual(chem->names[count],"pressure"))) )
{z1 = z(name);
conc = chem->GetConcentration(name);//chem->names[count]);
cd = cd + z1*conc*F;
}
}
return(cd);
}
double TAllSpecies::IonicStrength(TChemistry * chem)
/************************************************************************
IonicStrength(): This function returns the ionic strength of the
solution, chem.
455
From Baes&Mesmer p. xx
I = Sum(zi^2 [Ci]) / 2
3/13/97 This isn't crashing, and was verified for 1M NaCl,
pH=1
************************************************************************/
{int count;
int size,z1;
double conc;
double I = 0;
TSpeciesName name;
size = chem->size;
// loop thru species
for(count=0;count<size;count++)
{name = chem->names[count];
if(!((StringsEqual(chem->names[count],"electrical"))
||(StringsEqual(chem->names[count],"temperature"))
||(StringsEqual(chem->names[count],"pressure"))) )
{z1 = z(name);
conc = chem->GetConcentration(name);
I = I + z1*z1*conc;
}
}
I = I/2000; // have to correct concentrations to molar
return(I);
}
double TAllSpecies::pH(TChemistry * chem)
/************************************************************************
pH(): This function calculates the pH of the solution, chem.
RETURNS: The negative of the logithm of [H+].
Could be modified to account for [Cl-] etc.
Checked 3/13/97
************************************************************************/
{double dbpH;
dbpH = -log10(chem->GetConcentration("H+")/1000); // have to convert to molar
return(dbpH);
}
TAllSpecies::EnforceEquilibria(TChemistry * chem)
/************************************************************************
EnforceEquilibria: This function equilibrates the various species of
Chromium, Cr+3, CrOH+2, and Cr(OH)2+.
456
ASSUMES that I does NOT change during calculatations
Not verified as of 3/13/97
THIS FUNCTION HAS BEEN SUPERSEDED BY CrEqulibria - LEFT AS EXAMPLE
OF EARLY EFFORTS
************************************************************************/
{double Hp, Crp3, CrOHp2, CrOHOHp;
double dHp, dCrp3, dCrOHp2, dCrOHOHp;
double Q11, Q12, r11,r12, I, sqrtI, exp;
int sign1, sign2, done;
double l1,l2,conc;
sign1 = 0; sign2 = 0; done = 0;
I = IonicStrength(chem); I = 1;
sqrtI = pow(I,0.5);
exp = -4.0 - (2.044 * sqrtI) / (1+sqrtI);
Q11 = pow(10,exp);
exp = -9.7;
Q12 = pow(10,exp);
Hp
= chem->GetConcentration("H+");
dHp=0;
Crp3
= chem->GetConcentration("Cr+++");
dCrp3 = 0;
CrOHp2 = chem->GetConcentration("CrOH++");
dCrOHp2 = 0;
CrOHOHp = chem->GetConcentration("CrOHOH+"); dCrOHOHp = 0;
l1 = Crp3 /1000; l2 = l1;
while(!done)
{r11 = (CrOHp2 + dCrOHp2)*(Hp + dHp)/(Crp3 + dCrp3);
if(r11 > Q11)
{dCrp3
= dCrp3
+ l1;
dHp
= dHp
- l1;
dCrOHp2 = dCrOHp2 - l1;
if(sign1 > 0)
{//l1 = l1 * 1.01;
}
else
{l1 = l1 * .49;
}
sign1 = 1;
}
else
{dCrp3
= dCrp3
- l1;
dHp
= dHp
+ l1;
dCrOHp2 = dCrOHp2 + l1;
if(sign1 < 0)
{//l1 = l1 * 1.95;
}
457
else
{l1 = l1 * .49;
}
sign1 = - 1;
}
r12 = (CrOHOHp + dCrOHOHp)*(Hp + dHp)*(Hp + dHp)/(Crp3 + dCrp3);
if(r12 > Q12)
{dCrp3
= dCrp3
+ l2;
dHp
= dHp
- 2 * l2;
dCrOHOHp = dCrOHOHp - l2;
if(sign2 > 0)
{//l2 = l2 * 1.95;
}
else
{//l2 = l2 * .49;
}
sign2 = 1;
}
else
{dCrp3
= dCrp3
- l2;
dHp
= dHp
+ 2 * l2;
dCrOHOHp = dCrOHOHp + l2;
if(sign2 < 0)
{l2 = l2 * 1.95;
}
else
{l2 = l2 * .49;
}
sign2 = - 1;
}
if(((1e6*l1) < (Crp3 + dCrp3)) &&((1e6*l2) < (Crp3 + dCrp3)))
{done = 1;
}
}
conc = Hp + dHp;
chem->SetConcentration("H+",conc);
conc = Crp3 + dCrp3;
chem->SetConcentration("Cr+++",conc);
conc = CrOHp2 + dCrOHp2;
chem->SetConcentration("CrOH++",conc);
conc = CrOHOHp + dCrOHOHp;
chem->SetConcentration("CrOHOH+",conc);
}
TAllSpecies::CrEquilibria(TChemistry * chem)
/************************************************************************
458
Requirements:
Hp,OHm, Crppp,CrOHpp,CrOHOHp,CrOHOHOH, CrOHOHOHOHm must be in chem!
Validated 8/21/97
Conc Cr+3 [mol/m^3]
Conc H [mol/m^3] pH
===================
================ ==
1000
12.5116
1.90268711e-2
100
3.90393
2.408398
10
1.18348
2.9268391
crc->CrEquilibria(nodes[count]->chem);
}
************************************************************************/
{double Q11, Q12, Q13, Q14;
double H,OH, Cr0,Cr1,Cr2,Cr3,Cr4;
double logH, logOH, logCr0, logCr1, logCr2, logCr3, logCr4;
double a,b,c,x; // values for determinign the concentation of H and OH
double TotCr, TestH, DerCr, DerH;
double lambdaCr, lambdaH;
int done = 0;
TSpeciesName Crppp;
double fit, exp, lambda;
Crppp = "Cr+++";
// Grab the concentrations of the relevant species
if ((!chem->GetFixed(Crppp)) && (chem->GetConcentration("Cr+++") > 0))
{H
= chem->GetConcentration("H+");
OH
= chem->GetConcentration("OH-");
Cr0
Cr1
Cr2
Cr3
Cr4
=
=
=
=
=
chem->GetConcentration("Cr+++");
chem->GetConcentration("CrOH++");
chem->GetConcentration("CrOHOH+");
chem->GetConcentration("CrOHOHOH");
chem->GetConcentration("CrOHOHOHOH-");
// Calculate how much OH would be generated if all Cr-species dehydrolyzed
OH = OH + Cr1 + 2*Cr2 + 3*Cr3 + 4*Cr4;
// Equilibrate H and OH
// want to find x such that (H-x) * (OH-x) = 1e-8 (mol/m^3)
a = 1;
b = -H - OH;
c = H * OH - 1e-8;
459
x = (-b - sqrt(b*b - 4*a*c))/2*a;
H = H - x;
OH = OH - x;
//Set the total Cr that has to be apportioned among the products
TotCr = Cr0 + Cr1 + Cr2 + Cr3 + Cr4;
// Set the Formation
Q11 = pow(10,-0.8);
Q12 = pow(10,-3.7);
Q13 = pow(10,-9.0);
Q14 = pow(10,-15.4);
quotients
//Baes + Mesmer
//Baes + Mesmer
//Baes + Mesmer
//Baes + Mesmer
-3.8
-9.7
-18.0
-27.4
(+3 for /m^3)
(+6 for /m^3
(+9 for /m^3
(+12 for /m^3
Cr0 = TotCr; //initialize the first guess for Cr=-log(
TestH = H;
//initialize the first guess for H
lambdaCr = 2.3;
lambdaH = 2.3;
exp = -4; lambda = 4;
while (!done)
{TestH = pow(10,exp);
Cr1
Cr2
Cr3
Cr4
=
=
=
=
Q11
Q12
Q13
Q14
*
*
*
*
Cr0
Cr0
Cr0
Cr0
/
/
/
/
(TestH);
(TestH*TestH);
(TestH*TestH*TestH);
(TestH*TestH*TestH*TestH);
// Find out how much TOTAL Cr is produced by these conditions
DerCr = Cr0 + Cr1 + Cr2 + Cr3 + Cr4;
// Correct Cr0 to get the exact amount of Cr+3 required to match TotCr
Cr0 = Cr0 * TotCr/DerCr;
// Recalculate the Conc's of all hydrolysis products
// Could just multiply by TotCr/DerCr - this is clearer to read
Cr1 = Q11 * Cr0 / (TestH);
Cr2 = Q12 * Cr0 / (TestH*TestH);
Cr3 = Q13 * Cr0 / (TestH*TestH*TestH);
Cr4 = Q14 * Cr0 / (TestH*TestH*TestH*TestH);
// This finds the total [H] b4 it redistributes with OH
DerH = H + Cr1 + 2*Cr2 + 3*Cr3 + 4*Cr4;
// Settle the [H] and [OH] conc's for with the formation of H2O
460
a = 1;
b = - DerH - OH;
c = DerH * OH - 1e-8;
x = (-b - sqrt(b*b - 4*a*c))/2*a;
DerH
= DerH - x;
// If the resulting [H](DerH) > initial [H](TestH) the next TestH should be
higher
// If less, next TestH should be lower
// If the relaticve postion cross over need to reverse the sign and shrink
lambda
if(DerH > TestH) // started too basic need lambda > 0
{if(lambda < 0) // just crossed over
{lambda = -0.49 * lambda;
}
}
else
// started too acidic, need lambda < 0
{if(lambda > 0)
{lambda = -0.49 * lambda;
}
}
fit = fabs((DerCr-TotCr)/TotCr) + fabs((TestH-DerH)/TestH);
printf("%lg %lg %lg %lg %lg %lg %lg \n",Cr0,
TotCr, DerCr, TestH, DerH, fit, lambda);
if(fabs(lambda) < 1e-6)
{done = 1;
}
else
{exp = exp + lambda;
}
}
H = DerH;
OH = OH -x;
// THis step screws with the pH!!!!
//Fix the OH relative to the new H conc
//a = 1;
// b = -H - OH;
//c = H * OH - 1e-8;
//x = (-b - sqrt(b*b - 4*a*c))/2*a;
//H = H - x;
//OH = OH - x;
// OH = pow(10,-8) / H;
461
// put the Values back into chem
chem->SetConcentration("H+",H);
chem->SetConcentration("OH-",OH);
chem->SetConcentration("Cr+++",Cr0);
chem->SetConcentration("CrOH++",Cr1);
chem->SetConcentration("CrOHOH+",Cr2);
chem->SetConcentration("CrOHOHOH",Cr3);
chem->SetConcentration("CrOHOHOHOH-",Cr4);
}
}
462
Appendix I: treactio.h
#ifndef __TREACTIO_H
#define __TREACTIO_H
#ifndef __MATH_H
#include <math.h>
#endif
#ifndef __CONSTANT_H
#include "constant.H"
#endif
#ifndef __TCHEM_H
#include "tchem.H"
#endif
#ifndef __TALLSPEC_H
#include "tallspec.H"
#endif
#define MAXREACTIONLENGTH 40
class TReaction
{public:
TAllSpecies * environment;
char
description[MAXREACTIONLENGTH];
double GetCurrentDensity(TChemistry * chemistry, double E, double T, double
P);
virtual double GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry,
double E, double T, double P);
virtual double Erev(TChemistry * chemistry, double T, double P);
TReaction();//needed for subclasses
TReaction(TAllSpecies * allspecies,double a, double c, double k, int
numelectrons);
double
double
double
int n;
double
aa; //anodic transfer coefficient
ac; //cathodic transfer coefficient
i0; //exchange current density
// # electrons transferred per reaction
k0; //standard rate constant
private:
virtual double AnodicCurrentDensity(TChemistry * chemistry, double E, double
T, double P);
virtual double CathodicCurrentDensity(TChemistry * chemistry, double E, double
T, double P);
463
};
class TAlDiss: public TReaction
{public:
TAlDiss(TAllSpecies * allspecies); // constructor
double GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry, double E,
double T, double P);
private:
TSpeciesName Alppp;
int vAlppp;
double Erev(TChemistry * chemistry, double T, double P);
double AnodicCurrentDensity(TChemistry * chemistry, double E, double T, double
P);
double CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
};
class THER: public TReaction
{public:
THER(TAllSpecies * allspecies); // constructor
THER(TAllSpecies * allspecies,double a, double c, double i);
double GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry,
double E, double T, double P);
double Erev(TChemistry * chemistry, double T, double P);
private:
double AnodicCurrentDensity(TChemistry * chemistry, double E, double T, double
P);
double CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
TSpeciesName Hp;
int vHp;
};
class T304A: public TReaction
{public:
T304A(TAllSpecies * allspecies); // constructor
private:
TSpeciesName Fepp;
TSpeciesName Crppp;
int vFepp, vCrppp;
double AnodicCurrentDensity(TChemistry * chemistry, double E, double T, double
P);
double CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
};
464
class TSAF2205Diss: public TReaction
{public:
TSAF2205Diss(TAllSpecies * allspecies);
private:
double AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
double CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
};
class T304_1An: public TReaction
{public:
T304_1An(TAllSpecies * allspecies);
double GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry, double E,
double T, double P);
private:
double dbEtaA;
double dbEtaC;
double dbIcorr;
double dbEcorr;
double dbAvgz;
TSpeciesName Hp;
double dbfFe;
TSpeciesName
double dbfCr;
TSpeciesName
double dbfNi;
TSpeciesName
double dbfMn;
TSpeciesName
Fepp;
Crppp;
Nipp;
Mnpppp;
double AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
double CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
};
class T304_1Ca: public TReaction
{public:
T304_1Ca(TAllSpecies * allspecies);
double GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry, double E,
double T, double P);
private:
double dbEtaA;
double dbEtaC;
double dbIcorr;
double dbEcorr;
double dbAvgz;
TSpeciesName OHm;
465
double AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
double CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P);
};
#endif
466
Appendix J: treactio.c
/***********************************************************************
4/13/94
This module defines the base class TReaction.
A reaction is just the production (or consumption) of species.
Multiple reactions can be combined to create a polarization curve.
This is necessary because the net current cannot be related to the
flux of species across an interface at low overpotentials.
The theory in this section is based on
J. Newman, Electrochemical Systems
J.R. Scully , MSE 771 Advanced E-Chem Class Notes
G.E. Stoner, MSE 662? E-Chem Class Notes
Conventions:
All current densities given in [A/m^2-s]
(+) current is anodic (hole current flowing from electrode to
solution)
(-) current is cathodic(hole current flowing from solution to
electrode)
(+) chemical flux is species generation
(-) chemical flux is species consumption
Definitions:
eta
= overpotential
E
= electrode potential
Erev
= reversible potential
E0
= Equilibrium potential
R
= Universal Gas Constant, definied in "constants.h"
T
= temperature
a(X)
= activity of X
u0(X) = standard chemical potential of X
n
= number of electrons transferred in reaction
deltaG = change in Gibbs Free Energy when all reactants and products
have unit activity.
i0 = exchange current density
aa
ac
N(X)
v(X)
=
=
=
=
anodic transfer coefficient
cathodic transfer coefficient
chemical flux of species X
stoichiometric coefficient of species X
Relations:
Thermodynamics:
467
For the reaction defined below:
aA + bB <=> cC + dD + nea(C)a(D)
Erev = E0 + RT ln -------a(A)a(B)
(Nernst Equation)
where E is defined by the relation:
nFE0 = deltaG
(Scully defines deltaG reversed )
=> E0 = u0(C)+u0(D)-u0(A)-u0(B)
----------------------nF
Kinetics:
Overpotential is defined by:
(Newman's Surface overpotential section 8
eta = E - Erev
The net current is governed by the Butler-Volmer Relation:
|
aa F
ac F
|
inet = i0|exp [---- eta] - exp [- ---- eta] |
|
RT
RT
|
Anodic (+) current is given by:
ian =
|
aa F
|
i0|exp [---- eta] |
|
RT
|
Cathodic (-) current is given by:
|
ac F
|
ica = -i0|exp [- ---- eta] |
|
RT
|
Chemical Fluxes:
N(X) =
inet
---- v(X)
nF
[A/m^2]
--------------[eq/mol]-[C/eq]
For anodic species:
(current > 0) => N > 0
(current < 0) => N < 0
468
For cathodic species:
(current > 0) => N < 0
(current < 0) => N > 0
Comments:
Right now u0's of species are used to calculate E0
=> if speed issue, can multiply by hand,enter into code,
save calculations
Issue of cathodic/anodic produce/consume
can set v(X) (-) for reduced species
=> hides what is really happening (bad)
=> only have to get it straight in one place
rest of code identical for both cathodic and anodic species
(good)
can flip in code
=> oppposites of above (good), (bad)
Stupid Sign convention used by corrosion people:
Corrosion people use wrong sign convention for current
electron flow - not hole flow
Also take current as surface to p-stat
Anodic current
(+) metal ions flow from surface to solution, e-'s from from
surface to pstat.
In corrosion this is (+) current
Cathodic current
(+) metal ions go solution to surface, e-'s go p-stat to surface
this is (-) current
This program will use KCS sign convention:
Hole flow
Anodic current (+) but taken as flow from p-stat to surface
Cathodic current (-) but taken as hole flow from pstat to surface
Other Conventions
469
Fluxes in m^-2
Concentrations in m^-3
8/23/96
Bard and Faulkner p. 96
i = nFAk0 [Co(0,t) exp(-alpha*nf*exp(E-E0)) - Cr(0,t) exp((1-alpha)nf(E-E0))
where f = F/RT
ac should be negative, aa positive
NOTE: REALLY SHOULD HAVE TO DEFINE ANODIC AND CATHODIC CURRENT DENSITY FUNCTIONS
***********************************************************************/
#ifndef __TREACTIO_H
#include "treactio.H"
#endif
TReaction::TReaction()
/***********************************************************************
TReaction() : Minimal constructor. This function is useless as is,
but a default constructor must be supplied to allow the
creation of child types like TAlppp, etc. It has been reduced
to a stub to possibly speed things up.
***********************************************************************/
{
}
TReaction::TReaction(TAllSpecies * allspecies, double a, double c, double k, int
numelectrons)
/***********************************************************************
TReaction(): Constructor for current only. This function will
create a reaction that generates current but no chemical
species.
***********************************************************************/
{environment = allspecies;
aa = a;
ac = c;
k0 = k;
n = numelectrons;
}
double TReaction::GetCurrentDensity(TChemistry * chemistry,
double E, double T, double P)
/***********************************************************************
GetCurrentDensity(): This function calls the private member
functions AnodicCurrentDensity and CathodicCurrentDensity
470
those functions can be redefined for inheritance.
Returns the current density in A/m^2
|
aa F
ac F
|
inet = i0|exp [---- eta] - exp [- ---- eta] |
|
RT
RT
|
***********************************************************************/
{double inet; // net current
inet = AnodicCurrentDensity(chemistry,E,T,P);
inet = inet + CathodicCurrentDensity(chemistry,E,T,P);
return(inet);
}
double TReaction::GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry,
double E, double T, double P)
/*********************************************************************
GetFluxOfSpecies() : This function returns the flux of species name.
It is a virtual function and can be redefined.
RETURNS: The chemical flux in mol/(m^2-s)
inet
[A/m^2]
---- v(X)
--------------nF
[eq/mol]-[C/eq]
***********************************************************************/
{return(0);
}
N(X) =
double TReaction::Erev(TChemistry * chemistry, double T, double P)
/***********************************************************************
Erev(): This function calculates the reversible potential for the
reaction. It depends on the reactions and the concentrations
of the reactants and products. It is a virtual function so that
it can be redefined by child functions.
For the reaction defined below:
aA + bB <=> cC + dD + neRT
a(C)a(D)
Erev = E0 + -- ln -------nF
a(A)a(B)
where:
(Nernst Equation)
E0 = u0(C)+u0(D)-u0(A)-u0(B)
----------------------nF
***********************************************************************/
471
{return(0);
}
double TReaction::AnodicCurrentDensity(TChemistry * chemistry, double E, double
T, double P)
/***********************************************************************
AnodicCurrentDensity: This function calculates the anodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{return(0);
}
double TReaction::CathodicCurrentDensity(TChemistry * chemistry, double E, double
T, double P)
/***********************************************************************
CathodicCurrentDensity: This function calculates the cathodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{return(0);
}
TAlDiss::TAlDiss(TAllSpecies * allspecies)
/***********************************************************************
TAlDiss(): This is the constructor for Aluminum dissolution. It is
an example of the redefining process, and does not represent
any particular physical case.
***********************************************************************/
{
environment = allspecies;
n = 3;
aa = .5;
//anodic transfer coefficient
ac = .5;
//cathodic transfer coefficient
// This used to be used to calculate current, it still could be
// instead of k0,C
// i0 = 1e-5; //exchange current density
A/m^2
strcpy(description,"Al <=> Al+++ + 3e-");
Alppp ="Al+++";
vAlppp = 1;
}
double TAlDiss::GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry,
double E, double T, double P)
/***********************************************************************
GetFluxOfSpecies() : This function returns the flux of species name.
It is a virtual function and can be redefined.
472
RETURNS: The chemical flux in mol/(m^2-s)
inet
[A/m^2]
---- v(X)
--------------nF
[eq/mol]-[C/eq]
***********************************************************************/
{double flux;
N(X) =
if(StringsEqual(name,Alppp))
{flux = GetCurrentDensity(chemistry,E,T,P)*vAlppp
/(n*F);
}
else
{flux = 0;
}
return(flux);
}
double TAlDiss::Erev(TChemistry * chemistry, double T, double P)
/***********************************************************************
Erev(): This function calculates the reversible potential for the
reaction. It depends on the reactions and the concentrations
of the reactants and products. It is a virtual function so that
it can be redefined by child functions.
For the reaction defined below:
aA + bB <=> cC + dD + neRT
a(C)a(D)
Erev = E0 + -- ln -------nF
a(A)a(B)
where:
(Nernst Equation)
E0 = u0(C)+u0(D)-u0(A)-u0(B)
----------------------nF
The reaction here is:
Al <=> Al+++ + 3e***********************************************************************/
{double E0;
double Erev;
E0 = (environment->u0(Alppp))/(n*F);
Erev = E0 + R*T*log(environment->a(Alppp,T,P,chemistry))/(n*F); // log==ln,
log10==log in C++
return(Erev);
}
473
double TAlDiss::AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P)
/***********************************************************************
AnodicCurrentDensity: This function calculates the anodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{double inet;
inet = 0;
return(inet);
}
double TAlDiss::CathodicCurrentDensity(TChemistry * chemistry, double E, double
T, double P)
/***********************************************************************
CathodicCurrentDensity: This function calculates the cathodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{double inet; // net current
inet = 0;
return(inet);
}
THER::THER(TAllSpecies * allspecies)
/***********************************************************************
THER: This function is the constructor for the THER class.
***********************************************************************/
{environment = allspecies;
n = 2;
aa = .5;
//anodic transfer coefficient
ac = .5;
//cathodic transfer coefficient
// i0 = 1e-5; //exchange current density A/m^2
k0 = 1e-10;
strcpy(description,"H2 <=> 2 H+ + 2e-");
Hp ="H+";
vHp = 2;
}
double THER::GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry,
double E, double T, double P)
/***********************************************************************
GetFluxOfSpecies() : This function returns the flux of species name.
It is a virtual function and can be redefined.
RETURNS: The chemical flux in mol/(m^2-s)
inet
[A/m^2]
474
N(X) =
---- v(X)
--------------nF
[eq/mol]-[C/eq]
***********************************************************************/
{double flux;
if(StringsEqual(name,Hp))
{flux = GetCurrentDensity(chemistry,E,T,P)*vHp
/(n*F);
}
else
{flux = 0;
}
return(flux);
}
double THER::Erev(TChemistry * chemistry, double T, double P)
/***********************************************************************
Erev(): This function calculates the reversible potential for the
reaction. It depends on the reactions and the concentrations
of the reactants and products. It is a virtual function so that
it can be redefined by child functions.
For the reaction defined below:
aA + bB <=> cC + dD + neRT
a(C)a(D)
Erev = E0 + -- ln -------nF
a(A)a(B)
where:
(Nernst Equation)
E0 = u0(C)+u0(D)-u0(A)-u0(B)
----------------------nF
The reaction here is:
Al <=> Al+++ + 3e***********************************************************************/
{double E0;
double Erev;
E0 = (environment->u0(Hp))/(n*F);
Erev = E0 + R*T*log(environment->a(Hp,T,P,chemistry))/(n*F); // log==ln,
log10==log in C++
return(Erev);
}
double THER::AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P)
/***********************************************************************
AnodicCurrentDensity: This function calculates the anodic current
475
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{double eta; // surface overpotential
double inet; // net current
double C0;
C0 = 1; // This is concentration of the reacting species
eta = E - Erev(chemistry,T,P);
inet = -n*F*k0*C0 * exp(-(ac*F*eta)/(R*T));
return(inet);
}
double THER::CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P)
/***********************************************************************
CathodicCurrentDensity: This function calculates the cathodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{double eta; // surface overpotential
double inet; // net current
double C0;
C0 = 1; // This is concentration of the reacting species
eta = E - Erev(chemistry,T,P);
inet = -n*F*k0*C0 * exp(-(ac*F*eta)/(R*T));
return(inet);
}
T304A::T304A(TAllSpecies * allspecies)
/***********************************************************************
***********************************************************************/
{environment = allspecies; //grabs the characteristics of chemical species for
use by this reaction
strcpy(description,"304 <=> Fe++ + Cr+++ + 5e-");
Fepp
= "Fe++";
Crppp = "Cr+++";
vFepp = 2;
vCrppp = 3;
}
double T304A::AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P)
476
/***********************************************************************
Below -.4 V SCE - Tafel Behavior
-.4 V - .4 V polynomial
Above .4 V constant
AnodicCurrentDensity: This function calculates the anodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
**********************************************************************/
{double iAn;
double dbCl;
double m, b;
double a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,exp;
dbCl = chemistry->GetConcentration("Cl-");
if(dbCl > 500)
{a0 = -0.371175;
a1 = 4.87385;
a2 = 24.6553;
a3 = 8.50292;
a4 = -469.768;
a5 = -188.606;
a6 = 4270.06;
a7 = -773.606;
a8 = -20599.1;
a9 = 11104.2;
a10 = 49894.1;
m = 2.600712;
b = -0.38825;
if (E < -0.4)
{exp = m * E + b;
}
else
{if (E < 0.4)
{exp = a0 + a1*E + a2*pow(E,2) + a3*pow(E,3) + a4*pow(E,4) +
a5*pow(E,5) + a6*pow(E,6)
+ a7*pow(E,7) + a8*pow(E,8) + a9*pow(E,9) + a10*pow(E,10);
}
else
{exp = 3;
}
}
iAn = pow(10,exp);
}
else
{m = 0.674602;
b = -1.6462;
477
exp = m * E + b;
iAn = pow(10,exp);
}
return(iAn);
}
double T304A::CathodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P)
/***********************************************************************
CathodicCurrentDensity: This function calculates the cathodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{double iCa;
double a0,a1,a2,a3,a4,exp;
a0
a1
a2
a3
a4
=
=
=
=
=
-23.1206;//-4.40961;//-8.40961;
-84.8619;//-5.97816;
-119.219;//9.89802;
-73.8527;//22.809;
-16.4973;//10.872;
if(E < -0.3)
{exp = a0 + a1*E + a2*pow(E,2) + a3*pow(E,3) + a4*pow(E,4);
iCa = -pow(10,exp);
}
else
{iCa = 0;
}
return(iCa);
}
TSAF2205Diss::TSAF2205Diss(TAllSpecies * allspecies)
/**********************************************************************
TSAF2205Diss: This function is the constructor for this class
**********************************************************************/
{environment = allspecies;
}
double TSAF2205Diss::AnodicCurrentDensity(TChemistry * chemistry, double E,
double T, double P)
/**********************************************************************
AnodicCurrentDensity: This function calculates the anodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
**********************************************************************/
{double net,J1,h,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,exp;
// Walton Numbers
/* a0 = .34608;
478
a1 = 0.753641;
a2 = -1.20439;
a3 = 37.838;
a4 = -69.4211;
a5 = -137.304;
a6 = 275.231;
a7 = 96.0202;
a8 = -428.904;
a9 = 284.36;
a10 = -59.7865;
/*
a0 = -2.09854; //Converting to A/m^2
a1 = -.548883;
a2 = 11.2756;
a3 = -73.2338;
a4 = 277.566;
a5 = 51.7637;
a6 = -4039.31;
a7 = 12573.9;
a8 = -16900.4;
a9 = 10690.5;
a10 = -2586.61;
*/
a0 = -2.10089;
a1 = -0.161199;
a2 = 3.44601;
a3 = -37.4825;
a4 = 368.071;
a5 = -856.978;
a6 = -2520.55;
a7 = 13958.4;
a8 = -23346;
a9 = 17202.7;
a10 = -4766.35;
if(E > -.6) //-.55 for walton
{exp = a0 + a1*E + a2*pow(E,2) + a3*pow(E,3) + a4*pow(E,4) + a5*pow(E,5) +
a6*pow(E,6)
+ a7*pow(E,7) + a8*pow(E,8) + a9*pow(E,9) + a10*pow(E,10);
exp = exp -3.875 ;
J1 = -pow(10,exp);
exp = -6 + (-.3 - E)/.06;
J1 = J1 + pow(10,exp);
}
else
{
J1 = 0;
}
net = J1;
return(net);
479
}
double TSAF2205Diss::CathodicCurrentDensity(TChemistry * chemistry, double E,
double T, double P)
/***********************************************************************
CathodicCurrentDensity: This function calculates the cathodic current
density of the reaction. It uses the Bard and Faulkner type
approach described in the header to this file.
***********************************************************************/
{double net;
net = 0;
return(net);
}
T304_1An::T304_1An(TAllSpecies * allspecies)
/**********************************************************************
T304_1An: This function is the constructor for this class
This class represents reaction 1, from CSB thesis FIg 4.40(a). It is for 304
in 1M Cl, 0, mM S
The "reversible potential" here is wrong, it is the corrosion potential
from the polarization curve
**********************************************************************/
{environment = allspecies;
dbEtaA = 0.362304;
dbEtaC = 0.148233;
dbIcorr = 9.52e-3;
dbEcorr = -0.21;
//
//
//
//
Anodic Tafel slope
Cathodic Tafel slope
Corrosion current
Corrosion potential
dbAvgz = 2.216;
Hp = "H+";
dbfFe
dbfCr
dbfNi
dbfMn
dbfFe
dbfCr
}
=
=
=
=
=
=
0.704;
0.196;
0.087;
0.013;
0.782;
0.218;
Fepp
Crppp
Nipp
Mnpppp
=
=
=
=
"Fe++";
"Cr+++";
"Nipp";
"Mn++++";
double T304_1An::GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry,
double E, double T, double P)
/***********************************************************************
***********************************************************************/
{double dbElFlux, dbChemFlux;
if(StringsEqual(name,Fepp))
480
{dbElFlux = AnodicCurrentDensity(chemistry,E,T,P);
dbChemFlux = dbfFe * dbElFlux / (dbAvgz * F);
}
else
{if(StringsEqual(name,Crppp))
{dbElFlux = AnodicCurrentDensity(chemistry,E,T,P);
dbChemFlux = dbfCr * dbElFlux / (dbAvgz * F);
}
else
{if(StringsEqual(name,Nipp))
{dbElFlux = AnodicCurrentDensity(chemistry,E,T,P);
dbChemFlux = dbfNi * dbElFlux / (dbAvgz * F);
}
else
{if(StringsEqual(name,Mnpppp))
{dbElFlux = AnodicCurrentDensity(chemistry,E,T,P);
dbChemFlux = dbfMn * dbElFlux / (dbAvgz * F);
}
else
{dbChemFlux = 0;
}
}
}
}
return(dbChemFlux);
}
double T304_1An::AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P)
/***********************************************************************
AnodicCurrentDensity: This function calculates the anodic current
density of the reaction.
***********************************************************************/
{double eta; // surface overpotential
double ia; // current
eta = E - dbEcorr;
ia = dbIcorr * pow(10, eta/dbEtaA);
return(ia);
}
double T304_1An::CathodicCurrentDensity(TChemistry * chemistry, double E, double
T, double P)
/***********************************************************************
CathodicCurrentDensity: This function calculates the anodic current
density of the reaction.
***********************************************************************/
481
{double eta; // surface overpotential
double ic; // current
eta = dbEcorr-E;
ic = -dbIcorr * pow(10, eta/dbEtaC);
ic = 0;
return(ic);
}
T304_1Ca::T304_1Ca(TAllSpecies * allspecies)
/**********************************************************************
T304_1Ca: This function is the constructor for this class
This class represents reaction 1, from CSB thesis FIg 4.40(a). It is for 304
in 1M Cl, 0, mM S
The "reversible potential" here is wrong, it is the corrosion potential
from the polarization curve
**********************************************************************/
{environment = allspecies;
dbEtaA = 0.362304;
dbEtaC = 0.148233;
dbIcorr = 9.52e-3;
dbEcorr = -0.21;
//
//
//
//
Anodic Tafel slope
Cathodic Tafel slope
Corrosion current
Corrosion potential
dbAvgz = 2.216;
OHm = "OH-";
}
double T304_1Ca::GetFluxOfSpecies(TSpeciesName name, TChemistry * chemistry,
double E, double T, double P)
/***********************************************************************
***********************************************************************/
{double dbElFlux, dbChemFlux;
if(StringsEqual(name,OHm))
{dbElFlux = CathodicCurrentDensity(chemistry,E,T,P);
dbChemFlux = -dbElFlux / F;
printf("flux of OH = %lg at E = %lg \n",dbChemFlux, E);
}
return(dbChemFlux);
}
double T304_1Ca::AnodicCurrentDensity(TChemistry * chemistry, double E, double T,
double P)
/***********************************************************************
AnodicCurrentDensity: This function calculates the anodic current
density of the reaction.
482
***********************************************************************/
{double eta; // surface overpotential
double ia; // current
eta = E - dbEcorr;
ia = dbIcorr * pow(10, eta/dbEtaA);
ia = 0;
return(ia);
}
double T304_1Ca::CathodicCurrentDensity(TChemistry * chemistry, double E, double
T, double P)
/***********************************************************************
CathodicCurrentDensity: This function calculates the anodic current
density of the reaction.
***********************************************************************/
{double eta; // surface overpotential
double ic; // current
eta = dbEcorr-E;
ic = -dbIcorr * pow(10, eta/dbEtaC);
return(ic);
}
483
Appendix K: tmateria.h
/**********************************************************************
TMATERIA.H
2/26/94
{ This should contain and isolate all Material dependent info
}
Properties
{Polarization Curves: fn (ph, [Me++], temperture)
they will have to be some sort of compressed representation
Line segements, Fitted polynomial
Functions
GetProductionRate(species, potential (NHE), [concentrations], temp)
Rate/area
This function will contain the logic about how to interpolate into
unmeasured conditions
--> data can be refined here
**********************************************************************/
#ifndef __TMATERIA_H
#define __TMATERIA_H
#ifndef __TCHEM_H
#include "tchem.H"
#endif
#ifndef __TALLSPEC_H
#include "tallspec.H"
#endif
#ifndef __TREACTIO_H
#include "treactio.H"
#endif
#ifndef __MATH_H
#include <math.h>
#endif
class TMaterial
/*
class TMaterial
last modified 2/26/94
484
*/
{
public:
TAllSpecies * crc;
char name[20];
// Returns flux in (moles of name) / m^2
virtual double GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P);
virtual double GetChemicalFlux(TSpeciesName name, TChemistry *chemistry,
double E, double T, double P);
double GetOpenCircuit(TChemistry *chemistry,double T, double P);
TMaterial(); //needed for subclasses
TMaterial(TAllSpecies* allspecies);
private:
};
class TFooMaterial:public TMaterial
{public:
TFooMaterial(TAllSpecies* allspecies);
double GetChemicalFlux(TSpeciesName name, TChemistry *chemistry,
double E, double T, double P);
double GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P);
private:
TSpeciesName fooname;
TReaction * HER;
TReaction * AlDiss;
};
class TAg:public TMaterial
{public:
TAg(TAllSpecies* allspecies);
double GetChemicalFlux(TSpeciesName name, TChemistry *chemistry,
double E, double T, double P);
double GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P);
private:
TSpeciesName Agp;
};
class TSAF2205:public TMaterial
485
{public:
TSAF2205(TAllSpecies* allspecies);
double GetChemicalFlux(TSpeciesName name, TChemistry *chemistry,
double E, double T, double P);
double GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P);
private:
TSpeciesName Nipp;
TSpeciesName Crppp;
TReaction * HER;
TReaction * SAF2205;
};
class T304Mat:public TMaterial
{public:
T304Mat(TAllSpecies* allspecies);
double GetChemicalFlux(TSpeciesName name, TChemistry *chemistry,
double E, double T, double P);
double GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P);
private:
TSpeciesName Fepp;
TSpeciesName Crppp;
TReaction * cathodic;
TReaction * anodic;
};
#endif
486
Appendix L: tmateria.c
/**********************************************************************
TMATERIA.CPP 3/1/94
CONVENTIONS
Return rates as (moles of name) /(s- m^2)
All potentials should be vs NHE
GENERAL
This should be the parent class for many classes, one per material.
=> KCS needs to learn about
virtual functions, abstract classes
This and TASpecies are the most object-oriented classes in crevice.
(See TASpecies for more comments
A material will generate species fluxes based on:
=> solution chemistry (esp. ph and [Cl-])
=> potential
=> temperature
THESE INDIVIDUAL REPRESENTATIONS ARE STORED IN TREACTIONS
There is probably a nearly infinite number of ways to represent
material data
=> (variable) number of line segments
=> polynomial
=> series of splines
^^^ all of the above mixed and matched for different chemistries
^^^ many ways to interpolate amongst chemistries
^^^ temperatures
=> read, write are sort of nonsensical
=> hardwire information into each Object
Measured polarization curves are the sum of an anodic one
and a cathodic one.
0 NET current does not translate to 0 generation of species
=> break experimental data into 2 curves
===>
IDEA
<===
Do polarization curves scale vs NHE based on metal ion concentration
i.e. same shape just displaced because of changing reversible
potentials?
{%% 45,46%% Hebert and Alkire %%25%% Alkire, Tomasson, Hebert
487
==> [Al+++] responsible for CCS}
if so GetReversiblePotential would make sense
==> There may be a need for a TReaction object
class TReaction
char symbolicform[40]
TSpeciesName reactant1, (reactant2), product1, (product2)
(or anodicspecies and cathodic species)
double i0
double Erev
4/25/94
Eventually include density of material
=> weight loss
=> penetration rate
4/27/94
Want to find opencircuit potential
Want to find (overpotential) potential given current
(polarization)
Include Diffusional effects?
**********************************************************************/
#ifndef __TMATERIA_H
#include "tmateria.H"
#endif
TMaterial::TMaterial()
/**********************************************************************
TMaterial(): Default constructor for class, Needed to allow
subclasses.
**********************************************************************/
{crc = NULL;
}
TMaterial::TMaterial(TAllSpecies * allspecies)
/**********************************************************************
TMaterial(): This is the useful constructor for objects of this type.
The information in TAllspecies(z,D,u, etc) is needed to make
all other calculations.
**********************************************************************/
{crc = allspecies; // somehow have to know z for species
}
double TMaterial::GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
488
3/1/94
GetNetCurrentDensity : Returns the total electrical flux [A/m^2]
for the material in solution "chemistry"
at "potential".
CONVENTIONS:
Currents > 0 are ANODIC
Currents < 0 are CATHODIC
This is a virtual function, therefore it can be redefined by
**********************************************************************/
{double net = 0;
net = 0; // 1e-6 * (pow(10,E-.157) - pow(10,.157-E));
return(net);
}
double TMaterial::GetChemicalFlux(TSpeciesName name,TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
3/1/94
GetChemicalFlux : Returns the chemical flux [mol/(m^2-s)]
of species "name"for the material in solution
"chemistry" at "potential".
CONVENTIONS:
Fluxes > 0 produce species
Fluxes < 0 consume species
QUESTIONS/THOUGHTS
Is there a better way to do this?
Anodic, Cathodic Current
TReaction Object needed?
**********************************************************************/
{double flux;
if (StringsEqual(name,"Ni++"))
{flux = 1e-9;
}
else
{flux = 0;
}
return(flux);
}
double TMaterial::GetOpenCircuit(TChemistry *chemistry, double T, double P)
/**********************************************************************
3/20/97
489
GetOpenCircuit : This function returns the Open Circuit potential
in V(SHE) for the material in a solution with composition
"chemistry". It does this by iteratively searching for a
potential with no net current. Multiple opencircuit
potentials will not be found.
??? Do I want to be able to pass a starting potential for the search ????
POTENTIAL PROBLEMS:
This routine assumes that the curves for anodic and
cathodic currents are continuous (that they intersect)
**********************************************************************/
{ double oc;
// trial open circuit potential
double inet;
// net current at oc (try to make 0)
double newinet;
// new net current
double delta;
// step size for creating new guesses
double threshold; // effective size of zero
oc = 0;
delta = .5;
// starting point, could optimize or pass
// initial stepsize, could optimize
inet = GetNetCurrentDensity(chemistry,oc,T,P);
// iff oc is the actual open circuit, net current = 0
// threshold defines how close to "0" is close enough
threshold = 1e-12;
while(fabs(inet) > threshold) //this is the exit condition
{if(inet > 0)
// if net anodic current => try lower potential
{oc = oc - delta;
}
else
// if net cathodic current => try higher potential
{oc = oc + delta;
}
newinet = GetNetCurrentDensity(chemistry,oc,T,P);
// if oc is between the old and new potentials => decrease the step size
if ((inet*newinet) <0)
// was there a sign change (cross true oc)
{delta = delta/2;
}
// could increase step size
inet = newinet;
}
return(oc);
};
TFooMaterial::TFooMaterial(TAllSpecies * allspecies)
490
/**********************************************************************
TFooMaterial():
Constructor for class
FooMaterial is my test material
Currently it is MJ Psaila-Dombrowski's material in Section 3.4.1
**********************************************************************/
{crc = allspecies;
fooname = "Foo";
HER = new THER(crc);
AlDiss = new TAlDiss(crc);
}
double TFooMaterial::GetChemicalFlux(TSpeciesName name, TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
See TMaterial function of same name.
**********************************************************************/
{double flux;
if (StringsEqual(name,"Al+++"))
{flux = 2.073e-3;
}
else
{flux = 0;
}
return(flux);
};
double TFooMaterial::GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
See TMaterial function of same name.
**********************************************************************/
{double net;
net = 0;
return(net);
}
TAg::TAg(TAllSpecies * allspecies)
/**********************************************************************
TAg():
Constructor for class
Silver, as used by Fu and Chan[38] and Evitts [96]
**********************************************************************/
{crc = allspecies;
Agp = "Ag+";
}
491
double TAg::GetChemicalFlux(TSpeciesName name, TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
See TMaterial function of same name.
**********************************************************************/
{double flux;
if (StringsEqual(name,Agp))
{flux = 3.299e-3;
//318 A/m^2 / zF
}
else
{flux = 0;
}
return(flux);
};
double TAg::GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
See TMaterial function of same name.
**********************************************************************/
{double net;
net = 318.31;
return(net);
}
TSAF2205::TSAF2205(TAllSpecies * allspecies)
/**********************************************************************
TSAF2205():
Constructor for class
SAF2205 is my test material
Loosely based on SAF2205 in ph = -.5
p90 of Par Olav Gartland's report %%63%%
**********************************************************************/
{crc = allspecies;
Nipp = "Ni++";
Crppp = "Cr+++";
SAF2205 = new TSAF2205Diss(crc);
}
double TSAF2205::GetChemicalFlux(TSpeciesName name,TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
3/1/94
GetChemicalFlux : Returns the chemical flux [mol/(m^2-s)]
of species "name"for the SAF2205 in solution
"chemistry" at "potential".
CONVENTIONS:
492
Fluxes >0 produce species
Fluxes <0 consume species
**********************************************************************/
{double flux;
flux = SAF2205->GetFluxOfSpecies(name,chemistry,E,T,P);
return(flux);
}
double TSAF2205::GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
3/1/94
GetNetCurrentDensity : Returns the total electrical flux [A/m^2]
for the material in solution "chemistry"
at "potential".
CONVENTIONS:
Currents > 0 are ANODIC
Currents < 0 are CATHODIC
**********************************************************************/
{double net;
net = SAF2205->GetCurrentDensity(chemistry,E,T,P);
return(net);
}
T304Mat::T304Mat(TAllSpecies * allspecies)
/**********************************************************************
T304Mat():
Constructor for class
SAF2205 is my test material
Loosely based on SAF2205 in ph = -.5
p90 of Par Olav Gartland's report %%63%%
**********************************************************************/
{crc = allspecies;
Fepp = "Fe++";
Crppp = "Cr+++";
anodic = new T304_1An(crc);
cathodic = new T304_1Ca(crc);
}
double T304Mat::GetChemicalFlux(TSpeciesName name,TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
3/1/94
GetChemicalFlux : Returns the chemical flux [mol/(m^2-s)]
493
of species "name"for the SAF2205 in solution
"chemistry" at "potential".
CONVENTIONS:
Fluxes >0 produce species
Fluxes <0 consume species
**********************************************************************/
{double flux;
flux = anodic->GetFluxOfSpecies(name,chemistry,E,T,P)
+ cathodic->GetFluxOfSpecies(name,chemistry,E,T,P);
return(flux);
}
double T304Mat::GetNetCurrentDensity(TChemistry *chemistry,
double E, double T, double P)
/**********************************************************************
3/1/94
GetNetCurrentDensity : Returns the total electrical flux [A/m^2]
for the material in solution "chemistry"
at "potential".
CONVENTIONS:
Currents > 0 are ANODIC
Currents < 0 are CATHODIC
**********************************************************************/
{double net;
net = anodic->GetCurrentDensity(chemistry,E,T,P)
+ cathodic->GetCurrentDensity(chemistry,E,T,P);
return(net);
}
494
Appendix M: fem.h
/***************************************************************************
FEM.H
Programmed by: Kevin Stewart
Date Last Modified:
9/20/95
Summary:
This is the header file for FEM.C. Please see that program for more
documentation.
***************************************************************************/
#ifndef __FEM_H
#define __FEM_H
#ifndef __STDIO_H
#include <stdio.h>
#endif
#ifndef __STRING_H
#include <string.h>
#endif
#ifndef __MATH_H
#include <math.h>
#endif
#ifndef __TCHEM_H
#include "tchem.H"
#endif
#ifndef __TASPECIE_H
#include "taspecie.H"
#endif
#ifndef __TALLSPEC_H
#include "tallspec.H"
#endif
#ifndef __TMATERIA_H
#include "tmateria.H"
#endif
//For Future consider moving temp and pressure to nodes from elements
struct NodeInfo
{int iNodeId;
long double dbX, dbY, dbZ; // x, y and z coords of point
int iUsed;
int iFixed;
TChemistry * chem;
495
TChemistry * oldchem;
};
class TSolutionVolume
/*
*/
{public:
// variables
NodeInfo *i,*j,*k;
TSpeciesName currentspecies;
TChemistry * avgchem;
TMaterial
TMaterial
TMaterial
TMaterial
*
*
*
*
mat;
ijmat;
ikmat;
jkmat;
double Kt,Kx,Ky,Kxy,Lij,Lik,Ljk,Mx,My,P; // variables for the differential eq
double theta;
double alphaij,alphaik,alphajk,betaij,betaik,betajk;
double
double
double
double
bi,bj,bk,ci,cj,ck;
A,h;
T, Pr;
dX, dY;
// intermediate calculations
// Area, height
// temp and pressure
TAllSpecies * crc;
//functions
TSolutionVolume(); //constructor
TSolutionVolume(NodeInfo *nodei, NodeInfo *nodej, NodeInfo *nodek, double
height,
TMaterial * material, TMaterial * ij, TMaterial * ik, TMaterial * jk,
TAllSpecies * allspecies);
int SetConstants(TSpeciesName name, double kt, double th);
void SetChemistry();
double
double
double
double
double
Q();
dEdX();
dEdY();
dCdX();
dCdY();
double dDdX();
496
double dDdY();
double Jx();
double Jy();
double
double
double
double
double
double
Jijx();
Jijy();
Jikx();
Jiky();
Jjkx();
Jjky();
double I();
double J();
double K();
double
double
double
double
double
double
double
double
double
bii();
bij();
bik();
bji();
bjj();
bjk();
bki();
bkj();
bkk();
double
double
double
double
double
double
double
double
double
Bii(double
Bij(double
Bik(double
Bji(double
Bjj(double
Bjk(double
Bki(double
Bkj(double
Bkk(double
delt);
delt);
delt);
delt);
delt);
delt);
delt);
delt);
delt);
double Ci(double delt);
double Cj(double delt);
double Ck(double delt);
};
#endif
497
Appendix N: fem.c
/***************************************************************************
FEM.C
Programmed by: Kevin Stewart
Date Last Modified:
9/20/95
Summary:
This program is an object-oriented implementation of two-dimensional
finite elements with weighted explicit/implicit time-stepping. The
code handles creating elements and generating matrix values for the
general differential equation:
dE
d^2E
d^2E
d^2E
dE
dE
Kt -- = Kx ---- + Kxy ---- + Ky ---- + Mx -- + My-- + PE + Q
dt
dx^2
dxdy
dy^2
dx
dy
The completed matrix is assembled and solved in a different piece of
code, solver.C.
Inputs:
Each element is initialized by a call to TSolutionVolume(...)
i,j, and k must be valid pointers to NodeInfos.
Those pointers must remian valid, since the code keeps the
pointer instead of internally storing the information.
i,j, and k must be arranged counterclockwise in space when viewed from
_above_
the xy plane.
The coefficients for each element can be manipulated externally, since they
are public variables.
theta and Kt should not vary from element to element
Outputs:
Calls to the proper functions will return the values for the matrices B and C
| Bii Bij Bik |
|Tim|
|Ci|
| Bji Bjj Bjk | * |Tjm| = |Cj|
| Bki Bkj Bkk |
|Tkm|
|Ck|
Notes on Use:
Kt = 0, theta
Kt != 0, theta
Kt != 0, theta
Kt != 0, theat
=
=
=
=
1
1
0
.5
=>
=>
=>
=>
steady state solution
fully implicit
fully explicit
Crank-Nicholson
All references to "Allaire" refer to the book
"Basics of the Finite Element Method: Solid Mechanics, Heat Transfer, and
498
Fluid Mechanics"
by Paul E. Allaire
Wm. C. Brown Publishers
Dubuque, Iowa
1985
Time stepping:
[B] matrix found according to eq 16.37, p 591, Allaire
[B] = theta * [Bx] + [Bt]
[C] matrix, eq. 16.38, Allaire
[C] = Cx - (1-theta)[Bx]*[Tm] + [Bt]*[Tm]
[Bx] found in equation 15.20, p 547 Allaire
[Cx] found in Figure 9.11 p 331 Allaire
[Bt] _derived_ according to equation top of page 584 Allaire using
Mathematica
Ideas:
time stepping in pseudotime can be used to find potential distributions
express terms of equation in physical terms now? (Q= J/h, Kx=kappa?)
E,concentrations are properties of nodes, not elements
-but Q evaluated at center of element
grad phi can be calculated for simplex elements from position and value of
vertexes
Can entire equation be multiplied by 1000 etc. w/o messing things up? Does
time scale
Rule for delta t ( A *Kt / 10 * kx)
Need routine(in different piece of code) to determine if stuff has stopped
changing
purely relative changes might not work unless really small delta( maybe
print
out metric for a series of steps)
possible metrics
sum of delta/old (purposefully allow +,- to cancel)
Need oldE probably for stability, don't need to keep old Concentrations
need some if statement at beginning of procedures for E vs C and species
499
Random thought about IR* model
In tight crevices, the active site moves right near the mouth - almost
all of the crevice will just be at the open circuit
12/15 Implementing MigDiff
Use
1) Find Grad Phi
- multiple tiny timesteps when only Ji changes
- kappa, h stay same
2) Find delta Ci's
- single tiemsteps, one for each species
- Grad PHI term stable after step one is done ( within each element, for
all species)
3) Reconciliation step for charge neutrality
- Maybe if steps small enough, wouldn'y have to do?
- maybe include some grad phi stuff
In each element,
bi,bj,bk,ci,cj,ck, A all fixed as long as locations of i,j,k vertices are
stable
Mass XPort Terms
Kx = Ky = -Di
Kxy = 0
Mx = My = -zi F ui GradPHI
P = 0
Q = Ri
Kt = 1
Potential
Kx = Ky = kappa h
Kxy = 0
Mx = My = 0
P = 0
Q = Ji
Kt = 1
In Mass Xport
Di, ui, have to be recalculated once
species changes
all species change
Gead PHI recaluclated
To Do:
work out how to call electrical vs chemcial (and species)
Solve in solver.C calls on fem.C to build arrays
500
Find, look at really old stuff to incorporate the D u etc
****************************************************************************/
//line 70
#include "fem.H"
TSolutionVolume::TSolutionVolume()
{
}
/****************************************************************************
TSolutionVolume: This is the constructor for this class.
This procedure should only be called once.
=> memory leak via avgchem
Also
=> Big problems if nodes have different numbers of species
****************************************************************************/
TSolutionVolume::TSolutionVolume(NodeInfo *nodei, NodeInfo *nodej, NodeInfo
*nodek, double height,
TMaterial * material, TMaterial * ij, TMaterial * ik, TMaterial * jk,
TAllSpecies * allspecies)
{
i = nodei;
// Grab pointers to vertices for later use
j = nodej;
k = nodek;
// initialize the pointer to avgchem to ensure proper number of species
avgchem = new TChemistry(i->chem); // load avgchem with the right species
// Set the value of avgchem to the proper average of the nodal values
SetChemistry();
crc =
mat =
ijmat
ikmat
jkmat
allspecies;
material;
= ij;
= ik;
= jk;
theta = 1;
Kt
Kx
Ky
Kxy
Mx
My
P
=
=
=
=
=
=
=
0;
1;
Kx;
0;
0;
0;
0;
// Set the degree of explicitness(0) or implicitness(1)
// This really should always be 1 if the diff eq is in std form
// Diffusion terms
// Hard to envision aqueous system where Kx!=Ky (liquid crystal)
// Migration terms
// Find bi,bj,bk ci,cj,ck and A based on coordinates of vertices
// ?? Move to separate procedure if element splitting is required
501
// Formulas pulled from Allaire, p.41 ??
bi = j->dbY - k->dbY;
bj = k->dbY - i->dbY;
bk = i->dbY - j->dbY;
// these 6 terms used in Bx, also to find A
ci = k->dbX - j->dbX;
cj = i->dbX - k->dbX;
ck = j->dbX - i->dbX;
A
= (bi*cj - bj*ci)/2;
Lij = sqrt(bk*bk + ck*ck);
Lik = sqrt(bj*bj + cj*cj);
Ljk = sqrt(bi*bi + ci*ci);
h = height;
//height of crevice in meters
// find the width and height of element
// there are probably better ways of finding the derivates wrt x,y
dX = fabs(ci);
if (dX < fabs(cj))
{dX = fabs(cj);
}
if (dX < fabs(ck))
{dX = fabs(ck);
}
dY = fabs(bi);
if (dY < fabs(bj))
{dY = fabs(bj);
}
if (dY < fabs(bk))
{dY = fabs(bk);
}
}
/************************************************************************
SetConstants: 1/15/96
This function adjusts the values of the constants based on if the
fem is to be done on current (name=="electrical") or chemical species.
Mass XPort Terms
Kx = Ky = Di
Kxy = 0
Mx = My = zi F ui GradPHI
P = 0
Q = Ri
502
Kt = 1
Scaling
Scale on Kx
From Nernst-Einstein
Kx = -D=-uRT => Kx = -2500u
But
Mx = (1) (1e5) (GradPhi) u
min Grad Phi 1mV/1cm = .1 V/m
Potential
Kx = Ky = kappa h
Kxy = 0
Mx = My = 0
P = 0
Q = Ji
Kt = 1
Scaling
Scale on Kx (nonzero)
************************************************************************/
int TSolutionVolume::SetConstants(TSpeciesName name, double kt, double th)
{double Pex, Pey;
double E;
double a,b,c;
theta = th;
//these two variables determine the method time-stepping kt=0,
th=1 is steady state
Kt = kt;
currentspecies = name;
// Set the value of avgchem to the proper average of the nodal values
SetChemistry();
T = avgchem->GetConcentration("temperature");
Pr = avgchem->GetConcentration("pressure");
Kt = Kt*h;//have to account for multiplying through by h
i->iFixed = i->chem->GetFixed(currentspecies);
j->iFixed = j->chem->GetFixed(currentspecies);
k->iFixed = k->chem->GetFixed(currentspecies);
if (StringsEqual(name,"electrical"))
{a = dEdX();
if (fabs(a) > 0.0)
{Kx
= h * crc->kappa(T,Pr,avgchem);// * (1 + dDdX()/a );
}
503
else
{Kx
}
= h * crc->kappa(T,Pr,avgchem);
//Ky
= Kx;
// Hard to envision aqueous system where Kx!=Ky (liquid
crystal)
b = dEdY();
if (fabs(b) > 0.0)
{Ky
= h * crc->kappa(T,Pr,avgchem);// * (1 + dDdY()/b );
}
else
{Ky
= h * crc->kappa(T,Pr,avgchem);
}
Kxy
= 0;
Mx
My
= 0;
= 0;
P
}
else
{Kx
Ky
crystal)
Kxy
//There are no first-order terms for electrical
= 0;
= h * crc->D(name,T,P,avgchem); // Diffusion terms
= Kx;
// Hard to envision aqueous system where Kx!=Ky (liquid
= 0;
Mx
= h*crc->z(name)*F*crc->u(name,T,Pr,avgchem)*(dEdX()-dDdX());
Migration terms
My
= h*crc->z(name)*F*crc->u(name,T,Pr,avgchem)*(dEdY()-dDdY());
P
//
= 0;
}
alphaij = 0;
alphaik = 0;
alphajk = 0;
betaij = 0;
betaik = 0;
betajk = 0;
//This sets the alpha and beta boundary condition for the model at each point
if(ijmat != NULL)
{E = (i->chem->GetConcentration("electrical")
+ j->chem->GetConcentration("electrical"))/2;
if (StringsEqual(currentspecies,"electrical"))
{alphaij = 0; //Mx, My = 0 for electrical - otherwise alphaij = (fabs(bk) *
Mx + fabs(ck) * My)/Lij;
betaij = h * ijmat->GetNetCurrentDensity(avgchem,E,T,Pr);
}
504
else
{alphaij = -((bk) * Mx + (ck) * My)/Lij; // The M terms already incorporate
h
betaij = -h*ijmat->GetChemicalFlux(currentspecies,avgchem,E,T,Pr);
}
}
if(ikmat != NULL)
{E = (i->chem->GetConcentration("electrical")
+ k->chem->GetConcentration("electrical"))/2;
if (StringsEqual(currentspecies,"electrical"))
{alphaik = 0; //Mx, My = 0 for electrical - otherwise alphaij = (fabs(bj) *
Mx + fabs(cj) * My)/Lik;
betaik = h * ikmat->GetNetCurrentDensity(avgchem,E,T,Pr);
}
else
{alphaik = -((bj) * Mx + (cj) * My)/Lik;
betaik = -h * ikmat->GetChemicalFlux(currentspecies,avgchem,E,T,Pr);
}
}
if(jkmat != NULL)
{E = (j->chem->GetConcentration("electrical")
+ k->chem->GetConcentration("electrical"))/2;
if (StringsEqual(currentspecies,"electrical"))
{alphajk = 0; //Mx, My = 0 for electrical - otherwise alphajk = (fabs(bi) *
Mx + fabs(ci) * My)/Ljk;
betajk = h * jkmat->GetNetCurrentDensity(avgchem,E,T,Pr);
}
else
{alphajk = -((bi) * Mx + (ci) * My)/Ljk;
betajk = -h*jkmat->GetChemicalFlux(currentspecies,avgchem,E,T,Pr);
}
}
// check for stability Peclet number in x and y directions
Pex = Mx*dX/Kx;
Pey = My*dY/Ky;
// This section prints out information about the conditions that caused the
peclet instability
if((fabs(Pex) > 2) || (fabs(Pey) > 2))
{printf("Pex = %lg, Pey = %lg, %d % d %d dX = %lg, dY = %lg, Ky = %lg, My =
%lg (ci,cj,ck) %lg %lg %lg dEdY()%lg\n",
Pex, Pey,i->iNodeId,j->iNodeId,k->iNodeId, dX, dY,Ky,My,ci,cj,ck,
dEdY());
printf("ix %lg iy %lg jx %lg jy %lg kx %lg ky %lg\n",i->dbX,i->dbY,j->dbX,
j->dbY, k->dbX, k->dbY);
printf("\nMy = %lg, dy = %lg Ky = %lg, Pey = %lg \n",My,dY,Ky,Pey);
}
505
if ((fabs(Pex)>2) || (fabs(Pey)>2))
{return(0); //unstable
}
else
{return(1); //stable
}
}
/************************************************************************
SetChemistry
This procedure set the average chemistry of the entire element.
It averages the concentrations from each node of each species
************************************************************************/
void TSolutionVolume::SetChemistry()
{int icount;
double conc;
TSpeciesName name;
for(icount=0;icount<avgchem->size;icount++)
{name = avgchem->names[icount];
conc = (i->chem->GetConcentration(name) + j->chem->GetConcentration(name) +
k->chem->GetConcentration(name))/3;
avgchem->SetConcentration(name,conc);
}
}
/************************************************************************
dEdX
eq 3.24-25 p45 Allaire
dT/dx
dT/dy
1
= -2A
[bi
[
[ci
bj
cj
bk]
]
ck]
*
[ Ti ]
[ Tj ]
[ Tk ]
Need to multiply by (-1) to translate E to phi
************************************************************************/
double TSolutionVolume::dEdX()
{double dedx;
dedx = -(bi * i->chem->GetConcentration("electrical")
+ bj * j->chem->GetConcentration("electrical")
+ bk * k->chem->GetConcentration("electrical"))/(2*A);
return(dedx);
}
double TSolutionVolume::dEdY()
{double dedy;
dedy = -(ci * i->chem->GetConcentration("electrical")
+ cj * j->chem->GetConcentration("electrical")
+ ck * k->chem->GetConcentration("electrical"))/(2*A);
506
return(dedy);
}
/************************************************************************
dCdX
eq 3.24-25 p45 Allaire
dT/dx
dT/dy
1
= -2A
[bi
[
[ci
bj
cj
bk]
]
ck]
*
[ Ti ]
[ Tj ]
[ Tk ]
NOTE: depends on currentspecies to figure out which species to return
************************************************************************/
double TSolutionVolume::dCdX()
{double dcdx;
dcdx = (bi * i->chem->GetConcentration(currentspecies)
+ bj * j->chem->GetConcentration(currentspecies)
+ bk * k->chem->GetConcentration(currentspecies))/(2*A);
return(dcdx);
}
double TSolutionVolume::dCdY()
{double dcdy;
dcdy = (ci * i->chem->GetConcentration(currentspecies)
+ cj * j->chem->GetConcentration(currentspecies)
+ ck * k->chem->GetConcentration(currentspecies))/(2*A);
return(dcdy);
}
/************************************************************************
dDdX:
Calculates the gradient of the diffusion potential in the X direction in V/m
************************************************************************/
double TSolutionVolume::dDdX()
{double
dddx = 0;
int
icount;
TSpeciesName oldcurrentspecies;
oldcurrentspecies = currentspecies; //save the condition before this procedure
runs
for(icount=0;icount < avgchem->size;icount++)
{currentspecies = avgchem->names[icount];
dddx = dddx +
crc->z(avgchem->names[icount])*crc->D(avgchem->names[icount],T,P,avgchem)*dCdX();
}
507
dddx = dddx * F / crc->kappa(T,Pr,avgchem);
currentspecies = oldcurrentspecies;
return(dddx);
}
/************************************************************************
dDdY:
Calculates the gradient of the diffusion potential in the Y direction in V/m
************************************************************************/
double TSolutionVolume::dDdY()
{double
dddy = 0;
int
icount;
TSpeciesName oldcurrentspecies;
oldcurrentspecies = currentspecies; //save the condition before this procedure
runs
for(icount=0;icount < avgchem->size;icount++)
{currentspecies = avgchem->names[icount];
dddy = dddy +
crc->z(avgchem->names[icount])*crc->D(avgchem->names[icount],T,P,avgchem)*dCdY();
}
dddy = dddy * F / crc->kappa(T,Pr,avgchem);
currentspecies = oldcurrentspecies;
return(dddy);
}
/************************************************************************
Jx:
Uses:
currentspecies name to choose species
temperature (set in Set Constants)
pressure (set in SetConstants)
Chemical
J = - D Grad C - z F u C Grad E
Jx = - D dC/dX - z F u C dE/dX
Jy = - D dC/dY - z F u C dE/dY
Electrical
V = IR
I = dV / R
R = rho L / A
I = dV A / rho L
I = A kappa dV / dX
A = h w
I/w = h kappa dV / dX
Returns value in units of flux/length for use in Jijx etc
************************************************************************/
double TSolutionVolume::Jx()
{double jx;
508
if(StringsEqual(currentspecies,"electrical"))
{jx = dEdX() * crc->kappa(T,Pr,avgchem) * h;
}
else
{jx = - crc->D(currentspecies,T,Pr,avgchem) * dCdX()
- crc->z(currentspecies) * F * crc->u(currentspecies,T,Pr,avgchem)
* avgchem->GetConcentration(currentspecies) * dEdX();
jx = jx * h;
}
return(jx);
}
/************************************************************************
Jy - See above
************************************************************************/
double TSolutionVolume::Jy()
{double jy;
if(StringsEqual(currentspecies,"electrical"))
{jy = dEdY() * crc->kappa(T,Pr,avgchem) * h;
}
else
{jy = - crc->D(currentspecies,T,Pr,avgchem) * dCdY()
- crc->z(currentspecies) * F * crc->u(currentspecies,T,Pr,avgchem)
* avgchem->GetConcentration(currentspecies) * dEdY();
jy = jy * h;
}
return(jy);
}
/************************************************************************
Jijx - return the x component of the total flux crossing the ij side of the
element
Jij = Jijx + jijy
Units in flux, Jij is in the same direction as J (= Jx i^ + Jy j^)
See document "Flux"
expression for magnitude of flux J (c i^ + d j^)
across line segment l (a i^ + b j^) is
|(bc - ad)|
and its direction is in the unit vector of J
(c i^ + d j^) / ( sqrt(c^2 + d^2) )
the vector representing the line segment is from i (at ix,iy) TO j (at jx,jy)
l = (jx - ix) i^ + (jy - iy) j^
************************************************************************/
double TSolutionVolume::Jijx()
509
{double a,b,c,d, jijx;
// find the vector for the line segment
a = j->dbX - i->dbX;
b = j->dbY - i->dbY;
// find the vector for the flux
c = Jx();
d = Jy();
jijx = fabs(b * c - a * d) * c / (sqrt(c*c + d*d));
return(jijx);
}
double TSolutionVolume::Jijy()
{double a,b,c,d, jijy;
// find the vector for the line segment
a = j->dbX - i->dbX;
b = j->dbY - i->dbY;
// find the vecotr for the flux
c = Jx();
d = Jy();
jijy = fabs(b * c - a * d) * d / (sqrt(c*c + d*d));
return(jijy);
}
double TSolutionVolume::Jikx()
{double a,b,c,d, jikx;
// find the vector for the line segment
a = k->dbX - i->dbX;
b = k->dbY - i->dbY;
// find the vector for the flux
c = Jx();
d = Jy();
jikx = fabs(b * c - a * d) * c / (sqrt(c*c + d*d));
return(jikx);
}
double TSolutionVolume::Jiky()
{double a,b,c,d, jiky;
// find the vector for the line segment
a = k->dbX - i->dbX;
b = k->dbY - i->dbY;
// find the vector for the flux
510
c = Jx();
d = Jy();
jiky = fabs(b * c - a * d) * d / (sqrt(c*c + d*d));
return(jiky);
}
double TSolutionVolume::Jjkx()
{double a,b,c,d, jjkx;
// find the vector for the line segment
a = k->dbX - j->dbX;
b = k->dbY - j->dbY;
// find the vecotr for the flux
c = Jx();
d = Jy();
jjkx = fabs(b * c - a * d) * c / (sqrt(c*c + d*d));
return(jjkx);
}
double TSolutionVolume::Jjky()
{double a,b,c,d, jjky;
// find the vector for the line segment
a = k->dbX - j->dbX;
b = k->dbY - j->dbY;
// find the vector for the flux
c = Jx();
d = Jy();
jjky = fabs(b * c - a * d) * d / (sqrt(c*c + d*d));
return(jjky);
}
double TSolutionVolume::I()
{double val;
val = i->oldchem->GetConcentration(currentspecies);
return(val);
}
double TSolutionVolume::J()
{double val;
val = j->oldchem->GetConcentration(currentspecies);
return(val);
}
double TSolutionVolume::K()
511
{double val;
val = k->oldchem->GetConcentration(currentspecies);
return(val);
}
double TSolutionVolume::Q()
{double E,J,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,exp;
E = (i->chem->GetConcentration("electrical")
+ j->chem->GetConcentration("electrical")
+ k->chem->GetConcentration("electrical"))/3;
if (StringsEqual(currentspecies,"electrical"))
{J = -mat->GetNetCurrentDensity(avgchem,E,T,Pr);
}
else
{J = mat->GetChemicalFlux(currentspecies,avgchem,E,T,Pr);
}
return(J);
}
double TSolutionVolume::bii()
{double bii;
bii = (Kx*bi*bi + Kxy*bi*ci + Ky*ci*ci)/ (4*A)
- (Mx*bi + My*ci)/6
- (P*A)/6
+ (alphaij * Lij)/3
+ (alphaik * Lik)/3;
return(bii);
}
double TSolutionVolume::bij()
{double bij;
bij = (Kx*bi*bj + Kxy*(bi*cj + bj* ci)/2 + Ky*ci*cj)/ (4*A)
- (Mx*bj + My*cj)/6
- (P*A)/12
+ (alphaij * Lij)/6;
return(bij);
}
double TSolutionVolume::bik()
{double bik;
bik = (Kx*bi*bk + Kxy*(bi*ck + bk* ci)/2 + Ky*ci*ck)/ (4*A)
- (Mx*bk + My*ck)/6
512
- (P*A)/12
+ (alphaik * Lik)/6;
return(bik);
}
double TSolutionVolume::bji()
{double bji;
bji = (Kx*bj*bi + Kxy*(bj*ci + bi* cj)/2 + Ky*cj*ci)/ (4*A)
- (Mx*bi + My*ci)/6
- (P*A)/12
+ (alphaij * Lij)/6;
return(bji);
}
double TSolutionVolume::bjj()
{double bjj;
bjj = (Kx*bj*bj + Kxy*bj*cj + Ky*cj*cj)/ (4*A)
- (Mx*bj + My*cj)/6
- (P*A)/6
+ (alphaij * Lij)/3
+ (alphajk * Ljk)/3;
return(bjj);
}
double TSolutionVolume::bjk()
{double bjk;
bjk = (Kx*bj*bk + Kxy*(bj*ck + bk* cj)/2 + Ky*cj*ck)/ (4*A)
- (Mx*bk + My*ck)/6
- (P*A)/12
+ (alphajk * Ljk)/6;
return(bjk);
}
double TSolutionVolume::bki()
{double bki;
bki = (Kx*bk*bi + Kxy*(bk*ci + bi* ck)/2 + Ky*ck*ci)/ (4*A)
- (Mx*bi + My*ci)/6
- (P*A)/12
+ (alphaik * Lik)/6;
return(bki);
}
513
double TSolutionVolume::bkj()
{double bkj;
bkj = (Kx*bk*bj + Kxy*(bk*cj + bj* ck)/2 + Ky*cj*ck)/ (4*A)
- (Mx*bj + My*cj)/6
- (P*A)/12
+ (alphajk * Ljk)/6;
return(bkj);
}
double TSolutionVolume::bkk()
{double bkk;
bkk = (Kx*bk*bk + Kxy*bk*ck + Ky*ck*ck)/ (4*A)
- (Mx*bk + My*ck)/6
- (P*A)/6
+ (alphaik * Lik)/3
+ (alphajk * Ljk)/3;
return(bkk);
}
double TSolutionVolume::Bii(double delt)
{double Bii;
Bii = theta * bii();
Bii = Bii + Kt * A / (delt * 6);
return(Bii);
}
double TSolutionVolume::Bij(double delt)
{double Bij;
Bij = theta * bij();
Bij = Bij + Kt * A / (delt * 12);
return(Bij);
}
double TSolutionVolume::Bik(double delt)
{double Bik;
Bik = theta * bik();
Bik = Bik + Kt * A / (delt * 12);
return(Bik);
514
}
double TSolutionVolume::Bji(double delt)
{double Bji;
Bji = theta * bji();
Bji = Bji + Kt * A / (delt * 12);
return(Bji);
}
double TSolutionVolume::Bjj(double delt)
{double Bjj;
Bjj = theta * bjj();
Bjj = Bjj + Kt * A / (delt * 6);
return(Bjj);
}
double TSolutionVolume::Bjk(double delt)
{double Bjk;
Bjk = theta * bjk();
Bjk = Bjk + Kt * A / (delt * 12);
return(Bjk);
}
double TSolutionVolume::Bki(double delt)
{double Bki;
Bki = theta * bki();
Bki = Bki + Kt * A / (delt * 12);
return(Bki);
}
double TSolutionVolume::Bkj(double delt)
{double Bkj;
Bkj = theta * bkj();
Bkj = Bkj + Kt * A / (delt * 12);
return(Bkj);
515
}
double TSolutionVolume::Bkk(double delt)
{double Bkk;
Bkk = theta * bkk();
Bkk = Bkk + Kt * A / (delt * 6);
return(Bkk);
}
double TSolutionVolume::Ci(double delt)
{double Ci;
double nI,nJ,nK;
nI= I();
nJ=J();
nK=K();
Ci = Q()*A/3 - betaij* Lij/2 - betaik*Lik/2;
// {Cx}
// [Bx] * [Tm]
Ci = Ci - (1-theta) * (bii()*I()+bij()*J()+bik()*K());
Ci = Ci + (Kt * A * nI)/ (delt * 6)
+ (Kt * A * nJ)/ (delt * 12)
+ (Kt * A * nK)/ (delt * 12); // {Bt} * {Tm}
return(Ci);
}
double TSolutionVolume::Cj(double delt)
{double Cj;
double nI,nJ,nK;
nI= I();
nJ=J();
nK=K();
Cj = Q()*A/3 - betaij* Lij/2 - betajk*Ljk/2;
// {Cx}
// [Bx] * [Tm]
Cj = Cj - (1-theta) * (bji()*I()+bjj()*J()+bjk()*K());
Cj = Cj + (Kt * A * nI)/ (delt * 12)
+ (Kt * A * nJ)/ (delt * 6)
+ (Kt * A * nK)/ (delt * 12); // {Bt} * {Tm}
return(Cj);
}
double TSolutionVolume::Ck(double delt)
516
{double Ck;
double nI,nJ,nK;
nI= I();
nJ=J();
nK=K();
Ck = Q()*A/3 - betajk* Ljk/2 - betaik*Lik/2;
// {Cx}
// [Bx] * [Tm]
Ck = Ck - (1-theta) * (bki()*I()+bkj()*J()+bkk()*K());
Ck = Ck + (Kt * A * nI)/ (delt * 12)
+ (Kt * A * nJ)/ (delt * 12)
+ (Kt * A * nK)/ (delt * 6); // {Bt} * {Tm}
return(Ck);
}
517
Appendix O: solver.h
#ifndef __SOLVER_H
#define __SOLVER_H
#ifndef __STRING_H
#include <string.h>
#endif
#ifndef __MATH_H
#include <math.h>
#endif
#ifndef __FEM_H
#include "fem.H"
#endif
#ifndef __TCHEM_H
#include "tchem.H"
#endif
#ifndef __TASPECIE_H
#include "taspecie.H"
#endif
#ifndef __TALLSPEC_H
#include "tallspec.H"
#endif
void Print(int iNumOfNodes, NodeInfo *nodes[6000], char name[80], TSpeciesName
name);
void PrintEdge(char name[80],TSolutionVolume * els[3000]);
void NeutralizeCharge(NodeInfo * nodes[6000], int iNumOfNodes);
void ChemicalEquilibriaCr(NodeInfo * nodes[6000], int iNumOfNodes, TAllSpecies *
crc);
void NeutralizeChargeCl(NodeInfo * nodes[6000], int iNumOfNodes, TAllSpecies *
crc);
void SetOldChem(NodeInfo * nodes[6000], int iNumOfNodes);
void Solve(TSolutionVolume * els[3000], int iNumOfElements, NodeInfo *
nodes[6000], int iNumOfNodes, double time, TSpeciesName name);
//void Display(TScreen * tscr, TSolutionVolume * els[3000], int iNumOfElements,
NodeInfo * nodes[6000], int iNumOfNodes);
double AvgDifference(NodeInfo * nodes[6000], int iNumOfElements);
#endif
518
Appendix P: solver.c
/***************************************************************************
SOLVER.C
Programmed by: Kevin Stewart
Date Last Modified:
9/20/95
Summary:
This program performs some basic math and i/o functions for
test.C. It assembles (by making the appropriate calls to Bxx and
Cx) and solves the matrix of nodal values.
Inputs:
"NodeInfo * nodes[6000]" should be a sequentially numbered
contiguous block of all the nodes used in the FE formulation.
"TSolutionVolume * els[3000]" is the matrix of all the elements
used in the FE formulation. It too should be continuous.
At the start of the Solve procedure the variables nodes[x]->E
should contain the value of the field variable at the end of the
last timestep.
Outputs:
After "Solve" nodes[]->E will contain the values of the field
variable.
oldE probably isn't needed
***************************************************************************/
#include "solver.H"
// This doesn't work for anything other than potential
double AvgDifference(NodeInfo * nodes[6000], int iNumOfElements)
{int count;
double temp, sum;
double dbold, dbnew;
sum = 0;
for(count=0;count<iNumOfElements;count++)
{dbnew = nodes[count]->chem->GetConcentration("electrical");
dbold = nodes[count]->oldchem->GetConcentration("electrical");
if (fabs(dbnew) < 1e-9)
{dbnew = 1e-9;
}
else
{temp = (dbnew - dbold)/dbold;
if(temp < 0)
{sum = sum - temp;
519
}
else
{sum = sum + temp;
}
}
}
sum = sum / iNumOfElements;
return(sum);
}
void Print(int iNumOfNodes, NodeInfo *nodes[6000], char name[80], TSpeciesName
species)
{FILE * out;
int count;
double dbold, dbnew;
out = fopen(name,"w");
for(count=0;count<iNumOfNodes;count++)
{dbnew = nodes[count]->chem->GetConcentration(species);
dbold = nodes[count]->oldchem->GetConcentration(species);
fprintf(out," %d %lg %lg %lg %lg \n",count,nodes[count]->dbX,
nodes[count]->dbY, dbnew,dbold);
}
fclose(out);
}
/*
This code prints out an edge for elsq8
*/
void PrintEdge(char name[80],TSolutionVolume * els[3000])
{FILE * out;
int icount;
out = fopen(name,"w");
fprintf(out,"1 %lg %lg\n",els[1]->Jijx(),els[1]->Jijy());
fprintf(out,"34 %lg %lg\n",els[34]->Jijx(),els[34]->Jijy());
fprintf(out,"5 %lg %lg\n",els[5]->Jijx(),els[5]->Jijy());
fprintf(out,"6 %lg %lg\n",els[6]->Jijx(),els[6]->Jijy());
fprintf(out,"7 %lg %lg\n",els[7]->Jijx(),els[7]->Jijy());
fprintf(out,"8 %lg %lg\n",els[8]->Jijx(),els[8]->Jijy());
fprintf(out,"33 %lg %lg\n",els[33]->Jjkx(),els[33]->Jjky());
fprintf(out,"0 %lg %lg\n",els[0]->Jijx(),els[0]->Jijy());
fprintf(out,"3 %lg %lg\n",els[3]->Jijx(),els[3]->Jijy());
fprintf(out,"42 %lg %lg\n",els[42]->Jjkx(),els[42]->Jjky());
fprintf(out,"16 %lg %lg\n",els[16]->Jijx(),els[16]->Jijy());
520
fprintf(out,"15 %lg %lg\n",els[15]->Jijx(),els[15]->Jijy());
fprintf(out,"14 %lg %lg\n",els[14]->Jijx(),els[14]->Jijy());
fprintf(out,"13 %lg %lg\n",els[13]->Jijx(),els[13]->Jijy());
fprintf(out,"40 %lg %lg\n",els[40]->Jjkx(),els[40]->Jjky());
fprintf(out,"2 %lg %lg\n",els[2]->Jjkx(),els[2]->Jjky());
fclose(out);
}
void NeutralizeCharge(NodeInfo * nodes[6000], int iNumOfNodes)
{int count;
double amt;
for(count=0;count<iNumOfNodes;count++)
{amt = nodes[count]->chem->GetConcentration("K+") +
nodes[count]->chem->GetConcentration("Ag+");
nodes[count]->chem->SetConcentration("NO3-",amt);
nodes[count]->oldchem->SetConcentration("NO3-",amt);
}
}
void NeutralizeChargeCl(NodeInfo * nodes[6000], int iNumOfNodes, TAllSpecies *
crc)
{int count;
double amt, dbPrevCl;
TSpeciesName Clm;
Clm = "Cl-";
for(count=0;count<iNumOfNodes;count++)
{if(!nodes[count]->chem->GetFixed(Clm))
{amt = crc->ChargeDensity(nodes[count]->chem);
dbPrevCl = nodes[count]->chem->GetConcentration(Clm);
amt = (amt+F*dbPrevCl)/F;
nodes[count]->chem->SetConcentration("Cl-",amt);
}
}
}
void SetOldChem(NodeInfo * nodes[6000], int iNumOfNodes)
{int count;
for(count=0;count<iNumOfNodes;count++)
{nodes[count]->oldchem->CopyChemistry(nodes[count]->chem);
}
}
void ChemicalEquilibriaCr(NodeInfo * nodes[6000], int iNumOfNodes, TAllSpecies *
crc)
{int count;
521
for(count=0;count<iNumOfNodes;count++)
{crc->CrEquilibria(nodes[count]->chem);
}
}
void Solve(TSolutionVolume * els[3000], int iNumOfElements, NodeInfo *
nodes[6000], int iNumOfNodes, double time,TSpeciesName name)
{ double B[2000][2000]; // num of nodes
double C[2000];
// num of nodes
double temp2, temp3;
int count1,count2;
// Debugging Variable
// TSolutionVolume * temps;
// Zero out matrices
for(count1=0;count1<= iNumOfNodes;count1++)
{for(count2=0;count2<= iNumOfNodes; count2++)
{B[count1][count2]=0;
}
C[count1] = 0;
}
//notation on matrices is [down][over]
for(count1=0;count1 <iNumOfElements;count1++)
{
B[els[count1]->i->iNodeId][els[count1]->i->iNodeId] =
B[els[count1]->i->iNodeId][els[count1]->i->iNodeId] + els[count1]->Bii(time);
B[els[count1]->i->iNodeId][els[count1]->j->iNodeId] =
B[els[count1]->i->iNodeId][els[count1]->j->iNodeId] + els[count1]->Bij(time);
B[els[count1]->i->iNodeId][els[count1]->k->iNodeId] =
B[els[count1]->i->iNodeId][els[count1]->k->iNodeId] + els[count1]->Bik(time);
B[els[count1]->j->iNodeId][els[count1]->i->iNodeId] =
B[els[count1]->j->iNodeId][els[count1]->i->iNodeId] + els[count1]->Bji(time);
B[els[count1]->j->iNodeId][els[count1]->j->iNodeId] =
B[els[count1]->j->iNodeId][els[count1]->j->iNodeId] + els[count1]->Bjj(time);
B[els[count1]->j->iNodeId][els[count1]->k->iNodeId] =
B[els[count1]->j->iNodeId][els[count1]->k->iNodeId] + els[count1]->Bjk(time);
B[els[count1]->k->iNodeId][els[count1]->i->iNodeId] =
B[els[count1]->k->iNodeId][els[count1]->i->iNodeId] + els[count1]->Bki(time);
B[els[count1]->k->iNodeId][els[count1]->j->iNodeId] =
B[els[count1]->k->iNodeId][els[count1]->j->iNodeId] + els[count1]->Bkj(time);
B[els[count1]->k->iNodeId][els[count1]->k->iNodeId] =
B[els[count1]->k->iNodeId][els[count1]->k->iNodeId] + els[count1]->Bkk(time);
C[els[count1]->i->iNodeId] = C[els[count1]->i->iNodeId] +
els[count1]->Ci(time);
C[els[count1]->j->iNodeId] = C[els[count1]->j->iNodeId] +
els[count1]->Cj(time);
522
C[els[count1]->k->iNodeId] = C[els[count1]->k->iNodeId] +
els[count1]->Ck(time);
}
//Scale up matrix
for(count1=0;count1<iNumOfNodes;count1++)
{for(count2=0;count2<iNumOfNodes;count2++)
{B[count1][count2] = B[count1][count2]*1e7;
}
C[count1] = C[count1]*1e7;
}
// Solve the matrix
// First: Pass thru back to front, removing rows and columns, and fixing C
int iThis, iLast;
iLast = iNumOfNodes-1; //row number of last spot
// Note: pass from back to front to avoid destroying numbering
for(iThis= iNumOfNodes-1;iThis >= 0;iThis--)
{if (nodes[iThis]->iFixed == 1) // Is this a constant element that needs to
be removed
{for(count1=0 ; count1<=iLast ; count1++)
{C[count1] = C[count1] - B[count1][iThis] *
nodes[iThis]->chem->GetConcentration(name);
temp2=C[count1]; temp3 = B[count1][iThis];
}
//Remove the C entry
for(count1=iThis ; count1<iLast ; count1++)
{C[count1] = C[count1+1];
temp2=C[count1];
}
//Remove Rows
for(count1=iThis ; count1<iLast ; count1++)
{for(count2=0;count2<=iLast;count2++) //Move across this column
{B[count1][count2] = B[count1+1][count2];
}
}
//Remove Columns
for(count1=iThis ; count1<iLast ; count1++)
{for(count2=0;count2<=iLast;count2++)
{B[count2][count1] = B[count2][count1+1];
}
}
// Decrement iLast
iLast--;
523
}
}
// Solve by Gaussian Elimination
// kill down
double temp;
for(iThis = 0 ; iThis<iLast ; iThis++)
{for(count1=iThis+1 ; count1<=iLast ; count1++)
{if((B[iThis][iThis]*B[iThis][iThis]
*B[count1][iThis]*B[count1][iThis]) > 1e-600) // Check to see if == 0
{temp = -B[count1][iThis]/B[iThis][iThis];
}
else
{temp = 0;
}
for(count2=iThis;count2<=iLast;count2++)
{B[count1][count2] = B[count1][count2] +
temp * B[iThis][count2];
}
C[count1] = C[count1] + temp * C[iThis];
}
}
// Back Substitute
for(count1=iLast ; count1>=0 ; count1--)
{ temp =C[count1];
for(count2=count1+1 ; count2 <= iLast ; count2++)
{temp2 = C[count2];
temp3 = B[count1][count2];
temp = temp - (temp2 * temp3);
}
C[count1] = temp/B[count1][count1];
}
// Grab the nodal values
count1 = 0; //keeps track of unfixed nodes
for(iThis = 0 ; iThis < iNumOfNodes ; iThis++)
{if(nodes[iThis]->iFixed != 1)
// fixed node
{nodes[iThis]->chem->SetConcentration(name,C[count1]);
count1++;
}
}
}
524
Appendix Q: chemtest.c
#include
#include
#include
#include
#include
#include
#include
<string.h>
<math.h>
"tchem.H"
"taspecie.H"
"tallspec.H"
"tmateria.H"
"solver.H"
// els labell CCW
// This function reads the ANSYS-generated test fields to get the mesh
information
// (Node number, Node position, Node connectivity)
void setup(TSolutionVolume * els[3250], int * iNumOfElements, NodeInfo *
nodes[6500], int * iNumOfNodes, TAllSpecies * crc)
{ FILE * in;
// Basic variables for I/O
FILE * out;
char buf[256];
char * ch;
// kluged way of check EOF, will be Null if fgets is
unsuccessful
int count1, count2;
long double x,y,z;
int nodenumber;
int iNumUsedNodes;
int temp;
// counting variable
int i,j,k;
int elnumber;
double r;
TASpecies * foo;
TChemistry * initchem;
TMaterial * mat;
TMaterial * matedge;
// Fill crc with the species that will be in this crevice
foo = new TKp();
crc->AddSpecies(foo);
foo = new TClm();
crc->AddSpecies(foo);
foo = new THp();
crc->AddSpecies(foo);
foo = new TOHm();
525
crc->AddSpecies(foo);
foo = new TNipp();
crc->AddSpecies(foo);
foo = new TFepp();
crc->AddSpecies(foo);
foo = new TCrppp();
crc->AddSpecies(foo);
foo = new TCrO4mm();
crc->AddSpecies(foo);
foo = new TNap();
crc->AddSpecies(foo);
foo = new TAlppp();
crc->AddSpecies(foo);
foo = new TNO3m();
crc->AddSpecies(foo);
foo = new TAgp();
crc->AddSpecies(foo);
foo = new TCrOHpp();
crc->AddSpecies(foo);
foo = new TCrOHOHp();
crc->AddSpecies(foo);
foo = new TCrOHOHOH();
crc->AddSpecies(foo);
foo = new TCrOHOHOHOHm();
crc->AddSpecies(foo);
foo = new TElectrical();
crc->AddSpecies(foo);
foo = new TTemperature();
crc->AddSpecies(foo);
foo = new TPressure();
crc->AddSpecies(foo);
mat = new T304Mat(crc);
matedge = NULL; //new TFooMaterial(crc);
//set the initial chemistry
initchem = new TChemistry();
initchem->AddSpecies("Na+",17,0);
initchem->AddSpecies("Cl-",17,0);
initchem->AddSpecies("H+",1e-4,0);
initchem->AddSpecies("OH-",1,0);
initchem->AddSpecies("Cr+++",0,0);
initchem->AddSpecies("CrOH++",0,0);
initchem->AddSpecies("CrOHOH+",0,0);
initchem->AddSpecies("CrOHOHOH",0,0);
initchem->AddSpecies("CrOHOHOHOH-",0,0);
526
initchem->AddSpecies("Fe++",0,0);
initchem->AddSpecies("temperature",298);
initchem->AddSpecies("pressure",1e5);
initchem->AddSpecies("electrical",0.05);
crc->CrEquilibria(initchem);
double a;
// The source filenames
char nofile[80], elfile[80];
sprintf(nofile,"nopirod2");
sprintf(elfile,"elpirod2");
printf ("started reading files\n");
in = fopen(nofile,"r");
count1 = 0;
// "nodes" is the ANSYS file
// initialize count
nodenumber = 0;
ch = fgets(buf,256,in);
// use ch to grab the result of the fgets
operation
while(ch != NULL)
{// buf[7] is the ones place of the number
if((buf[7] >= '0') && (buf[7] <= '9') && (strlen(buf)> 7))// if this line
is not one of the "waste" lines
{sscanf(buf," %d %lg %lg %lg ",&temp, &x, &y, &z);
nodes[count1] = new NodeInfo;
nodes[count1]->chem = new TChemistry(initchem);
nodes[count1]->oldchem = new TChemistry(initchem);
nodes[count1]->dbX = x;
nodes[count1]->dbY = y;
nodes[count1]->dbZ = z;
nodes[count1]->iUsed = 0;
//Initialize to "not used"
nodes[count1]->iNodeId = temp;
count1++;
}
ch = fgets(buf,256,in);
// use ch to grab the result of the fgets
operation
}
nodenumber = count1;
// save the total number of nodes read
fclose(in);
// close "nodes"
// now open and pass through "elements" twice, once to see which nodes are
used,
// a second time to create the elements
527
in = fopen(elfile,"r");
ch = fgets(buf,256,in);
while(ch != NULL)
{// buf[7] is the ones place of the number
if((buf[7] >= '0') && (buf[7] <= '9') && (strlen(buf) > 7))
{sscanf(buf,"%d %d %d %d %d %d %d %d",
&elnumber,&i,&i,&i,&i,&i,&j,&k);
nodes[i-1]->iUsed = 1;
nodes[j-1]->iUsed = 1;
nodes[k-1]->iUsed = 1;
}
ch = fgets(buf,256,in);
}
fclose(in);
// Renumber the nodes sequentially
iNumUsedNodes = 0;
for(count1=0;count1 < nodenumber;count1++)
{if(nodes[count1]->iUsed != 0)
{nodes[count1]->iNodeId = iNumUsedNodes;
iNumUsedNodes++;
}
}
// Go thru "elements again" creating TSolutionVolumes
in = fopen(elfile,"r");
ch = fgets(buf,256,in);
temp = 0;
out = fopen("elements.txt","w");
while(ch != NULL)
{// buf[7] is the ones place of the number
if((buf[7] >= '0') && (buf[7] <= '9') && (strlen(buf) > 7))
{sscanf(buf,"%d %d %d %d %d %d %d %d",
&elnumber,&i,&i,&i,&i,&i,&j,&k);
// remember that the location of the node is name in file - 1
els[elnumber-1] = new TSolutionVolume(nodes[i-1],
nodes[j-1],nodes[k-1],1e-6,
mat,matedge,matedge,matedge,crc);
fprintf(out,"%i %i %i %i\n",
elnumber-1,nodes[i-1]->iNodeId,nodes[j-1]->iNodeId,nodes[k-1]->iNodeId);
temp++;
}
ch = fgets(buf,256,in);
}
528
fclose(out);
fclose(in);
///////////////////////////////////////////////////////////////////////////
// This section condenses the array of nodes and keeps only those used
// Can't do earlier have to keep old numbering system until elements are created
///////////////////////////////////////////////////////////////////////////
for(count1=0;count1 < iNumUsedNodes;)
{if(nodes[count1]->iUsed == 0)
// The reason this works is because ANSYS
generated sequentially numbered nodes (although an excess)
{delete(nodes[count1]);
for(count2=count1;count2<(nodenumber-1);count2++)
{nodes[count2] = nodes[count2+1];
}
}
else
{count1++;
}
}
///////////////////////////////////////////////////////////////////////////
// This section defines the boundary conditions for the relevant shape.
// It sets the potential and/or gradients at some of the nodes.
///////////////////////////////////////////////////////////////////////////
double
db,ix,iy,jx,jy,kx,ky,ri,rj,rk,alpha,beta,top,bottom,left,right,inner,outer;
///////////////////////////////////////////////////////////////////////////
// ELCOOP1
///////////////////////////////////////////////////////////////////////////
printf("Using boundary conditions for elcoop1 %i\n",nodenumber);
for(count1=0;count1<nodenumber;count1++)
{if (nodes[count1]->dbY < .0000001) // right side
{nodes[count1]->oldchem->SetFixed("electrical",1);
// the potential
for this node is fixed
nodes[count1]->chem->SetFixed("electrical",1);
// the potential for
this node is fixed
nodes[count1]->oldchem->SetFixed("Na+",1);
// the potential for
this node is fixed
nodes[count1]->chem->SetFixed("Na+",1);
// the potential for
this node is fixed
nodes[count1]->oldchem->SetFixed("Cl-",1);
// the potential for
this node is fixed
nodes[count1]->chem->SetFixed("Cl-",1);
// the potential for
this node is fixed
nodes[count1]->oldchem->SetFixed("Cr+++",1);
// the potential for
this node is fixed
529
nodes[count1]->chem->SetFixed("Cr+++",1);
this node is fixed
nodes[count1]->oldchem->SetFixed("Fe++",1);
this node is fixed
nodes[count1]->chem->SetFixed("Fe++",1);
this node is fixed
// the potential for
nodes[count1]->oldchem->SetFixed("H+",1);
this node is fixed
nodes[count1]->chem->SetFixed("H+",1);
node is fixed
// the potential for
// the potential for
// the potential for
// the potential for this
nodes[count1]->oldchem->SetFixed("OH-",1);
this node is fixed
nodes[count1]->chem->SetFixed("OH-",1);
this node is fixed
nodes[count1]->oldchem->SetFixed("CrOH++",1);
this node is fixed
nodes[count1]->chem->SetFixed("CrOH++",1);
this node is fixed
}
}
// the potential for
// the potential for
// the potential for
// the potential for
///////////////////////////////////////////////////////////////////////////
// Tidy up variables.
///////////////////////////////////////////////////////////////////////////
*iNumOfElements = temp;
*iNumOfNodes = iNumUsedNodes;
}
void main(void)
{ // setup variables for use in this program
int
count, count1,count2;
int
i,j,k;
int stable;
double temp2;
double temp3;
int done = 0;
double residual;
TSolutionVolume * els[3250];
int iNumOfElements;
int iNumOfNodes;
NodeInfo * nodes[6500];
char nm[80];
char name[12];
530
double kt, th;
long double time = 1e-2;
TAllSpecies crc;
setup(els, &iNumOfElements, nodes, &iNumOfNodes, &crc);
printf("to main\n");
count2=0;
count1=0;
NeutralizeChargeCl(nodes,iNumOfNodes,&crc);
for(count2=0;count2 < 100;count2++)
{
// Copy the new values to the old to prepare for the next timestep
SetOldChem(nodes,iNumOfNodes);
sprintf(name,"NO3-");
printf("Time period %d %s found. \n",count2, name); // Screen hand holder
sprintf(nm,"nO%d.txt",count2);
//Filename
done = 0;
// set flag for electrical finieshed to FALSE
printf("STARTING ELECTRICAL \n");
sprintf(name,"electrical"); // first find potential gradient
time = 1e-6;
// set delta t for electrical
kt = 1; th = .5;
stable = 1; //check for Peclet stability
for(count=0;count<iNumOfElements;count++) //iniitalize elements for electrical
{stable = stable && els[count]->SetConstants(name,kt,th);
}
if(!stable)
{printf("OOOOOPS NOT STABLE\n");
}
els[0]->Kt,els[0]->Kx,els[0]->Ky,els[0]->Mx,els[0]->My,els[0]->currentspecies);
while (done != 1) //loop till stable EI
{SetOldChem(nodes,iNumOfNodes);
Solve(els,iNumOfElements,nodes,iNumOfNodes,time,name);
printf("just solve\n");
residual = AvgDifference(nodes,iNumOfNodes);
if (residual < .01) // typically .1
{done = 1; // if have converged to stable E-I
531
printf("Time period %d electrical found. \n",count1); // Screen hand
holder
sprintf(nm,"el%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
printf("%s \n",nm);
}
else
{printf("residual = %lg \n",residual);
sprintf(nm,"b%d",count1);
strcat(nm,".txt");
Print(iNumOfNodes,nodes,nm,name);
printf("%s \n",nm);
count1++;
if(count1>60)
{done = 1;
}
// reinitialize the variables
for(count=0;count<iNumOfElements;count++)
{els[count]->SetConstants(name,kt,th);
}
}
}
time = 100;
kt = 1; th = .5;
// set delta t for electrical
sprintf(name,"Na+");
printf("starting on %s \n",name)
stable = 1;
for(count=0;count<iNumOfElements;count++) //initialize elements for Ni++
{stable = stable && els[count]->SetConstants(name,kt,th);
}
if(!stable)
{printf("OOOOOPS NOT STABLE in %s\n",name);
}
Solve(els,iNumOfElements,nodes,iNumOfNodes,time,name);
intf("Time period %d %s found. \n",count2, name); // Screen hand holder
sprintf(nm,"na%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"Cr+++");
printf("starting on %s \n",name);
stable = 1;
532
for(count=0;count<iNumOfElements;count++) //initialize elements for Ni++
{stable = stable && els[count]->SetConstants(name,kt,th);
}
if(!stable)
{printf("OOOOOPS NOT STABLE in %s\n",name);
}
Solve(els,iNumOfElements,nodes,iNumOfNodes,time,name);
sprintf(name,"Fe++");
printf("starting on %s \n",name);
stable = 1;
for(count=0;count<iNumOfElements;count++) //initialize elements for Ni++
{stable = stable && els[count]->SetConstants(name,kt,th);
}
if(!stable)
{printf("OOOOOPS NOT STABLE in %s\n",name);
}
Solve(els,iNumOfElements,nodes,iNumOfNodes,time,name);
printf("Time period %d %s found. \n",count2, name); // Screen hand holder
sprintf(nm,"fe%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
NeutralizeChargeCl(nodes,iNumOfNodes,&crc);
sprintf(name,"Cl-"); // Model Al interactions
printf("starting on %s \n",name);
printf("Time period %d %s found. \n",count2, name); // Screen hand holder
sprintf(nm,"cl%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"H+"); // Model Al interactions
printf("starting on %s \n",name);
stable = 1;
for(count=0;count<iNumOfElements;count++) //initialize elements for Ni++
{stable = stable && els[count]->SetConstants(name,kt,th);
}
if(!stable)
{printf("OOOOOPS NOT STABLE in %s\n",name);
}
printf("Kx value = %lg Ky = %lg
%s",els[0]->Kx,els[0]->Ky,els[0]->currentspecies);
Solve(els,iNumOfElements,nodes,iNumOfNodes,time,name);
printf("Time period %d %s found. \n",count2, name); // Screen hand holder
sprintf(name,"OH-"); // Model Al interactions
printf("starting on %s \n",name);
533
stable = 1;
for(count=0;count<iNumOfElements;count++) //initialize elements for Ni++
{stable = stable && els[count]->SetConstants(name,kt,th);
}
if(!stable)
{printf("OOOOOPS NOT STABLE in %s\n",name);
}
printf("Kx value = %lg Ky = %lg
%s",els[0]->Kx,els[0]->Ky,els[0]->currentspecies);
Solve(els,iNumOfElements,nodes,iNumOfNodes,time,name);
printf("Time period %d %s found. \n",count2, name); // Screen hand holder
sprintf(nm,"oh%d.txt",count2);
//Filename
ChemicalEquilibriaCr(nodes,iNumOfNodes,&crc);
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"H+"); // Model Al interactions
sprintf(nm,"h%d.txt",count2);
//Filename
printf("Time period %d %s found. \n",count2, name); // Screen hand holder
sprintf(nm,"h%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"Cr+++"); // Model Al interactions
printf("Printing time period %d %s. \n",count2, name); // Screen hand holder
sprintf(nm,"h%d.txt",count2);
//Filename
sprintf(nm,"cr%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"CrOH++"); // Model Al interactions
printf("Printing time period %d %s. \n",count2, name); // Screen hand holder
sprintf(nm,"h%d.txt",count2);
//Filename
sprintf(nm,"cr1h%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"CrOHOH+"); // Model Al interactions
printf("Printing time period %d %s. \n",count2, name); // Screen hand holder
sprintf(nm,"h%d.txt",count2);
//Filename
sprintf(nm,"cr2h%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"CrOHOHOH"); // Model Al interactions
printf("Printing time period %d %s. \n",count2, name); // Screen hand holder
sprintf(nm,"h%d.txt",count2);
//Filename
sprintf(nm,"cr3h%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
sprintf(name,"CrOHOHOHOH-"); // Model Al interactions
printf("Printing time period %d %s. \n",count2, name); // Screen hand holder
534
sprintf(nm,"h%d.txt",count2);
//Filename
sprintf(nm,"cr4h%d.txt",count2);
//Filename
Print(iNumOfNodes,nodes,nm,name); //write the file
}
}
535
Appendix R: nosq8
LIST ALL SELECTED NODES.
NODE
DSYS=
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
X
.00000E+00
.10000E-01
.62500E-03
.12500E-02
.18750E-02
.25000E-02
.31250E-02
.37500E-02
.43750E-02
.50000E-02
.56250E-02
.62500E-02
.68750E-02
.75000E-02
.81250E-02
.87500E-02
.93750E-02
.10000E-01
.10000E-01
.10000E-01
Y
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.10000E-01
.62500E-03
.12500E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
X
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.00000E+00
.93750E-02
.87500E-02
.81250E-02
.75000E-02
.68750E-02
.62500E-02
Y
.18750E-02
.25000E-02
.31250E-02
.37500E-02
.43750E-02
.50000E-02
.56250E-02
.62500E-02
.68750E-02
.75000E-02
.81250E-02
.87500E-02
.93750E-02
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THXY
THYZ
THZX
NODE
X
Y
Z
536
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
.56250E-02
.50000E-02
.43750E-02
.37500E-02
.31250E-02
.25000E-02
.18750E-02
.12500E-02
.62500E-03
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.10000E-01
.93750E-02
.87500E-02
.81250E-02
.75000E-02
.68750E-02
.62500E-02
.56250E-02
.50000E-02
.43750E-02
.37500E-02
.31250E-02
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
X
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.30597E-02
.43576E-02
.56306E-02
.68592E-02
.88823E-02
.89021E-02
.89175E-02
.89108E-02
.69403E-02
.56424E-02
.43694E-02
.31408E-02
.11177E-02
.10979E-02
.10825E-02
.10892E-02
Y
.25000E-02
.18750E-02
.12500E-02
.62500E-03
.11177E-02
.10979E-02
.10825E-02
.10892E-02
.30597E-02
.43576E-02
.56306E-02
.68592E-02
.88823E-02
.89021E-02
.89175E-02
.89108E-02
.69403E-02
.56424E-02
.43694E-02
.31408E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
81
82
83
84
85
86
87
X
.16766E-02
.79420E-02
.88531E-02
.89789E-02
.83234E-02
.20580E-02
.11469E-02
Y
.11469E-02
.10211E-02
.16766E-02
.79420E-02
.88531E-02
.89789E-02
.83234E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
537
88
89
90
91
92
93
94
95
96
97
98
99
100
.10211E-02
.76095E-02
.77130E-02
.23905E-02
.22870E-02
.49998E-02
.78674E-02
.50000E-02
.21326E-02
.62415E-02
.78145E-02
.37584E-02
.21855E-02
.20580E-02
.22870E-02
.76095E-02
.77130E-02
.23905E-02
.21322E-02
.50000E-02
.78674E-02
.50000E-02
.21852E-02
.62416E-02
.78145E-02
.37584E-02
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
X
.37472E-02
.78021E-02
.62527E-02
.21979E-02
.66724E-02
.66791E-02
.33300E-02
.33233E-02
.44652E-02
.55455E-02
.68655E-02
.68696E-02
.55403E-02
.44600E-02
.31401E-02
.31360E-02
.58753E-02
.58679E-02
.41307E-02
.41381E-02
Y
.21977E-02
.37473E-02
.78021E-02
.62527E-02
.33231E-02
.66727E-02
.66792E-02
.33297E-02
.31399E-02
.31358E-02
.44654E-02
.55459E-02
.68658E-02
.68698E-02
.55405E-02
.44600E-02
.41381E-02
.58755E-02
.58680E-02
.41306E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
121
122
123
124
125
126
127
128
129
130
131
132
133
134
X
.60926E-02
.49961E-02
.39133E-02
.50085E-02
.50095E-02
.62500E-03
.14633E-02
.27798E-02
.20883E-02
.34048E-02
.40538E-02
.46788E-02
.53153E-02
.59403E-02
Y
.50098E-02
.60928E-02
.49959E-02
.50089E-02
.39124E-02
.62500E-03
.57347E-03
.55886E-03
.57347E-03
.55886E-03
.54893E-03
.54893E-03
.54126E-03
.54126E-03
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
538
135
136
137
138
139
140
.65546E-02
.71796E-02
.77210E-02
.93750E-02
.83460E-02
.88015E-02
.54458E-03
.54458E-03
.51057E-03
.62500E-03
.51057E-03
.83830E-03
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
X
.94265E-02
.94411E-02
.94265E-02
.94411E-02
.94511E-02
.94511E-02
.94587E-02
.94587E-02
.94554E-02
.94554E-02
.94894E-02
.93750E-02
.94894E-02
.91617E-02
.85367E-02
.72202E-02
.79117E-02
.65952E-02
.59462E-02
.53212E-02
Y
.14633E-02
.27798E-02
.20883E-02
.34048E-02
.40538E-02
.46788E-02
.53153E-02
.59403E-02
.65546E-02
.71796E-02
.77210E-02
.93750E-02
.83460E-02
.88015E-02
.94265E-02
.94411E-02
.94265E-02
.94411E-02
.94511E-02
.94511E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
X
.46847E-02
.40597E-02
.34454E-02
.28204E-02
.22790E-02
.62500E-03
.16540E-02
.11985E-02
.57347E-03
.55886E-03
.57347E-03
.55886E-03
.54893E-03
.54893E-03
.54126E-03
.54126E-03
.54458E-03
.54458E-03
.51057E-03
.83830E-03
Y
.94587E-02
.94587E-02
.94554E-02
.94554E-02
.94894E-02
.93750E-02
.94894E-02
.91617E-02
.85367E-02
.72202E-02
.79117E-02
.65952E-02
.59462E-02
.53212E-02
.46847E-02
.40597E-02
.34454E-02
.28204E-02
.22790E-02
.11985E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
539
NODE
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
X
.51057E-03
.37086E-02
.23681E-02
.26733E-02
.34035E-02
.49941E-02
.46787E-02
.40524E-02
.62449E-02
.53152E-02
.59360E-02
.74006E-02
.72343E-02
.65503E-02
.88922E-02
.88677E-02
.82459E-02
.83422E-02
.89098E-02
.83848E-02
Y
.16540E-02
.11078E-02
.11323E-02
.17541E-02
.16577E-02
.10902E-02
.16150E-02
.16478E-02
.10858E-02
.16073E-02
.16339E-02
.10551E-02
.16881E-02
.16372E-02
.37086E-02
.23681E-02
.26733E-02
.34035E-02
.49941E-02
.46788E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
X
.83521E-02
.89142E-02
.83924E-02
.83660E-02
.89449E-02
.83119E-02
.83627E-02
.62914E-02
.76319E-02
.73267E-02
.65965E-02
.50059E-02
.53212E-02
.59475E-02
.37551E-02
.46847E-02
.40639E-02
.25994E-02
.27657E-02
.34496E-02
Y
.40525E-02
.62449E-02
.53153E-02
.59361E-02
.74006E-02
.72343E-02
.65504E-02
.88922E-02
.88677E-02
.82459E-02
.83422E-02
.89098E-02
.83848E-02
.83521E-02
.89142E-02
.83924E-02
.83660E-02
.89449E-02
.83119E-02
.83627E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
221
222
223
224
225
226
X
.11078E-02
.11323E-02
.17541E-02
.16578E-02
.10902E-02
.16152E-02
Y
.62914E-02
.76319E-02
.73267E-02
.65965E-02
.50059E-02
.53212E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
540
227
228
229
230
231
232
233
234
235
236
237
238
239
240
.16479E-02
.10858E-02
.16076E-02
.16340E-02
.10551E-02
.16881E-02
.16373E-02
.13489E-02
.19818E-02
.83975E-02
.77757E-02
.82313E-02
.86511E-02
.83460E-02
.59475E-02
.37551E-02
.46847E-02
.40639E-02
.25994E-02
.27657E-02
.34496E-02
.16025E-02
.17687E-02
.13489E-02
.16540E-02
.19818E-02
.83975E-02
.77757E-02
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
X
.80182E-02
.16025E-02
.22243E-02
.17687E-02
.16540E-02
.69255E-02
.77058E-02
.71409E-02
.77638E-02
.69828E-02
.71961E-02
.30745E-02
.22942E-02
.28603E-02
.22362E-02
.30171E-02
.28051E-02
.56206E-02
.43735E-02
.47325E-02
Y
.82313E-02
.86511E-02
.83460E-02
.80182E-02
.22243E-02
.22361E-02
.30172E-02
.28050E-02
.69255E-02
.77058E-02
.71411E-02
.77638E-02
.69828E-02
.71961E-02
.30745E-02
.22941E-02
.28601E-02
.21587E-02
.21649E-02
.26360E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
261
262
263
264
265
266
267
268
269
270
271
272
273
X
.52726E-02
.78410E-02
.78347E-02
.73664E-02
.73685E-02
.43792E-02
.56264E-02
.52702E-02
.47300E-02
.21590E-02
.21653E-02
.26364E-02
.26343E-02
Y
.26340E-02
.56208E-02
.43736E-02
.47327E-02
.52729E-02
.78410E-02
.78347E-02
.73666E-02
.73686E-02
.43792E-02
.56264E-02
.52703E-02
.47300E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
541
274
275
276
277
278
279
280
.64569E-02
.58935E-02
.72468E-02
.73421E-02
.35442E-02
.41092E-02
.27544E-02
.27542E-02
.26605E-02
.64571E-02
.58937E-02
.72469E-02
.73422E-02
.35440E-02
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
X
.26607E-02
.35353E-02
.41062E-02
.72372E-02
.73338E-02
.64659E-02
.58965E-02
.27640E-02
.26690E-02
.61089E-02
.67689E-02
.62738E-02
.67744E-02
.61097E-02
.62735E-02
.38950E-02
.32351E-02
.37304E-02
.38942E-02
.32296E-02
Y
.41092E-02
.27637E-02
.26688E-02
.35352E-02
.41063E-02
.72374E-02
.73339E-02
.64659E-02
.58966E-02
.32295E-02
.38942E-02
.37306E-02
.61093E-02
.67692E-02
.62741E-02
.67745E-02
.61099E-02
.62736E-02
.32348E-02
.38948E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
NODE
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
X
.37307E-02
.50054E-02
.43017E-02
.47374E-02
.57104E-02
.52775E-02
.68676E-02
.63704E-02
.64790E-02
.63688E-02
.64811E-02
.50002E-02
.57041E-02
.52682E-02
.42954E-02
.47281E-02
.31381E-02
.36354E-02
.35267E-02
.36371E-02
Y
.37301E-02
.31379E-02
.36352E-02
.35261E-02
.36370E-02
.35241E-02
.50056E-02
.43017E-02
.47376E-02
.57107E-02
.52779E-02
.68678E-02
.63706E-02
.64793E-02
.63689E-02
.64813E-02
.50003E-02
.57043E-02
.52682E-02
.42953E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
542
NODE
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
X
.35246E-02
.59839E-02
.54419E-02
.54424E-02
.59802E-02
.54320E-02
.54382E-02
.45634E-02
.40220E-02
.45696E-02
.40257E-02
.45733E-02
.45738E-02
.55505E-02
.50023E-02
.44609E-02
.50090E-02
Y
.47280E-02
.45740E-02
.45735E-02
.40252E-02
.54426E-02
.59841E-02
.54422E-02
.59804E-02
.54320E-02
.54384E-02
.45633E-02
.45697E-02
.40215E-02
.50093E-02
.55508E-02
.50024E-02
.44606E-02
Z
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
.00000E+00
THXY
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THYZ
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
THZX
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
.00
543
Appendix S: elsq8
LIST ALL SELECTED ELEMENTS.
(LIST NODES)
ELEM MAT TYP REL ESY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
NODES
16
1
32
48
65
6
8
10
12
22
24
26
28
38
40
42
44
53
55
57
ELEM MAT TYP REL ESY
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
4
18
34
8
8
10
12
14
24
26
28
30
40
42
44
46
55
57
59
20
63
36
51
66
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
17
3
33
49
130
7
9
11
13
23
25
27
29
39
41
43
45
54
56
58
19
126
35
50
131
130
132
134
136
144
146
148
150
158
160
162
164
172
174
176
138
64
152
166
182
128
131
133
135
142
145
147
149
156
159
161
163
170
173
175
80
67
68
70
71
72
74
75
76
78
79
80
63
16
81
82
22
83
32
84
60
132
134
144
146
148
158
160
162
172
174
176
127
137
5
136
141
138
151
150
178
133
135
145
147
149
159
161
163
173
175
177
180
15
129
137
21
141
31
151
177
186
189
195
199
202
208
212
215
221
225
228
126
139
127
192
143
140
153
205
NODES
59
66
67
69
70
71
73
74
75
77
78
79
4
82
4
68
83
16
84
72
61
10
12
24
26
28
40
42
44
55
57
59
81
14
6
14
20
20
30
30
544
ELEM MAT TYP REL ESY
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
NODES
85
32
86
76
87
48
88
80
82
6
83
84
85
86
87
88
89
68
90
72
ELEM MAT TYP REL ESY
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
0
0
0
38
85
48
86
53
87
63
88
83
81
69
85
73
87
77
81
83
89
85
90
155
152
165
164
169
166
179
178
139
128
143
153
157
167
171
181
237
192
240
205
37
155
47
165
52
169
62
179
140
183
142
154
156
168
170
180
236
237
239
240
157
154
167
218
171
168
181
231
236
129
196
239
209
242
222
234
238
193
241
206
87
91
81
92
69
93
94
95
96
73
77
93
81
97
98
99
100
101
94
102
243
218
245
231
238
186
199
212
225
241
244
188
184
189
202
215
228
182
201
195
242
243
234
245
196
190
203
216
229
209
222
187
235
194
207
220
233
188
200
201
244
219
235
232
197
187
200
213
226
210
223
259
183
191
204
217
230
185
263
198
95
103
96
214
208
227
213
214
226
267
211
271
NODES
91
76
92
80
89
66
70
74
78
90
91
101
65
67
71
75
79
65
102
69
ELEM MAT TYP REL ESY
81
82
83
36
36
46
46
51
51
61
61
16
65
22
32
38
48
53
63
82
82
84
84
86
86
88
88
83
67
71
75
79
85
87
66
92
68
72
76
80
66
70
70
NODES
103
73
104
74
74
78
545
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
77
93
65
97
89
94
98
90
95
99
91
96
100
105
97
106
98
ELEM MAT TYP REL ESY
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
104
97
92
89
102
98
90
103
99
91
104
100
92
102
105
103
106
221
190
185
194
197
203
207
210
216
220
223
229
233
248
246
251
249
227
191
256
193
198
204
206
211
217
219
224
230
232
247
248
250
251
224
258
184
246
247
262
249
250
266
252
253
270
255
284
274
286
276
104
107
108
108
92
105
109
110
94
111
106
112
95
113
107
114
96
115
108
116
254
252
283
255
282
275
259
258
285
284
277
262
287
286
279
266
289
288
281
270
253
254
299
257
257
274
260
275
263
285
276
277
267
287
278
279
271
289
280
281
288
278
282
280
256
290
283
261
264
291
293
265
268
294
296
269
272
297
300
273
112
109
114
116
111
117
113
118
264
261
268
272
292
290
295
293
265
302
269
273
291
292
294
295
307
260
312
317
308
305
313
310
NODES
107
99
101
100
101
110
101
93
111
105
112
94
113
106
114
95
115
107
116
96
ELEM MAT TYP REL ESY
121
122
123
124
125
126
127
128
78
67
101
68
69
71
72
73
75
76
77
79
80
89
89
90
90
91
91
109
92
108
97
93
97
102
102
98
98
103
103
99
99
104
104
100
100
NODES
111
93
113
115
117
110
118
112
94
110
95
96
105
105
106
106
546
129
130
131
132
133
134
135
136
137
138
139
140
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
119
114
120
116
117
111
113
115
121
118
122
119
ELEM MAT TYP REL ESY
141
142
143
144
145
146
147
148
149
150
151
152
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
/OUTPUT FILE= nosq8a
0
0
0
0
0
0
0
0
0
0
0
0
107
107
108
108
111
112
114
116
112
113
114
115
115
119
109
120
121
121
122
123
118
122
119
123
298
296
301
300
308
307
312
317
311
313
316
318
297
298
299
301
309
311
316
321
310
314
315
319
318
315
303
320
322
309
314
319
325
326
328
329
120
122
124
119
124
123
120
109
125
125
125
125
321
327
325
335
322
330
336
306
303
305
332
323
320
326
327
328
334
329
331
304
304
324
333
337
331
335
334
330
323
336
332
302
333
306
337
324
NODES
123
124
121
124
117
124
124
110
120
110
124
117
116
118
118
122
121
119
123
125
109
117
120
124
© Copyright 2026 Paperzz