Input and Output
Input Description
Gibbs2 reads its input from a single file, typically with extension
.ing
. This file contains keywords parsed by the program that
indicate the details of the system under study and the tasks to
run. The input file is free-format and case-insensitive. Comments are
preceded by a #
symbol and they can be used anywhere in the
input. Long lines can be continued using the backslash (\
)
character.
A simple input file corresponding to a pseudopotential/plane-waves LDA calculation in MgO is:
MM 40.3044
NAT 2
PHASE mgo
81.8883583665837 -73.5171659350000
86.0358791612784 -73.5360133400000
90.1833999559730 -73.5508544000000
94.3309207506677 -73.5624133500000
98.4784415453624 -73.5712754950000
102.6259623400570 -73.5779108750000
106.7734831347517 -73.5826963000000
110.9210039294464 -73.5859397750000
115.0685247241411 -73.5878968050000
119.2160455188357 -73.5887770750000
123.3635663135304 -73.5887555350000
127.5110871082251 -73.5879775400000
131.6586079029198 -73.5865593900000
135.8061286976144 -73.5846083150000
139.9536494923091 -73.5822069800000
144.1011702870038 -73.5794278200000
148.2486910816984 -73.5763274850000
152.3962118763931 -73.5729658900000
156.5437326710878 -73.5693791200000
160.0000000000000 -73.5662512150000
ENDPHASE
The MM keyword indicates the molar mass of the primitive cell in atomic mass units (amu). In the case of MgO, Mg weighs 24.3050 amu and O weighs 15.9994, and there is one atom of each in the primitive cell so Mg+O is 40.3044. NAT is the total number of atoms in the primitive cell.
The last keyword, PHASE is the most important part of a gibbs2 input. Every time a PHASE keyword appears, a new phase is defined in the input. The label immediately following PHASE is the name that phase will have in gibbs2. Additional options for the PHASE can be input following the label, although in this case we opted for simplicity.
The PHASE keyword can either read its data (mostly the $E(V)$ curve but also other information) directly from the input file, as above, or from an external file using the FILE option:
MM 40.3044
NAT 2
PHASE mgo FILE mgo.dat
where mgo.dat
contains the numerical rows from the example above.
If the energy-volume data is given in the main input file, then the
data for a given phase must end with the ENDPHASE keyword. Each row
between PHASE and ENDPHASE corresponds to a data point. In this
case, the data is simply the unit cell volume (in bohr^3, first
column) and the energy per unit cell (in Hartree, second column).
Gibbs2 can work with one or more phases, but they all must correspond to the same system (i.e. the same composition). If more than one phase is given, then gibbs2 will calculate the relative stability of each phase as a function of temperature and pressure. For instance, if we were interested in the B1 -> B2 transition in MgO, the input would be:
PHASE mgo:B1
...
ENDPHASE
PHASE mgo:B2
...
ENDPHASE
However, phases need not correspond to different atomic arrangements of a solid. For instance, if we were interested in how two different thermal models apply to the same set of data, we could do:
PHASE mgo:debye TMODEL debye
...
endphase
PHASE mgo:debeins TMODEL debye_einstein
...
endphase
where the difference between the two “phases” is that they use different thermal models (Debye and Debye-Einstein). In the output, each phase is identified by an integer, corresponding to the order in which that phase appears in the input. In the input above, mgo:debye corresponds to phase 1 and mgo:debeins is phase 2.
Going back to our simple example given by the input above, the input
can be saved to file (e.g. mgo.ing
) and then run using:
gibbs2 mgo.ing mgo.outg
The output of the calculation is written to mgo.outg
. In addition,
gibbs2 generates a number of files with the same root as the input
file (mgo
):
mgo_all_p.gnu
mgo_all_t.gnu
mgo.efit
mgo_efit.aux
mgo_efit.gnu
mgo.eos
mgo.eos_static
We now examine each of these files in turn.
Output description
The standard output file generated by gibbs2 (mgo.outg
in the
example above) contains a lot of useful information and a list of the
auxiliary files generated. It is structured in blocks denoted by a
header that starts with an asterisk. The first block (Input
)
contains information about the system and the input variables. It is
mostly self-explanatory:
* Input
Title:
Output file (lu= 2): stdout
Units: output is in atomic units, except where noted.
Number of atoms per formula: 2
Molecular mass (amu): 40.30440000
...
Next, the output shows the pressure range on which the equation will be calculated. The maximum pressure is determined by the slope at the first point of the static energy-volume curve.
* Pressure range examined
Min_phases{p_max} (GPa): 118.530
Pressure range (GPa): 0.000 -> 500.000
Number of p points: 100
After that, information about each phase in the input is given,
including their static equilibrium properties, statistical measures of
the quality of the fit, and the static equation of state. The latter
is similar to the contents of the .eos_static
file
(see below):
* Phase information after initial setup
+ Phase 1 (mgo)
Number of volume points: 20
p(V) input data? F
Pressure range (GPa): -27.120 -> 118.530
Number of interpolated fields : 0
Input units:
Volume : bohr^3
...
Static equilibrium volume (bohr^3): 121.1510427522
Static equilibrium energy (Ha): -73.5888704284
Static equilibrium energy (kJ/mol): -193207.5498742671
Static bulk modulus (GPa): 171.876312
...
Temperature model: Debye, Td from static B(V).
All data points are ACTIVE for dynamic calculations
Fit to static E(V) data:
# Copy in file : mgo.eos_static
# p(GPa) E (Ha) V(bohr^3) V/V0 p_fit(GPa) B(GPa) Bp Bpp(GPa-1)
0.0000 -7.358887030E+01 121.1510 1.0000000 0.0000 171.8631 4.1045942 -2.3291E-02
...
# Polynomial fit to strain:
# Degree : 9
# p(x) = a_0 + a_1 * f(V) + ... + a_n * f(V)^n
# a_00 = -7.358877764647E+01
...
# a_09 = -4.588683891761E+03
# V_scal (bohr^3) = 1.192160455188E+02
# p_scal (GPa) = 0.000000000000
The static energy-volume plots are calculated next, and then the Debye temperatures are computed, which are required to apply the Debye model in the Slater formulation. This is the default temperature model, where the Debye temperatures are calculated from the static bulk moduli and the Poisson ratio is assumed to be volume-independent an equal to 1/4. The computed Debye temperatures are given in the output:
* Computed Debye temperatures from static data
+ Phase mgo
# ThetaD at static eq. volume: 836.48
# V(bohr^3) Tdebye(K) Tdebye_slater(K)
81.8884 1563.12 1563.12
...
160.0000 435.80 435.80
The smallest Debye temperature is usually found at the most expanded volume. This minimal temperature is used to set the default temperature range for the calculation, which is given next in the output:
* Temperature range examined
Min_{DebyeT} (K): 435.799
Temperature range (K): 0.000 -> 653.699
Number of T points: 100
Once the static calculation is over, gibbs2 loops over temperatures and pressures and calculates the thermodynamic properties for at each (p,T) pair. The results are written to the eos file:
* Calculated temperature effects
Writing file : mgo.eos
and some plotting scripts are generated to ease the
interpretation of the .eos
file.
Static energy plot (efit file)
The files mgo.efit
, mgo_efit.aux
, and mgo_efit.gnu
can be used
to create a plot of the static data together with the
fitted equation of state. To generate the plot, do:
gnuplot mgo_efit.gnu
For this to work you need the gnuplot program as well epstopdf and
pdfcrop. (If the last two are not available, gnuplot will still
generate an .eps
file with the plot.)
Static equation of state (eos_static file)
The mgo.eos
and mgo.eos_static
contain the calculated
equation of state and thermodynamic properties as a function of
pressure and temperature. mgo.eos_static
gives the static properties
(i.e. without temperature) derived from fitting to the input
data. Each row in this file corresponds to a different pressure. The
properties given in mgo.eos_static
are:
Column | Symbol | Equation | Description | Unit |
---|---|---|---|---|
1 | p |
Pressure | GPa | |
2 | E |
Static energy | Hartree | |
3 | H |
Enthalpy | Hartree | |
4 | V |
Volume | bohr^3 | |
5 | V/V0 |
Volume divided by the equilibrium (zero-pressure) volume | – | |
6 | p_fit |
Pressure calculated from the EOS fit to the data (for testing purposes) | GPa | |
7 | B |
Bulk modulus | GPa | |
8 | Bp |
First pressure derivative of the bulk modulus | – | |
9 | Bpp |
Second pressure derivative of the bulk modulus | 1/GPa |
The list of pressures at which the properties are calculated can be
modified using the PRESSURE keyword. By default, gibbs2 calculates
100 pressure points from zero up to the maximum pressure allowed by
the static energies (or 500 GPa). If several phases are given in
the input, properties are calculated for each phase in turn. In the
.eos_static
file, each phase is indicated by a # Phase
line.
Thermal equation of state (eos file)
The file mgo.eos
contains the thermodynamic properties as a function
of temperature and pressure. Each row in this file represents a
different pair of pressure and temperature values. The columns are:
Column | Symbol | Equation | Description | Unit |
---|---|---|---|---|
1 | p |
Pressure | GPa | |
2 | T |
Temperature | K | |
3 | V |
Volume | bohr^3 | |
4 | Estatic |
Static energy | Hartree | |
5 | G |
Gibbs free energy | kJ/mol | |
6 | Gerr |
Difference in Gibbs free energy between the value calculated at the equilibrium value calculated at the equilibrium volume directly or interpolated from the EOS fit, per nat atoms. For testing purposes only. |
kJ/mol | |
7 | p_sta |
Static pressure | GPa | |
8 | p_th |
Thermal pressure | GPa | |
9 | B |
Isothermal bulk modulus | GPa | |
10 | U-Esta |
Non-static contribution to the internal energy | kJ/mol | |
11 | Cv |
Constant-volume heat capacity | J/K/mol | |
12 | F-Esta |
Non-static contribution to the Helmholtz free energy | kJ/mol | |
13 | S |
Entropy | J/K/mol | |
14 | ThetaD |
Debye temperature calculated from the static data | K | |
15 | gamma |
Average Grüneisen parameter | – | |
16 | alpha |
Volumetric thermal expansion coefficient | /K | |
17 | dp/dT |
Constant-volume temperature-derivative of pressure | GPa/K | |
18 | Bs |
Adiabatic bulk modulus | GPa | |
19 | Cp |
Constant-pressure heat capacity | J/K/mol | |
20 | B_Tp |
First pressure derivative of the isothermal bulk modulus | – | |
21 | B_Tpp |
Second pressure derivative of the isothermal bulk modulus | 1/GPa | |
22 | Fvib |
Vibrational contribution to the Helmholtz free energy | kJ/mol | |
23 | Fel |
Electronic contribution to the Helmholtz free energy | kJ/mol | |
24 | Uvib |
Vibrational contribution to the internal energy | kJ/mol | |
25 | Uel |
Electronic contribution to the internal energy | kJ/mol | |
26 | Svib |
Vibrational contribution to the entropy | J/K/mol | |
27 | Sel |
Electronic contribution to the entropy | J/K/mol | |
26 | Cv_vib |
Vibrational contribution to the constant-volume heat capacity | J/K/mol | |
27 | Cv_el |
Electronic contribution to the constant-volume heat capacity | J/K/mol |
The specific formulas and the method with which these quantities are
calculated are given in the
gibbs2 article. If several
phases are given in the input, properties are calculated for each
phase in turn. In the .eos
file, each phase is indicated by a
# Phase
line. The pressure and temperature points at which the
thermodynamic properties are calculated in the .eos
file can be
changed using the PRESSURE and TEMPERATURE keywords. By default,
100 temperature points are used between 0 and 1.5 times the minimum
Debye temperature.
Plots of thermodynamic properties (all_p.gnu and all_t.gnu files)
Two gnuplot scripts (in the above example mgo_all_p.gnu
and
mgo_all_t.gnu
) can be used to make simple plots of the information
contained in the .eos
file. To make the plots, use:
gnuplot mgo_all_p.gnu
gnuplot mgo_all_t.gnu
This creates a good number of pdf files, each containing the evolution
of a thermodynamic property from the .eos
file with either pressure
at constant temperature (mgo_p_xx.pdf
) or temperature at constant
pressure (mgo_t_xx.pdf
). The xx
identifiers correspond to the
column in the .eos
file. For example, mgo_p_03.pdf
contains the
V(p)
isotherms, because volume is column 3 in the .eos
file. Similarly, mgo_t_09.pdf
contains the curves at
constant pressure.
Phase Transitions (tpstab, dgtp, ptrans files)
If more than one phase is given in the input, gibbs2 can calculate stability diagrams and transition pressures from the data for the different phases by determining which has lowest free energy at a given temperature and pressure. When comparing phases with different number of atoms in the cell it is essential that the energy and volume of each phase correspond to a number of atoms equal to NAT times their value for the Z keyword.
When more than one phase is present, gibbs2 automatically calculates the static transition pressures, which are written to the output:
* Static transition pressures (linear interpolation)
# Pressure range (GPa) Stable phase
0.0000 --> 503.1471 b1
503.1471 --> 600.0000 b2
In addition, a plot is generated for the static enthalpy vs. pressure
diagram, ending in _dH.gnu
(the gnuplot script) and _dH.aux
(the
auxiliary data for the plot). This plot presents the difference in
enthalpy between all phases and the first phase in the input as a
function of applied pressure. Note this plot does not contain
vibrational effects.
Several additional files are written that contain the temperature- and pressure-dependence of phase stability:
-
A file with extension
.tpstab
is created that gives the stable phase (i.e. the one that has minimum Gibbs free energy) as a function of pressure and temperature. The columns are, in order: temperature, pressure, identity of the stable phase, Gibbs free energy, volume, and isothermal bulk modulus. -
The file with extension
.dgtp
gives the difference in Gibbs free energy between all the phases and the first phase, at all the temperatures and pressures. -
The evolution of the transition pressures with temperature is represented in the
.ptrans
file and its associated gnuplot script (_ptrans.gnu
). This is essentially the pressure-temperature phase diagram.
Optional keywords
SET ROOT root.s
Sets the base name for the files generated by gibbs2 to
root.s
. Default: the naem fo the input file without extension.
SET NOEFIT
This command instructs gibbs2 not to generate the
static energy plot (efit
).
SET NOPLOTDH
Do not generate the static enthalpy vs. pressure plots.
SET NOTRANS
Do not calculate phase transition pressures.
SET ERRORBAR|ERROR_BAR|ERRORBARS|ERROR_BARS
Calculate error bars for the dynamic properties. Only applies to average polynomial EOS.
SET WRITELEVEL {0|1|2}
Sets the verbosity level. It can be 0 (no output files except stdout),
1 (only .eos
and .eos_static
), or 2 (all files written). The
default is 2.