A&A 491, 633-641 (2008)
J. B. Lester1 - H. R. Neilson2
1 - Department of Chemical and Physical Sciences, University of Toronto Mississauga, Canada
2 - Department of Astronomy and Astrophysics, University of Toronto, Canada
Received 11 July 2008/ Accepted 30 August 2008
Context. The current stellar atmosphere programs still cannot match some fundamental observations of the brightest stars, and with new techniques, such as optical interferometry, providing new data for these stars, additional development of stellar atmosphere codes is required.
Aims. To modify the open-source model atmosphere program ATLAS to treat spherical geometry, creating a test-bed stellar atmosphere code for stars with extended atmospheres.
Methods. The plane-parallel ATLAS has been changed by introducing the necessary spherical modifications in the pressure structure, in the radiative transfer and in the temperature correction.
Results. Several test models show that the spherical program matches the plane-parallel models in the high surface gravity regime, and matches spherical models computed by PHOENIX and by MARCS in the low gravity case.
Key words: stars: atmospheres - methods: numerical - radiative transfer
ATLAS (Kurucz 1979,1970) is a well-documented, well-tested, robust, open-source computer program for computing static, plane-parallel stellar atmospheres in local thermodynamic equilibrium (LTE). Since ATLAS came to maturity in the 1970s, stellar atmosphere codes have progressed in a number of directions to include important additional physics. For example, the PHOENIX program (Hauschildt et al. 1999) includes advances such as the massive use of statistical equilibrium (NLTE) in place of LTE, spherically symmetric extension in place of plane-parallel geometry, the inclusion of the dust opacities needed for brown dwarf temperatures, and the ability to include blast wave velocity fields.
These advances, while obviously moving toward greater reality, have not eliminated some persistent problems. For example, a detailed study of Arcturus using PHOENIX models (Short & Hauschildt 2003) found that their spherical NLTE models increased the discrepancy between the observed and computed spectral irradiance. A similar analysis of models with solar parameters (Short & Hauschildt 2005) also concluded that important opacity and/or other physics is still missing.
This evidence that the significant improvements contained in the state-of-the-art programs have not achieved closer agreement with the observations of these fundamental, bright stars indicates a need to continue exploring additional physics. This is a valuable role that ATLAS can play because it is open source and freely available from Kurucz's web page (http://kurucz.harvard.edu), where anyone can download the code and use it as the starting point for studying other possible improvements. An example of the advantage provided by this starting point is the work of Kupka (1996) who explored convection as represented by the full spectrum of turbulence (Canuto et al. 1996; Canuto & Mazzitelli 1991) as an alternative to the standard mixing length theory. More recently, Sbordone et al. (2007) have developed a GNU-Linux port of ATLAS for use in a range of applications. In that spirit, we have developed versions of the ATLAS program that replace the assumption of plane-parallel geometry by spherical symmetry. These codes, comparable to the LTE, spherical version of PHOENIX or of the spherical version of MARCS (Gustafsson et al. 2008), can serve as the basis for the study of additional physics needed to understand luminous stars that are cool enough that NLTE effects are not dominant. Such continued studies are certainly necessary given the revolutionary achievements of optical interferometry in imaging the surfaces of stars, thus providing powerful new observational tests of models of stellar atmospheres.
In addition to including a wide range of continuous opacities, ATLAS also incorporates the opacity of tens of millions of ionic, atomic and molecular lines. The original treatment of these lines was via pre-computed opacity distribution functions (ODF) in the ATLAS9 program. Later, ATLAS12 was developed to use opacity sampling (OS) of the same extensive line lists, and Kurucz continues to expand and improve the opacities for these codes. There are small parts of the two ATLAS codes that must be different to handle the different line treatments, but the majority of the codes are not affected by the line treatment, and these can be identical. However, as inevitably happens, small differences between the two codes develop over time; these can be seen by differencing the two source files. Therefore, before beginning our conversion to spherical geometry, we rationalized the two versions of ATLAS to be identical in every way except where they must be different for the line treatments. Where there are differences not associated with the treatment of the line opacity, we have adopted the ATLAS12 routine, under the assumption that it is likely to be newer and undergoing more active development than the older ATLAS9 code. We have also converted our codes to current Fortran 2003 standards. To distinguish our programs from the Kurucz originals, we use the name ATLAS_ODF for our version of ATLAS9, and ATLAS_OS for our version of ATLAS12.
To test the accuracy of our conversions, we computed a model of the solar atmosphere, starting from the input model asunodfnew.dat dated 2 April 2008 in the Kurucz directory /grids/gridp00odfnew. We learned later that this model was computed by Castelli as part of her collaboration with Kurucz (Castelli & Kurucz 2004). We used the opacity distribution function bdfp00fbig2.dat located Kurucz's directory /opacities/dfp00f, which uses the solar iron abundance = -4.51. After 20 iterations, the flux errors are all 0.2% and the flux derivative errors are all 2.8%; most errors of both kinds are smaller than our output resolution of 0.1%. Figure 1 compares the temperature and pressure structures of the solar model computed with ATLAS_ODF and the starting ATLAS9 model.
|Figure 1: A comparison of the temperature structures for two solar atmospheric models. The top panel displays the temperatures as a function of . The solid line is the model computed with ATLAS_ODF and the dashed line is the solar model atmosphere asunodfnew.dat from the Kurucz web page. The bottom panel shows the percentage difference between the temperatures of the two models, also as a function of the gas pressure. The differences are entirely due to the conversion to Fortran 2003 and to using consistent, modern values of fundamental parameters throughout the ATLAS_ODF code. The numerical methods are the same for the two models.|
|Open with DEXTER|
Starting from the ATLAS_ODF code, we removed those components that used the opacity distribution functions and replaced them with the components needed to do opacity sampling. At this point we introduced several changes that are not present in ATLAS12. Depending on the effective temperature of the star, ATLAS12 adjusts the index of the starting wavelength, variable nustart, to eliminate wavelengths were the flux is negligibly small. In anticipation of future applications of the code, we have removed this adjustment to always begin at the shortest wavelength, independent of the effective temperature. This change has been propagated back to the ATLAS_ODF version. Second, ATLAS12 always computes 30 000 wavelengths with a wavelength spacing equal to a constant spectral resolving power of 104. We have modified this to be able to specify a spectral resolving power , and have the number of wavelengths adjust automatically. We did this to test the dependence of the computed model on the spectral resolving power. Third, in assembling the master file of lines to be sampled, ATLAS12 uses a sorting routine from the computer's operating system, which is outside of the source code. We have modified the subroutine prelinop, to perform this sort within the ATLAS source code, making it self-contained.
|Figure 2: A comparison of the temperature structures for two solar atmospheric models. The top panel displays the temperatures as a function of . The solid line is for the model computed with ATLAS_OS and the dashed line is the model computed with ATLAS_ODF. The bottom panel shows the percentage difference between the temperatures of the two models, also as a function of the gas pressure. The differences are entirely due to the way in which line opacity is included. Both codes use Fortran 2003, the same fundamental parameters and the same numerical methods.|
|Open with DEXTER|
To test ATLAS_OS, we computed a model of the solar atmosphere, again starting from the input model asunodfnew.dat. We used Kurucz's files lowlines, hilines and bnltelines8 for the atomic and ionic lines, as well as the molecular files diatomic, tiolines and h2ofast. After eliminating lines that did not contribute at the temperatures of the solar atmosphere, the number of sampled lines used in the calculation was about two million. Figure 2 compares the temperature structure of the solar model computed with ATLAS_OS and the model computed with ATLAS_ODF. The differences between the models using the two methods of including line opacity are comparable to the differences between our ATLAS_ODF and the original ATLAS9 shown in Fig. 1. Therefore, the joint agreements displayed in Figs. 1 and 2 show that our ATLAS_OS code matches the ATLAS9 structure. As an additional test of the two line treatments, we have used our modification to the opacity-sampled code mentioned earlier to vary the spectral resolving power. The opacity-sampled model shown in Fig. 2 used the default spectral resolving power of 30 000. Our tests found that repeating the calculation with spectral resolving powers of 10 000 and 3000 produced almost no change in the resulting model structure.
As an additional test, Kurucz (private communication) provided us with a new ATLAS12 (opacity-sampled) solar model that we compare with our ATLAS_OS model in Fig. 3. It is apparent that the agreement is very good.
|Figure 3: A comparison of the temperature structures for two solar atmospheric models. The top panel displays the temperature as a function of . The solid line is the model computed with ATLAS_OS, and the dashed line is an ATLAS12 model provided by Kurucz (private communication). The bottom panel shows the percentage difference between the temperatures of the two models, also as a function of the gas pressure.|
|Open with DEXTER|
The spherically symmetric version of the code, SATLAS_ODF, was created from ATLAS_ODF. Plane-parallel models are labeled with the parameters effective temperature, , and surface gravity, usually given as in cgs units. For spherical models these two parameters are degenerate because the same value of is produced by different combinations of the stellar mass and radius. Therefore, we have elected to use the three fundamental physical parameters luminosity, , mass, , and radius, . These can be supplied in cgs units or as multiples or fractions of the solar values, / , / and / , where the values of , and are available throughout the source code via a Fortran 2003 module routine.
The radius, of course, will vary with depth in the extended atmosphere. Therefore we have chosen to define the radius where the radial Rosseland mean optical depth, , has the value of 2/3 because a photon has a probability of about 50% of escaping the atmosphere from that depth. Other choices could be made, such as (Gustafsson et al. 2008), or (Hauschildt et al. 1999), but these differences are nearly negligible.
With the three basic parameters defined, there are three modifications to the code: pressure structure, radiative transfer and temperature correction.
ATLAS9 and ATLAS12 both solve for the pressure
structure in two locations. After reading in the starting model, the
pressure structure is solved from the initial temperature structure
as a function of Rosseland mean optical depth,
in the subroutine ttaup. After the first iteration the total gas pressure is computed by integrating the simple equation
In a spherical atmosphere there are three potential depth variables: mass column density, m, radius, r, and radial Rosseland mean optical depth, . As discussed by Mihalas & Hummer (1974), there is no clear preference for any of these variables. Therefore, we have elected to adopt the radial Rosseland mean optical depth as our primary variable, and then use to solve for the pressure structure by modifying the subroutine ttaup. This is done in the initialization of the calculation and for each iteration.
The modifications to the subroutine ttaup include allowing the surface gravity to vary with the radial distance from the center of the star,
Using g(r), the equation of spherical hydrostatic equilibrium is
With the upper boundary condition established, Eq. (6) is integrated for , again using the Bulirsch-Stoer method. At each step the gas pressure is found as described above, and the gas pressure and temperature are used to interpolate the corresponding value for the Rosseland mean opacity.
This method of solving the hydrostatic equilibrium is also applicable to the plane-parallel atmosphere with g(r) = g and without solving for the radius. To test our implementation, we have incorporated the modified version of subroutine ttaup, with both the Bulirsh-Stoer and the fifth-order Runga-Kutta routines, into ATLAS_ODF and ATLAS_OS. The maximum difference between the Bulirsch-Stoer (or the fifth-order Runga-Kutta) method and the original Hamming method was less than our output numerical resolution of 1 part in 104 at all but two of the 72 depth points. Therefore, the percentage difference between the methods is zero except at these two depths, where the differences are only 0.021% and . It is clear that the pressure solution is being done correctly.
|Figure 4: The geometry used for the Rybicki (1971) method of radiative transfer. The rays are distributed over the core in equal steps of 0.1 in .|
|Open with DEXTER|
ATLAS9 and ATLAS12 solve the radiative transfer using the integral equation method. The complication introduced by a geometrically extended, spherically symmetric atmosphere is that the angle between a ray of light and the radial direction varies with depth. Numerous methods are available for solving this problem, of which we have chosen to use the Rybicki (1971) reorganization of the Feautrier (1964) method.
Following the approach described by Mihalas (1978), we solve the radiative transfer along a set of rays parallel to the central ray directed toward the distant observer, as shown in Fig. 4. A subset of these rays intersect the ``core'' of the star, defined as the deepest radial optical depth, which we usually set to be . We sample the surface of the core using 10 rays. We tried both equal steps of covering the interval in steps of , which is shown in Fig. 4, and a finer spacing toward the edge of the core by distributing the rays as , 0.85, 0.7, 0.55, 0.4, 0.25, 0.2, 0.15, 0.1, 0.05. We found the results to be almost identical, so we chose to use the equal spacing.
For the core rays, the lower boundary condition of the radiative transfer is the diffusion approximation. From the core to the surface we follow the convention used by Kurucz in his plane-parallel models by having 72 depth points. For the central ray these depth points are distributed eight per decade with equal steps of the from to -6.875. For the off-center core rays the steps will be different, depending on the projection.
The tangent rays are those that terminate at the radius perpendicular to the central ray, and which are tangent to a particular atmospheric shell at that point, as shown in Fig. 4. The radial spacing between the shells is set by the central ray, and these spacings define the impact parameters of all the tangent rays. With this geometry, we calculated values of at the intersection of each ray toward the distant observer with each atmospheric depth, and from these we compute the integration weights at each point over the surface of each atmospheric shell at every depth. The lower boundary condition for the radiative transfer of the tangent rays is the assumption of symmetry at the perpendicular radius. At the surface of the atmosphere the rays toward the distant observer have values that depend on the steps described above. When we want to use these surface intensities, such as to predict the observable center-to-limb variation, we map the computed onto a specified set of -values using a cubic spline interpolation.
|Figure 5: A comparison of the temperature structures for two solar atmospheric models, both using the ATLAS_ODF code. The solid line used the Rybicki (1971) method to compute the radiative transfer, and the dashed line used the original ATLAS9 integral equation method.|
|Open with DEXTER|
This solution with the Rybicki (1971) organization uses exactly the same equations as the original Feautrier (1964) method. Therefore, in the plane-parallel case, in which both can be used, the results must be exactly the same. To test this, we created two alternative radiative transfer routines for the plane-parallel codes ATLAS_ODF and ATLAS_OS, one new routine having the original Feautrier organization and the other having the Rybicki organization, and we select which of the radiative transfer routines we want by using an input instruction at run time, holding everything else the same. The result of the comparison is shown in Fig. 5.
Using the Feautrier (1964) organization gives exactly the same result (the output files have zero differences), as it should. The tiny temperature drop at the top of the atmosphere shown in Fig. 5 is entirely due to the precise form of implementing the surface boundary condition. We explored different implementations (changing one statement) that were logically equivalent, and we found the result shown to be the closest match to the original ATLAS integral equation solution. The other implementations gave the same temperature at the top depth of the atmosphere, , but have a slower convergence to the temperature derived using the integral equation method.
A note about the relative run times of the same code using the three different radiative transfer routines: the time per iteration using the Feautrier method is about half the time of the original integral equation method, while with the Rybicki method the time per iteration is about ten times longer than the original integral equation method.
The difference in the execution time of the Feautrier and the Rybicki methods, which use the same equations, is due to the sizes of the matrices that must be inverted. The Feautrier method computes the radiation field for all values at each atmospheric depth, where the values are the double-Gauss angles found to be superior by Sikes (1951). The computing time to invert the matrices scales as the cube of the number of values, M3. We use three angle points because our tests using four and eight angle points are insignificantly different ( K) from the three-angle solution, while the computing time is certainly increased.
The Rybicki method computes the radiation for each individual ray over all atmospheric depths. The number of depth points ranges from just two for the tangent ray that penetrates just one atmospheric depth, up to 72 depth points for the rays that reach the core. The need to invert these larger matrices causes the execution of the Rybicki method to be longer.
ATLAS9 and ATLAS12 perform the temperature correction using the Avrett-Krook method (Avrett 1964; Avrett & Krook 1963) modified to include convection (Kurucz 1970). While the other spherical atmosphere programs (PHOENIX and MARCS) use their own methods to perform temperature corrections, it is our experience (Tycner & Lester 2002) that the Avrett-Krook method is extremely robust, capable of achieving temperature convergence 1 mK. Therefore, we have chosen to modify the Avrett-Krook temperature correction routine in the original ATLAS codes to include spherically symmetric extension.
We start with the time-independent equation of radiative transfer in
spherical geometry (Mihalas 1978),
The extinction and the source function are expanded to first order as
Using Eq. (11) we can write
Using these, the spherical radiative transfer equation, including perturbations, becomes
The correction for the mass column density found above has assumed that all the energy is carried by radiation. If the atmospheric temperature is cool enough, significant amounts of energy can also be carried by
convection in the deeper, less transparent levels of the atmosphere.
ATLAS calculates the convective energy transport by the mixing length approximation. The equations in Kurucz (1970)
do not contain the radial variable explicitly, but they do contain
the surface gravity, g, which now varies with r. However, the
implementation of those equations replaces g in terms of the total
pressure, which now implicitly includes the geometry. Therefore, there is no need to modify the original ATLAS code to include convection in the spherical temperature correction, and Eq. (29) remains the same, with the addition of convective terms in the coefficients a0, b0 and c0 as follows:
A third temperature correction is used in the original ATLAS
code to smooth the region of overlap between the first two corrections. This is
One test of the validity of the spherical code is to compute a spherical solar atmosphere, which should be nearly identical to the plane-parallel model. For both models we used the Kurucz file asunodfnew.dat for the starting model and the file bdfp00fbig2.dat for the opacity distribution function. To eliminate other possible sources of differences, we used the Bulirsch-Stoer solution to solve for the pressure structures and the Rybicki method for the radiative transfer in the plane-parallel model as well as for the spherical calculations. The spherical model used the atmospheric parameters erg/s, g, and cm. These correspond to K and , which are slightly different from the canonical values used by Kurucz. Therefore, we computed the plane-parallel model with the consistent values of and . The comparison is shown in Fig. 6.
The is until , where the temperature of the spherical model begins to trend lower than the plane-parallel model. The dip in the temperature difference down to -2.4% is due to the kink in the temperature structure of the plane-parallel model. This feature was discussed earlier in connection with Fig. 5. However, in this case the Rybicki (1971) method is used to compute the radiative transfer in both models, using the same surface boundary condition in both codes. Therefore, this difference cannot be due to a coding difference between the two routines. This feature might be due to the number of rays used in the calculation of the radiative transfer. The Rybicki solution for the plane-parallel code uses three rays for each depth, whereas the same method in the spherical code uses 80 rays for the layers approaching the surface. Perhaps this finer griding produces a smoother temperature profile in these layers. There is, however, no physical significance to the temperature differences near the surface because these layers are located in the solar chromosphere (Fontenla et al. 2006), well above the temperature minimum, where other physics is completely dominant.
|Figure 6: A comparison of the temperature structures for two solar atmospheric models. The top panel displays the temperatures as a function of . The solid line is computed using spherical geometry and the dashed line is using the traditional plane-parallel geometry. The radiative transfer and the pressure structures of both models were computed using the same numerical techniques. The bottom panel shows the percentage difference between the temperatures of the two models, also as a function of the gas pressure.|
|Open with DEXTER|
A test where larger differences are expected is for the coolest model ( K, ) in the grid /grids/gridp00odfnew/ap00k2odfnew.dat (computed by Castelli) on the Kurucz web site. Because and really represent the three parameters L, M and R, there is a degeneracy that must be broken. To do this, we have assumed the star has , which leads to and . The comparison of the atmospheric structures is shown in Fig. 7. While the plane-parallel model was taken from the grid on Kurucz's web site, that model served only as the starting point for computing the model structure using our ATLAS_ODF code to ensure that it reflects the same numerical routines. In particular, we used the Rybicki routine for the radiative transfer of both the plane-parallel and the spherical models so that the resulting differences must come from the atmosphere's geometry, and not the method of solution.
The spherical model is cooler than the plane-parallel model throughout most of the atmosphere, and it becomes progressively cooler with increasing height. The distance from r(1) to is km, giving an atmospheric extension, defined in Sect. 3.1, of 0.18. In the plane-parallel model the corresponding distance d(1)- km. Deep in the atmosphere the spherical model becomes systematically hotter than the planer-parallel model as the core makes a greater contribution.
|Figure 7: A comparison of the temperature structures of two red giant atmospheric models. The top panel displays the temperatures as a function of . The solid line is a spherical model with the parameters , and . These values were chosen to match the parameters of the plane-parallel model having K and , computed using ATLAS_ODF, shown by the dashed line. The bottom panel shows the percentage difference between the temperatures of the two models, also as a function of the gas pressure.|
|Open with DEXTER|
Because of the degeneracy of the atmospheric parameters, we tried another combination of luminosity, mass and radius that also match K and , namely, , and . The comparison of the two spherical models, both computed with SATLAS_ODF, is shown in Fig. 8. The structures are so similar that they seem identical in the top panel. In the bottom panel, where the differences in the structures are plotted, it is easier to see that the less massive and luminous star has a slightly steeper temperature profile, as is expected.
|Figure 8: A comparison of the structures of two spherical red giant atmospheric models, both equivalent to K and . The top panel displays the temperatures as a function of . The solid line is a spherical model having , and . The dashed line, which is nearly coincident with the solid line, represents the model having the parameters , and . The bottom panel shows the percentage difference between the temperatures of the two models, also as a function of the gas pressure. The sense of the differences is the less massive and luminous model minus the more massive and luminous model.|
|Open with DEXTER|
The PHOENIX program (Hauschildt et al. 1999) can also compute LTE, line-blanketed, spherically extended models, and a comparisons with those models is appropriate. The PHOENIX web site (http://www.hs.uni-hamburg.de/EN/For/ThA/phoenix/index.html) contains the NG-giant grids, in which the model that is closest to the examples used above is the one with K, and . To compare with this model, we have computed a spherical model with , and , again starting from the same plane-parallel model with K and that we used earlier. The comparison is shown in Fig. 9. Now the differences are somewhat larger than in the previous comparisons, which is to be expected because the detailed calculations are nearly totally independent. Overall, however, the comparison is very similar, showing that the two models have essentially the same structures, although we note that the NextGen model has a temperature bulge compared with our model in the pressure range . We have not observed this kind of feature in the comparisons we have made with the Kurucz models or between our spherical and plane-parallel models.
A note about the relative run times of the two codes: the time per iteration running SATLAS_ODF on our single-processor desktop workstation is just 5% of the time per iteration given in the header files of the NG-giant model.
|Figure 9: A comparison of the temperature structures of an SATLAS_ODF atmosphere (solid line) with the structure of a model from the NG-giant grid computed with the PHOENIX code (dashed line). The SATLAS model has the atmospheric parameters , and , corresponding to the NextGen parameters K, and .|
|Open with DEXTER|
The MARCS program (Gustafsson et al. 2008) is another well established code that has the ability to compute LTE, line-blanketed, spherical model atmospheres. From the MARCS web site (http://marcs.astro.uu.se/) the model with parameters K, and is closest the the examples we have been using. This model also has solar abundances and a microturbulent velocity of 2 km s-1. The header lines in the model gives the spherical parameters and . MARCS defines the radius at , not at that we use, but this is a small difference. Therefore, we have started from the model with K, and microturbulence = 2 km s-1 in the same grid (/grids/gridp00odfnew/ap00k2odfnew.dat) used earlier, and we have computed a spherical model with the luminosity, mass and radius of the MARCS model. The comparison is shown in Fig. 10. The models agree very well in the range , where the NextGen model displayed a temperature bulge. But, the spherical MARCS model appears to have a pressure inversion at T > 6500 K, something that is not present in the comparison with the PHOENIX model. Overall, however, the structures are in substantial agreement.
We have modified the robust, open-source, plane-parallel model atmosphere program ATLAS to treat spherically extended geometry. The resulting spherical code, SATLAS, which is available in both opacity distribution function and opacity sampling versions, was used to compute several test models. At high surface gravity the spherical model structure is essentially identical to the plane-parallel model structure. At low surface gravity, the SATLAS models agree very well with the spherical model structures computed by PHOENIX and by MARCS. The SATLAS program, which runs easily on a desktop workstation, offers a viable alternative for modeling the atmospheres of low surface gravity stars.
|Figure 10: A comparison of the temperature structures of an SATLAS_ODF atmosphere (solid line) with a spherical MARCS model (dashed line). The SATLAS model has the atmospheric parameters , and , corresponding to the MARCS parameters K, and .|
|Open with DEXTER|
As an example of the utility of SATLAS, we have used it to compute more than 2500 models to create model cubes with fine parameter spacing covering the specific , and values needed for an analysis of the optical interferometry of just three stars (Neilson & Lester 2008). We are in the process of computing more models for our own application. These codes and models are available at http://www.astro.utoronto.ca/~lester/Programs/.
This work is built on the development of the original ATLAS programs by Robert Kurucz, and his generosity in making his source codes, line lists and opacity distribution functions freely available. Our modifications have benefited greatly from the many times that he has answered our questions and from the test models he has provided. We also gratefully acknowledge the comments and sample models provided by Fiorella Castelli that have aided our efforts. We also thank the anonymous referee for asking numerous questions that prompted us to provide more thorough explanations of our results.
This work has been supported by a research grant from the Natural Sciences and Engineering Research Council of Canada. H.R.N. has received financial support from the Walter John Helm OGSST and the Walter C. Sumner Memorial Fellowship.