feram's homepage is http://loto.sourceforge.net/feram/ .
You can download a tar ball of feram (feram-X.YY.ZZ.tar.xz) from http://sourceforge.net/projects/loto/files/feram/ .
Step-by-step procedure of installation is described in INSTALL.
feram is a fast molecular dynamics (MD) simulator for bulk and thin-film ferroelectrics and relaxors.
feram reads parameter files specified as command-line arguments.
$ OMP_NUM_THREADS=6 SOMEWHERE/feram foo.feram bar.feram baz.feram
Optionally, you can make MPI version of feram, feram_mpi. feram_mpi process input files in parallel.
$ OMP_NUM_THREADS=16 mpiexec -np 3 SOMEWHERE/feram_mpi foo.feram bar.feram baz.feram
The number of threads for each process should be given with environment variable OMP_NUM_THREADS. The most efficient value for OMP_NUM_THREADS is depends on OMP_NUM_THREADS.
The parameter file for feram is a text file consisting of comment lines and 'tag = value(s)' lines. Filenames of parameter files may be foo123 or foo123.feram. In these cases, filenames of output files will be foo123.*, e.g. foo123.log, foo123.coord, etc.
How to determine the parameters is described in parameters/parameters.html.
Lines beginning with '#' are ignored. Blank lines are also ignored.
# This is a comment line. # Here are two more # comment lines.
You must put ' = ', space-equal-space, between tag and value(s) as:
tag = 1.0 tag = -2.0 -3.0 -4.0 tag = 5.0 6.0 7.0
Followings are currently available tags.
verbose tag determines how much messages will be written to the .log file. (Details of .log file is described below.)
verbose = 0
(NOT IMPLEMENTED YET) .log file will not be created.
verbose = 1
1 is the default value for verbose tag. Minimum messages will be written to the .log file.
verbose = 2
When 2 is given for verbose tag, messages will be written to .log file in every iterations.
method = 'md'
'md' is for a molecular-dynamics simulation in the canonical ensemble using the Nosé-Poincaré thermostat.
method = 'lf'
'lf' is for a molecular-dynamics simulation in the microcanonical ensemble using the leap-frog method.
method = 'mc'
'mc' is for a Monte Carlo simulation, but it is NOT IMPLEMENTED YET.
method = 'hl' method = 'hl'
'hl' is for a simulation of hysteresis loop. In this case, tags of n_average and external_E_field have special meanings (see Fig. 1). .hl file,e.g. foo123.hl, will be created. See the directory of src/11example-3-new-hysteresis-loop/.
Pressure in GPa unit.
GPa = -5.0
Temperature in Kelvin.
kelvin = 100
Effective mass of u(R), the length of dipole on the unit cell R. In atomic mass unit.
Effective mass of w(R), the acoustic displacement of the unit cell R. In atomic mass unit. It is NOT IMPLEMENTED YET.
Q_Nose for Nose-Poincare thermostat. For large system and high temperatur, use large value. For Small system and low temperatur, use small value.
Q_Nose = 14.4
Specifies the structure of the system. 'bulk' for infinitely periodic bulk 'film' for free standing thin film. 'epit' for epitaxially strained thin film.
bulk_or_film = 'epit'
System size, L_x, L_y and L_z. They must be equal or larger than 4.
L = 32 32 4
0: There is no dead layer. 1: Single dead layer is on the bottom electrode. 2: There are dead layers both on the bottom and top electrodes.
gap_id = 1
Thickness of dead layer is always 1 unit cell.
Polarization of dead layer(s) in Angstrom unit.
gap_dipole_u = 0.0 0.0 0.16
Lattice constant for the perovskite ferroelectrics in Angstrom unit.
a0 = 3.99
Epitaxial strain.
epi_strain = -0.01
Time step in pico second.
dt = 0.002
The number of time steps of thermalizing, averaging, frequency of taking snapshots, and frequency of writing to .hl file.
n_thermalize = 40000 n_average = 10000 n_coord_freq = 50000 n_hl_freq = 5000
You can restart and continue a hysteresis-loop calculation from the n_hysteresis_loop_continue-th iteration.
n_hysteresis_loop_continue = 20000
Vector of the external electric field in the unit of [V/Angstrom].
external_E_field = 0.00 0.00 -0.01
Coefficients for the 4-th order polynomial.
P_kappa2 = 5.502 [eV/Angstrom^2] # P_4(u) = kappa2*u^2 + alpha*u^4 P_alpha = 110.4 [eV/Angstrom^4] # + gamma*(u_y*u_z+u_z*u_x+u_x*u_y), P_gamma = -163.1 [eV/Angstrom^4] # where u^2 = u_x^2 + u_y^2 + u_z^2
Coefficients for the 6-th order part
Coefficient for u^8
Short-range inter-site interaction coefficients
j = -2.648 3.894 0.898 -0.789 0.562 0.358 0.179 j(i) [eV/Angstrom^2]
Elastic Constants
B11 = 126. B12 = 44.9 B44 = 50.3 [eV]
Elastic Coupling
B1xx = -211. [eV/Angstrom^2] B1yy = -19.3 [eV/Angstrom^2] B4yz = -7.75 [eV/Angstrom^2]
Two integers for Marsaglia-Tsang 64-bit uiniversal RNG (random number generator).
seed = 123384 8984847
Its default values are 123456789 987654321. It may be a good idea to generate the seed with jot(1) command.
$ jot -r 2 1 2147483648 639779840 1297280417
Values for initial random setting of dipoles. The normal-distributed random number generator N(mu,sigma^2) is used.
For example, if you only have four dipoles and
init_dipo_avg = 0.10 0.00 0.00 [Angstrom] # Average (mu) of initial dipole displacements init_dipo_dev = 0.02 0.02 0.02 [Angstrom] # Dneviation (sigma) of initial dipole displacements,
the dipoles may be
0.09 0.01 0.02 0.11 -0.02 0.01 0.08 0.02 -0.03 0.12 -0.01 0.00 .
If there is a .restart file in the same directory, there values are not used and the .restart file will be read.
Effective charge per site.
Z_star = 9.956
epsilon_inf = 5.24
This is for debug. You do not have to set this tag. Arbitrary kappa for Ewald summation in src/dipole-dipole-long-range.F.
kappa = 0.15
If
plot_dispersion = .true.
data files for plotting dispersion relation will be written. Default is .false..
If you executed feram with a parameter file "foo123.feram" as
$ feram foo123.feram
feram searchs for the "foo123.restart" file as an initial configurations. If there is no such file, feram starts from a random configurations.
If you executed feram with a parameter file "foo123.feram" as
$ feram foo123.feram
feram searchs for the "foo123.defects" file as information of defects. If there is no such file, feram do not introduce defects.
The .defects input file gives positions and fiexed dipole moments u for simulations of defects in ferroelectrics.
0 0 0 0.1 -0.1 0.7 1 0 0 0.1 0.1 0.7 2 0 0 0.1 0.2 0.7 : position_x position_y position_z fixed_u_x fixed_u_y fixed_u_z [Angstrom] :
Use src/defects-maker.rb to make this .defects file.
If you executed feram with a parameter file "foo123.feram" as
$ feram foo123.feram
feram searchs for the "foo123.localfield" file as information of local exectric field. Format of .localfield file is:
4 6 13 0.00 0.00 0.10 : ix iy iz Ex Ey Ez :
The unit of local field is V/Angstrom. If feram cannot find both ionic.configuration and .localfield, it will set the local field to ZERO for all sites.
(Not implemented yet.) This file is required for the calculation of the local field.
0.0 0.0 0.0 +3.0 0.5 0.0 0.0 -2.0 0.0 0.5 0.0 -2.0 0.0 0.0 0.5 -2.0 : : position_x position_y position_z effective_charge_of_the_ion : :
Position must be given in the unit of a0.
If you execute the feram like `feram foo123.feram`, filenames of output files are starting from 'foo123', e.g. foo123.avg, foo123.320K0050000.coord, foo123.dipole-dipole-long.dat, etc.
To foo123.log, feram reports the energies of each iteration. "verbose" tag determines how much messages will be written to the .log file.
"verbose = 0" (NOT IMPLEMENTED YET). The .log file will not be created.
"verbose = 1" is the default value for verbose tag. Minimum messages will be written to the .log file.
"verbose = 2". feram reports the energies of EVERY iterations.
For debugging, using "verbose = 2", src/plot.gp can plot the energies.
$ feram foo123.feram $ gnuplot plot.gp
After n_thermalize iterations of thermalization, feram averages properties for n_average iterations. For example, by combining .avg files of some calculations altering temperature (kelvin tag), you can see temperature dependence of properties. Please see the end of src/average_module.F.
Distribution function of u_alpha(R) (alpha=x,y,z)
D_alpha(u) = (1/N) \sum_R delta(u_alpha(R)-u)
are averaged in n_average iterations and reported in foo123.distribution. From 1st to 4th column, u D_x(u) D_y(u) D_z(u) are written. Please see src/average_module.F.
In the case of method = 'hl', a simulation of hysteresis loop, one .hl file will be created instead of a .avg file. In .hl file, properties will be recorded in every n_hl_freq iterations. Please see src/hysteresis_loop.F.
Snapshot of dipoles at nnnnnnnnnn-th iteration. This file can be visualized with slice.rb (Ruby script) and cross-section-q.sh, cross-section-p.sh, and cross-section-dVddi.sh (Bourne Shell scripts). cross-section-p.sh and cross-section-dVddi.sh are symbolic links or copy of cross-section-q.sh.
The calculated local field from the given ionic configuration (ionic.configuration file) is stored in this file. This file will be reloaded in consequent temperature calculations and the other calculations.
Copyright © 2007-2011 by Takeshi Nishimatsu
feram is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. You can copy, modify and redistribute feram, but only under the conditions described in the GNU General Public License (the "GPL"). For more detail, see COPYING.
You can make a DONATION to Takeshi Nishimatsu through Tohoku University http://www.rpip.tohoku.ac.jp/main/kihukin.html (in Japanese).
The author is grateful if you would kindly refer the name of this program and cite our articles, [Takeshi Nishimatsu, Umesh V. Waghmare, Yoshiyuki Kawazoe, and David Vanderbilt: Phys. Rev. B 78 (2008) 104104] and [Jaita Paul, Takeshi Nishimatsu, Yoshiyuki Kawazoe, and Umesh V. Waghmare: Phys. Rev. Lett. 99 (2007) 077601], in your papers.
Authors and/or publishers of the papers have their copyrights for the following cited figures.
Takeshi Nishimatsu (t-nissie{at}imr.tohoku.ac.jp)
This project is/was partially supported by:
http://loto.sourceforge.net/feram/ is hosted by
.