diff --git a/paper/figures/Fig1.svg b/paper/figures/Fig1.svg index 5fa6e3e..055c731 100644 --- a/paper/figures/Fig1.svg +++ b/paper/figures/Fig1.svg @@ -6,7 +6,7 @@ - 2024-05-06T13:56:09.731548 + 2024-07-29T14:17:37.984006 image/svg+xml @@ -75,7 +75,7 @@ L 152.621588 71.459193 C 150.607533 71.124736 148.580569 70.873291 146.54584 70.705495 C 144.511111 70.537699 142.470339 70.453694 140.428703 70.453694 z -" clip-path="url(#p39bc8116f5)" style="fill: #408000; opacity: 0.5; stroke: #408000; stroke-width: 3; stroke-linejoin: miter"/> +" clip-path="url(#pad3dcc8ed7)" style="fill: #408000; opacity: 0.5; stroke: #408000; stroke-width: 3; stroke-linejoin: miter"/> +" clip-path="url(#pad3dcc8ed7)" style="fill: #408000; stroke: #408000; stroke-width: 3; stroke-linejoin: miter"/> +" clip-path="url(#pad3dcc8ed7)" style="fill: #306080; opacity: 0.5; stroke: #306080; stroke-width: 3; stroke-linejoin: miter"/> +" clip-path="url(#pad3dcc8ed7)" style="fill: #306080; stroke: #306080; stroke-width: 3; stroke-linejoin: miter"/> +" clip-path="url(#pad3dcc8ed7)" style="fill: #8060ff; stroke: #000000; stroke-width: 3; stroke-linejoin: miter"/> +" clip-path="url(#pad3dcc8ed7)" style="fill: #1f77b4; stroke: #000000; stroke-width: 3; stroke-linejoin: miter"/> @@ -1361,12 +1361,12 @@ z - - + @@ -1380,7 +1380,7 @@ L 0 -3.5 - + @@ -1394,7 +1394,7 @@ L 0 -3.5 - + @@ -1429,7 +1429,7 @@ z - + @@ -1443,7 +1443,7 @@ z - + @@ -1629,12 +1629,12 @@ z - - + @@ -1649,7 +1649,7 @@ L 3.5 0 - + @@ -1664,7 +1664,7 @@ L 3.5 0 - + @@ -1679,7 +1679,7 @@ L 3.5 0 - + @@ -1694,7 +1694,7 @@ L 3.5 0 - + @@ -1709,229 +1709,229 @@ L 3.5 0 - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1987,9 +1987,9 @@ L 583.83111 136.311477 L 613.516582 151.337453 L 643.202053 154.397516 L 660.56694 155.155524 -" clip-path="url(#pa91b4c7ce9)" style="fill: none; stroke: #408000; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#p441adf79a4)" style="fill: none; stroke: #408000; stroke-width: 1.5; stroke-linecap: square"/> - - - - - - - - - - + + + + + + + + + @@ -2023,26 +2023,26 @@ L 643.202053 179.069543 L 660.56694 186.20374 L 672.887524 188.763345 L 702.572995 182.859489 -" clip-path="url(#pa91b4c7ce9)" style="fill: none; stroke: #8060ff; stroke-width: 3; stroke-linecap: square"/> +" clip-path="url(#p441adf79a4)" style="fill: none; stroke: #8060ff; stroke-width: 3; stroke-linecap: square"/> - - - - - - - - - - - - + + + + + + + + + + + @@ -2144,52 +2144,53 @@ z - - - + - - + + - - - - - - + + + + + + + - - + - + @@ -2204,7 +2205,7 @@ L 604.235495 92.685625 - + - + diff --git a/paper/figures/Fig2.pdf b/paper/figures/Fig2.pdf index 9d433e5..561e4bf 100644 Binary files a/paper/figures/Fig2.pdf and b/paper/figures/Fig2.pdf differ diff --git a/paper/paper.bib b/paper/paper.bib index 81e72bd..e810359 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -68,7 +68,7 @@ @article{Capitani:1987 } @article{Scheil:1942, - title={Bemerkungen zur schichtkristallbildung}, + title={Bemerkungen zur Schichtkristallbildung}, author={Scheil, Erich}, journal={International Journal of Materials Research}, volume={34}, @@ -116,7 +116,7 @@ @article{Thermosuite:2002 @article{MTDATA:2002, title={MTDATA-thermodynamic and phase equilibrium software from the national physical laboratory}, - author={Davies, RH and Dinsdale, AT and Gisby, JA and Robinson, JAJ and Martin, andS M}, + author={Davies, RH and Dinsdale, AT and Gisby, JA and Robinson, JAJ and Martin, and S M}, journal={CALPHAD}, volume={26}, number={2}, diff --git a/paper/paper.md b/paper/paper.md index ebbe249..4e66752 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -21,7 +21,7 @@ authors: affiliation: 1 orcid: 0000-0001-6480-2254 affiliations: - - name: Materials Science and Technology Division, Oak Ridge National Laboratory, Oak Ridge, TN 37831, USA + - name: Materials Science and Technology Division, Oak Ridge National Laboratory, Oak Ridge, TN 37831, United States of America index: 1 - name: Independent Researcher, Canada index: 2 @@ -40,7 +40,7 @@ In response to the need, we developed Equilipy an open-source Python package des # Statement of need Commercial thermochemical software packages such as Thermo-Calc [@ThermoCalc:2002], FactSage [@FactSage:2016], and Pandat [@Pandat:2009] are the standard for phase equilibrium calculations. However, exploring a broad spectrum of alloy chemistries is often hindered by the considerable computational time required. Such computational demands create a bottleneck in effective alloy design processes. While efforts to leverage High-Performance Computing (HPC) have been initiated to expedite computational speed, these attempts are often limited by licensing constraints such as the number of processors available for use (e.g., TC-Python permits only up to 32 logical processors per each license). -Given these limitations and the pressing need for more effective alloy design processes, developing an open-source program tailored for high-throughput CALPHAD calculations becomes imperative. The envisioned program should not only eliminate the constraints on processor usage, but also ensure high calculation stability. Furthermore, the program should operates on Linux system and support parallel computing to be compatible with HPC environments. An intuitive program architecture is preferred to enhance accessibility for researchers and practitioners in the field. +Given these limitations and the pressing need for more effective alloy design processes, developing an open-source program tailored for high-throughput CALPHAD calculations becomes imperative. The envisioned program should not only eliminate the constraints on processor usage, but also ensure high calculation stability. Furthermore, the program should operate on Linux system and support parallel computing to be compatible with HPC environments. An intuitive program architecture is preferred to enhance accessibility for researchers and practitioners in the field. # Software overview Equilipy is designed to compute thermodynamically stable phases from a specified *NPT* ensemble (i.e., *N*: elemental composition, *P*: pressure, *T*: temperature). The four-step process for calculating phase equilibria is illustrated in \autoref{Fig2}. This process closely mirrors experimental procedures; thus, it is highly intuitive even for the users primarily experienced in experimental work. Calculating phase equilibria involves minimizing a set of Gibbs energy functions for all relevant phases. Therefore, utilizing Equilipy necessitates a Gibbs energy database developed through the CALPHAD approach. @@ -52,7 +52,7 @@ Equilipy is designed to compute thermodynamically stable phases from a specified Equilipy 0.1 incorporates several key features: -- Phase equilibrum calculation for a single *NPT* input condition, +- Phase equilibrium calculation for a single *NPT* input condition, - Parallel computations for multiple *NPT* input conditions, - Thermochemical property calculations, - Scheil-Gulliver solidification, @@ -61,27 +61,27 @@ Equilipy 0.1 incorporates several key features: By default, phase equilibrium calculations consider all available phases within the given thermochemical database, corresponding to the input system elements. Consequently, we obtain thermodynamically stable phases, their respective quantities through equilibrium calculations, alongside pertinent thermochemical properties such as Gibbs energy (*G*), enthalpy (*H*), entropy (*S*), and heat capacity (*Cp*). The demonstration of such calculations is given in **Phase equilibria** section for multiphase equilibria. Moreover, we introduce the application of thermodynamic calculations for solidifications [@Scheil:1942] in **Scheil-Gulliver solidification**. Metastable phase stability calculations are possible with the phase selection option, as detailed in the step 2 of \autoref{Fig2}. This option enables the parsing of custom-selected phases within the relevant phase set for metastable calculations. Examples showcasing the phase selection feature in action, both for phase equilibrium calculation and Scheil-Gulliver solidification, are presented in **Metastable phase equilibria**. ## Phase equilibria -\autoref{Fig3} presents the phase equilibrium calculations of the Al-Cu-Mg-Si system. We conducted Gibbs energy minimization of 63 distinct phases to derive the stable phase assemblages and their respective quantities at each calculation point. These calculations were performed using `equilib_batch()` feature. The outcomes were then compared with results from a commercial thermochemical software, FactSage [@FactSage:2016], employing an identical thermodynamic database for both tools. \autoref{Fig3}(a) illustrates the stable phase quantities in a pseudo-binary section (isopleth) between Cu99Mg and Al89MgSi10 alloys at 600 K. Meanwhile, \autoref{Fig3}(b) shows the equilibrium calculations across various temperatures for the A380 alloy, with 89.260, 1.745, 0.114, and 8.881 at%, for Al, Cu, Mg, Si, respectively. The comparative analyses reveal that both programs consistently predicted the same stable phases and their quantities. It is worth noting that `equilib_batch()` feature processes each *NPT* condition independently, ensuring consistent computation speed and accuracy irrespective of the sequence or arrangement of the input conditions. +\autoref{Fig3} presents the phase equilibrium calculations of the Al-Cu-Mg-Si system. We conducted Gibbs energy minimization of 63 distinct phases to derive the stable phase assemblages and their respective quantities at each calculation point. These calculations were performed using `equilib_batch()` feature. The outcomes were then compared with results from a commercial thermochemical software, FactSage [@FactSage:2016], employing an identical thermodynamic database for both tools. \autoref{Fig3}(a) illustrates the stable phase quantities in a pseudo-binary section (isopleth) between Cu~99~Mg and Al~89~MgSi~10~ alloys at 600 K. Meanwhile, \autoref{Fig3}(b) shows the equilibrium calculations across various temperatures for the A380 alloy, with 89.260, 1.745, 0.114, and 8.881 mol%, for Al, Cu, Mg, Si, respectively. The comparative analyses reveal that both programs consistently predicted the same stable phases and their quantities. It is worth noting that the `equilib_batch()` feature processes each *NPT* condition independently, ensuring consistent computation speed and accuracy irrespective of the sequence or arrangement of the input conditions. ![Multiphase equilibrium calculations in comparison with a commercial software, FactSage for the Al-Cu-Mg-Si system: (a) isopleth at 600 K (b) A380 alloy in temperature range from 700 to 900 K. \label{Fig3}](figures/Fig3.svg){ width=100% } -\autoref{Fig4} showcases the thermochemical properties of A380 alloy where the temperature range corresponds to the calculation depicted in \autoref{Fig3}(b). These properties represent the total properties of the system which is composed of four phases i.e., Liquid, FCC_A1, DIAMOND_A4, and ALCU_THETA. All three major properties, Gibbs energy, enthalpy, and entropy of the system calculated by FactSage [@FactSage:2016] are reproduced by Equilipy. This congruent result highlights Equilipy's ability to match the calculation precision of the established commercial software. +\autoref{Fig4} showcases the thermochemical properties of the A380 alloy where the temperature range corresponds to the calculation depicted in \autoref{Fig3}(b). These properties represent the total properties of the system which is composed of four phases i.e., Liquid, FCC_A1, DIAMOND_A4, and ALCU_THETA. All three major properties, Gibbs energy, enthalpy, and entropy of the system calculated by FactSage [@FactSage:2016] are reproduced by Equilipy. This congruent result highlights Equilipy's ability to match the calculation precision of the established commercial software. -![Thermochemical properties of A380 alloy (one mole) in the temperature range of 700 and 900 K: (a) Gibbs energy, (b) Enthalpy, (c) Entropy, and (d) Heat capacity \label{Fig4}](figures/Fig4.svg) +![Thermochemical properties of the A380 alloy (one mole) in the temperature range of 700 and 900 K: (a) Gibbs energy, (b) Enthalpy, (c) Entropy, and (d) Heat capacity \label{Fig4}](figures/Fig4.svg) ## Scheil-Gulliver solidification -Exploring Scheil-Gulliver solidification offers a robust framework for assessing the performance of phase equilibria calculations. In Scheil-Gulliver solidification, the liquid phase is assumed to remain completely mixed, while no diffusion or reaction is considered bewteen solid phases once they precipitate from the liquid. This approach effectively represents the characteristics of rapid and slow diffusion in the liquid and solid phases during solidification, respectively. A single Scheil-Gulliver cooling computation necessitates multiple equilibrium calculation iterations, i.e., one for each temperature step. This approach serves as a rigorous benchmark to assess the accuracy and stability of Equilipy in comparison with the well-established commercial software, FactSage [@FactSage:2016]. +Exploring Scheil-Gulliver solidification offers a robust framework for assessing the performance of phase equilibria calculations. In Scheil-Gulliver solidification, the liquid phase is assumed to remain completely mixed, while no diffusion or reaction is considered between solid phases once they precipitate from the liquid. This approach effectively represents the characteristics of rapid and slow diffusion in the liquid and solid phases during solidification, respectively. A single Scheil-Gulliver cooling computation necessitates multiple equilibrium calculation iterations, i.e., one for each temperature step. This approach serves as a rigorous benchmark to assess the accuracy and stability of Equilipy in comparison with the well-established commercial software, FactSage [@FactSage:2016]. \autoref{Fig5} demonstrates the progression of microstructural information and phase quantities during Scheil-Gulliver solidification. The microstructural information is presented in \autoref{Fig5}(a), where each color represents a unique set of solidifying phases, termed a Scheil constituent [@Pelton:2017]. Initially, the FCC_A1 solid phase forms at 861 K and continues to solidify as a primary phase until it reaches a fraction of 20 mol%. Following this, the next Scheil constituent is a two-phase eutectic structure comprised of FCC_A1 and DIAMOND_A4 phases. This eutectic structure persists in solidifying until the temperature reduces to 793 K. At this juncture of solidification, over 90 mol% of the liquid has been consumed, followed by the formation of less than 10 mol% of complex three- and four-phase eutectic structures. \autoref{Fig5}(b) shows the respective quantity of each phase during Scheil-Gulliver solidification. Various rates of solidifying amount for a phase (e.g., FCC_A1) highlights that a phase can be involved in multiple Scheil constituents. As depicted in the figure, the fractions of Scheil constituents and respective phase quantities align closely with those calculated by FactSage, demonstrating the reliability and accuracy of the simulation results. -![Phase stability diagram of A380 alloy (one mole) during Scheil-Gulliver solidification: the evolution of (a) Scheil constituent quantities and (b) amount of each phase \label{Fig5}](figures/Fig5.svg){ width=100% } +![Phase stability diagram of the A380 alloy (one mole) during Scheil-Gulliver solidification: the evolution of (a) Scheil constituent quantities and (b) amount of each phase \label{Fig5}](figures/Fig5.svg){ width=100% } ## Metastable phase equilibria \autoref{Fig6} illustrates the metastable phase equilibrium calculations for both (a) equilibrium calculations and (b) Scheil-Gulliver solidification. For each case, a set of custom-selected phases was applied as outlined in step 2 of \autoref{Fig2}. The equilibrium calculations shown in \autoref{Fig6}(a) use the same input conditions as those in \autoref{Fig3}(a), but with the suppression of the GAMMA, ALCU_ETA, and ALCU_THETA phases. Similarly, the conditions for Scheil-Gulliver solidification shown in \autoref{Fig5}(b) are replicated in \autoref{Fig6}(b) without taking into account the FCC_A1 phase. This approach to calculate metastable phase equilibria is also available in FactSage. As shown in \autoref{Fig6}, the results obtained from both Equilipy and FactSage are remarkably consistent for the calculations of metastable phase equilibria. -![Metastable phase equilibria for (a) isopleth at 600 K with suppressing GAMMA, ALCU_ETA, and ALCU_THETA phases, and (b) Scheil-Gulliver solidification of A380 alloy (one mole) with suppresing FCC_A1 phase.\label{Fig6}](figures/Fig6.svg){ width=100% } +![Metastable phase equilibria for (a) isopleth at 600 K with suppressing GAMMA, ALCU_ETA, and ALCU_THETA phases, and (b) Scheil-Gulliver solidification of the A380 alloy (one mole) with suppresing FCC_A1 phase.\label{Fig6}](figures/Fig6.svg){ width=100% } # Parallel computing Equilipy leverages parallel computing to calculate multiple input conditions simultaneously through its `equilib_batch()` function. Since computations between input conditions are fully independent, they are executed through embarrassingly parallel runs. Note that parallel computing is not applied to compute a single input condition. By default, Equilipy uses all available processors on a single computing node, though users have the option to specify a different number of processors. In multi-node environments, users are required to configure the number of nodes and processors using a Message Passing Interface (MPI) such as `OpenMPI` or `MPICH`. Equilipy employs `mpi4py` for interfacing with MPI programs. @@ -130,7 +130,7 @@ Equilipy leverages parallel computing to calculate multiple input conditions sim | *THERMOCALC calculates the composition of a given phase assemblage ; however, it does not ensure if the given assemblage is thermodynamically stable [@Lanari:2019]. | +=================================================================+====================================+=============================================================================+ -For geological applications, the gibbs energies of non-ideal solution phases are described by Margules parameters as a function of composition, pressure, and temperature. In contrast, the CALPHAD approach focuses on structure-based Gibbs energy descriptions at 1 atm pressure using solution models such as the compound energy formalism (CEF) for long-range ordering and the modified quasichemical models for short-range ordering. These variations in free energy descriptions are well-documented in the literature for the CALPHAD approach [@CALPHAD:1998] and for geological applications [@Holland:2011]. +For geological applications, the Gibbs energies of non-ideal solution phases are described by Margules parameters as a function of composition, pressure, and temperature. In contrast, the CALPHAD approach focuses on structure-based Gibbs energy descriptions at 1 atm pressure using solution models such as the compound energy formalism (CEF) for long-range ordering and the modified quasichemical models for short-range ordering. These variations in free energy descriptions are well-documented in the literature for the CALPHAD approach [@CALPHAD:1998] and for geological applications [@Holland:2011]. Note that there is no general consensus on a thermochemical database format. Each software often has its own format. The database format used in Equilipy (`.dat`) is compatable in FactSage [@FactSage:2016], PyCalphad [@PyCALPHAD:2017], and Thermochimica [@Thermochimica:2013].