Difference between revisions of "Tutorial-v.1.0.0"

From salmon
Jump to: navigation, search
(&scf)
Line 1: Line 1:
== Getting started ==
+
== Prerequisites ==
Welcome to SALMON Tutorial!
 
  
In this tutorial, we explain the use of SALMON from the very beginning, taking a few samples that cover applications of SALMON in several directions.  
+
In this guide, it is assumed that readers have a basic knowledge of Unix and its command line operations.  
We assume that you are in the computational environment of UNIX/Linux OS.
+
For the installation of SALMON, following packages are required.
First you need to download and install SALMON in your computational environment.
 
If you have not yet done it, do it following the instruction, [[download-v.1.0.0]] and [[Install and Run-v.1.0.0]].
 
  
As described in [[Install and Run-v.1.0.0]], you are required to prepare at least an input file and pseudopotential files to run SALMON.
+
* Fortran90/C compiler. Our package assumes users have one of the following compilers:
In the following, we present input files for several sample calculations and provide a brief explanation of the namelist variables that appear in the input files.
+
** GCC (Gnu Compiler Collection)
You may modify the input files to execute for your own calculations.
+
** Intel Fortran/C Compiler
Pseudopotential files of elements that appear in the samples are also attached.
+
** Fujitsu Compiler (at FX100 / K-Computer)
We also present explanations of main output files.
 
  
We present 6 tutorials.
+
* One of the following library packages for linear algebra:
 +
** BLAS/LAPACK
 +
** Intel Math Kernel Library (MKL)
 +
** Fujitsu Scientific Subroutine Library 2 (SSL-II)
  
First 3 tutorials (Tutorial-1 ~ 3) are for an isolated molecule, acetylene C2H2.  
+
* Build tools.
If you are interested in learning electron dynamics calculations in isolated systems, please look into these tutorials.
+
** CMake
In SALMON, we usually calculate the ground state solution first.
 
This is illustrated in [[#Tutorial-1: Ground state of C2H2 molecule|Tutorial-1]].
 
After finishing the ground state calculation, two tutorials of electron dynamics calculations are prepared.
 
[[#Tutorial-2: Polarizability and photoabsorption of C2H2 molecule|Tutorial-2]]
 
illustrates the calculation of linear optical responses in real time, obtaining polarizability and photoabsorption of the molecule.
 
[[#Tutorial-3: Electron dynamics in C2H2 molecule under a pulsed electric field|Tutorial-3]]
 
illustrates the calculation of electron dynamics in the molecule under a pulsed electric field.
 
  
Next 2 tutorials (Tutorial-4 ~ 5) are for a crystalline solid, silicon.
+
If there is any problem to use CMake tool in your environment by you can use the GNU make tools.
If you are interested in learning electron dynamics calculations in extended periodic systems, please look into these tutorials.
+
See [[Troubleshooting of the Installation Process]].
Since ground state calculations of small unit-cell systems are not computationally expensive
 
and a time evolution calculation is usually much more time-consuming than the ground state calculation,
 
we recommend to run the ground and the time evolution calculations as a single job.
 
The following two tutorials are organized in that way.
 
[[#Tutorial-4: Dielectric function of crystalline silicon|Tutorial-4]]
 
illustrates the calculation of linear response properties of crystalline silicon to obtain the dielectric function.
 
[[#Tutorial-5: Electron dynamics in crystalline silicon under a pulsed electric field|Tutorial-5]]
 
illustrates the calculation of electron dynamics in the crystalline silicon induced by a pulsed electric field.
 
  
The final tutorial (Tutorial-6) is for an irradiation and a propagation of a pulsed light in a bulk silicon,
+
If you use other compilers, you may need to change build scripts (CMake).
coupling Maxwell equations for the electromagnetic fields of the pulsed light and the electron dynamics in the unit cells.
+
If no numerical library is installed on your computer system, you may need to install BLAS/LAPACK by yourself. See Tips for Installation.
This calculation is quite time-consuming and is recommended to execute using massively parallel supercomputers.
+
See [[Troubleshooting of the Installation Process]].
[[#Tutorial-6: Pulsed-light propagation through a silicon thin film|Tutorial-6]]
 
illustrates the calculation of a pulsed, linearly polarized light irradiating normally on a surface of a bulk silicon.
 
  
== C2H2 (isolated molecules) ==
+
== Download ==
  
=== Tutorial-1: Ground state of C2H2 molecule ===
+
The newest version of the SALMON can be downloaded from [[Download]].
In this tutorial, we learn the calculation of the ground state solution of acetylene (C2H2) molecule, solving the static Kohn-Sham equation.
+
To extract files from the downloaded file ''salmon-<VERSION>.tar.gz'', type the following command in the command-line,
This tutorial will be useful to learn how to set up calculations in SALMON for any isolated systems such as molecules and nanoparticles.
 
It should be noted that at present it is not possible to carry out the geometry optimization in SALMON.
 
Therefore, atomic positions of the molecule are specified in the input file and are fixed during the calculations.
 
  
==== Input files ====
+
$ tar –zxvf ./salmon-<VERSION>.tar.gz
: To run the code, following files are used:
 
  
{| class="wikitable"
+
After the extraction, the following directories will be created.
| file name      || description
+
 
|-
+
SALMON
| ''C2H2_gs.inp'' || input file that contains namelist variables and their values         
+
  |- src        Source codes
|-
+
  |- example    Samples
| ''C_rps.dat'' || pseodupotential file for carbon atom
+
  |- makefiles  GNU Makefiles for building
|-
+
  |- cmakefiles  CMake related files
| ''H_rps.dat'' || pseudopotential file for hydrogen atom
+
  |- makefiles  GNU Makefiles for building
|}
 
  
* You may download the above 3 files (zipped file) from:
+
== Build ==
  
[[media:C2H2_gs_input.zip| Download zipped input and pseudopotential files]]
+
To compile SALMON to create executable binary files, two options are prepared, CMake and Gnu Make.
 +
If CMake works in your environment, we recommend to use it.
 +
If CMake fails in your environment, consider using Gnu Make [[Install_and_Run-v.1.0.0#Build_with_GNU_Makefile]].
  
* In the input file ''C2H2_gs.inp'', namelists variables are specified. Most of them are mandatory to execute the ground state calculation. We present their explanations below:
+
=== Installation of CMake  ===
  
[[Explanations of input files (ground state of C2H2 molecule)-v.1.0.0]]
+
The [https://cmake.org/|CMake CMake] is a cross-platform build tool.
 +
In order to build the SALMON from the source code, the CMake of version 3.0.2 or later is required on your system.
  
: This will help you to prepare an input file for other systems that you want to calculate. A complete list of the namelist variables that can be used in the input file can be found in the downloaded file ''SALMON/manual/input_variables.md''.
+
You can get the binary distribution from the [https://cmake.org/download/  download page].
 +
First, move to the installation directory of salmon,
 +
<pre>
 +
cd <SALMON_INSTALLATION_DIRECTORY>
 +
</pre>
 +
and download the binary distribution ( <code>cmake-<VERSION>-<PLATFORM>.tar.gz</code>) appropriate for your platform.  
 +
You can do it by copy the URL of download link from the browser, and use <code>wget</code> command:
 +
<pre>
 +
wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz
 +
</pre>
 +
In this document, we will use version 3.8.2 as an example. You can unpack the archive
 +
<pre>
 +
tar -zxvf cmake-3.8.2-Linux-x86_64.tar.gz
 +
</pre>
 +
and you will have the binary <code>make-3.8.2-Linux-x86_64/bin/cmake</code>.
 +
To utilize the <code>cmake</code> command,  the executable are settled inside the directory specified in your <code>$PATH</code>.
  
==== Output files ====
+
If you use the bash shell, you edit <code>~/.bashrc</code> and append the line:
: After the calculation, following output files are created in the directory that you run the code,
+
<pre>
 +
export PATH=<SALMON_INSTALLATION_DIRECTORY>/cmake-3.8.2-Linux-x86_64/bin:$PATH
 +
</pre>
 +
, and reload the configuration <code>source ~/.bashrc</code>.
  
{| class="wikitable"
+
=== Build using CMake ===
| file name      || description
 
|-
 
| ''C2H2_info.data'' || information on ground state solution             
 
|-
 
| ''dns.cube'' || a cube file for electron density
 
|-
 
| ''elf.cube'' || electron localization function (ELF)
 
|-
 
| ''psi1.cube'', ''psi2.cube'', ... || electron orbitals
 
|-
 
| ''dos.data'' || density of states
 
|-
 
| ''pdos1.data'', ''pdos2.data'', ... || projected density of states
 
|-
 
| ''C2H2_gs.bin'' || binary output file to be used in the real-time calculation
 
|}
 
  
* You may download the above files (zipped file, except for the binary file ''C2H2_gs.bin'') from:
+
First, examine whether CMake is usable in your environment or not.
 +
Type the following in Unix command-line:
  
  [[media:C2H2_gs_output.zip|Download zipped output files]]
+
  $ cmake --version
  
* Main results of the calculation such as orbital energies are included in ''C2H2_info.data''. Explanations of the ''C2H2_info.data'' and other output files are described in:
+
If CMake is not installed in your system, an error message such as <code>cmake: command not found</code> will appear.
 +
If CMake is installed on your system, the version number will be shown.
 +
To build SALMON, CMake of version 3.0.2 or later is required.  
 +
If CMake is not installed or CMake of the older version is installed in your system, you need to install the new version by yourself.  
  
[[Explanations of output files (ground state of C2H2 molecule)-v.1.0.0]]
+
The installation of the CMake is simple.
 +
A detailed description of the installation is given in [[Tips_for_Installation#Installation_of_CMake | Installation of CMake]].
 +
Here we describe a simple method to use the binary distribution of CMake.
 +
First, download the '''binary distribution file''' appropriate for your system from https://cmake.org/download/.
 +
The filename of the downloaded file will be ''cmake-<VERSION_PLATFORM>.tar.gz''.
 +
In standard Unix environment, files for the platform of Linux x86_64 will be appropriate.
 +
Next extract the binary executable file of CMake, typing in the command-line as
  
==== Images ====
+
$ tar xvfz cmake-<VERSION_PLATFORM>.tar.gz
: We show several image that are created from the output files.
 
  
{| class="wikitable"
+
Then you will have the cmake binary file in ''bin'' directory.
| image  || files used to create the image
+
For the CMake binary file to be usable, you need to modify the Unix environmental variable ''$PATH'' appropriately.
|-
 
| [[:File:HOMO.png#file|highest occupied molecular orbital (HOMO)]] || ''psi1.cube'', ''psi2.cube'', ...            
 
|-
 
| [[:File:Dns.png#file|electron density]] || ''dns.cube''
 
|-
 
| [[:File:Elf.png#file|electron localization function]] ||  ''elf.cube''
 
|}
 
  
=== Tutorial-2: Polarizability and photoabsorption of C2H2 molecule ===
+
'''''Description how to modify the $PATH should come here'''''
In this tutorial, we learn the linear response calculation in the acetylene (C2H2) molecule, solving the time-dependent Kohn-Sham equation.
 
The linear response calculation provides the polarizability and the oscillator strength distribution of the molecule.
 
This tutorial should be carried out after finishing the ground state calculation that was explained in [[#Tutorial-1: Ground state of C2H2 molecule|Tutorial-1]].
 
In the calculation, an impulsive perturbation is applied to all electrons in the C2H2 molecule along the molecular axis which we take ''z'' axis.
 
Then a time evolution calculation is carried out without any external fields.
 
During the calculation, the electric dipole moment is monitored.
 
After the time evolution calculation, a time-frequency Fourier transformation is carried out for the electric dipole moment to obtain the frequency-dependent polarizability.
 
The imaginary part of the frequency-dependent polarizability is proportional to the oscillator strength distribution and the photoabsorption cross section.
 
  
==== Input files ====
+
To confirm that CMake of the new version is usable in your environment, type <code>cmake --version</code> in the command-line.
: To run the code, the input file ''C2H2_rt_response.inp'' that contains namelist variables and their values for the linear response calculation is required. The binary file ''C2H2_gs.bin'' that is created in the ground state calculation and pseudopotential files are also required. The pseudopotential files should be the same as those used in the ground state calculation.  
 
  
{| class="wikitable"
+
==== Build using CMake specifying archtechture ====
| file name      || description
 
|-
 
| ''C2H2_rt_response.inp'' || input file that contains namelist variables and their values         
 
|-
 
| ''C_rps.dat'' || pseodupotential file for carbon
 
|-
 
| ''H_rps.dat'' || pseudopotential file for hydrogen
 
|-
 
| ''C2H2_gs.bin'' || binary file created in the ground state calculation
 
|}
 
  
* You may download the ''C2H2_rt_response.inp'' file (zipped file) from:
+
Confirming that CMake of version 3.0.2 or later can be usable on your system, proceed the following steps.
 +
We assume that you are in the directory SALMON.
 +
* Create a new temporary directory ''build'' and move to the directory,
  
  [[media:C2H2_rt_response_input.zip| Download zipped input file]]
+
  $ mkdir build
 +
$ cd build
  
* In the input file ''C2H2_rt_response.inp'', namelists variables are specified. Most of them are mandatory to execute the linear response calculation. We present their explanations below:
+
* Execute the python script ''configure.py'' and then make,
  
  [[Explanations of input files (polarizability and photoabsorption of C2H2 molecule)-v.1.0.0]]
+
  $ python ../configure.py –arch=ARCHTECTURE
   
+
  $ make
: This will help you to prepare the input file for other systems that you want to calculate. A complete list of the namelist variables that can be used in the input file can be found in the downloaded file ''SALMON/manual/input_variables.md''.
 
  
==== Output files ====
+
Here ''ARCHITECTURE'' specifies the architecture of the CPU in your computer system such as ''intel-avx''.
: After the calculation, following output files are created in the directory that you run the code,
+
You need to choose ''ARCHTECUTRE'' from the following options:
  
 
{| class="wikitable"
 
{| class="wikitable"
| file name       || description
+
| arch       || Detail                          || Compiler        || Numerical Library
 
|-
 
|-
| ''C2H2_lr.data'' || polarizability and oscillator strength distribution as functions of energy           
+
| intel-knl || Intel Knights Landing || Intel Compiler || Intel MKL             
 
|-
 
|-
| ''C2H2_p.data'' || components of dipole moment as functions of time
+
| intel-knc || Intel Knights Corner || Intel Compiler || Intel MKL             
|}
 
 
 
* You may download the above files (zipped file) from:
 
 
 
[[media:C2H2_rt_response_output.zip|Download zipped output files]]
 
 
 
*Explanations of the output files are given in:
 
 
 
  [[Explanations of output files (polarizability and photoabsorption of C2H2 molecule)-v.1.0.0]]
 
 
 
=== Tutorial-3: Electron dynamics in C2H2 molecule under a pulsed electric field ===
 
In this tutorial, we learn the calculation of the electron dynamics in the acetylene (C2H2) molecule under a pulsed electric field, solving the time-dependent Kohn-Sham equation.
 
As outputs of the calculation, such quantities as the total energy and the electric dipole moment of the system as functions of time are calculated.
 
This tutorial should be carried out after finishing the ground state calculation that was explained in [[#Tutorial-1: Ground state of C2H2 molecule|Tutorial-1]].
 
In the calculation, a pulsed electric field that has cos^2 envelope shape is applied. The parameters that characterize the pulsed field such as magnitude, frequency, polarization direction, and carrier envelope phase are specified in the input file.
 
 
 
==== Input files ====
 
: To run the code, following files are used. The ''C2H2.data'' file is created in the ground state calculation. Pseudopotential files are already used in the ground state calculation. Therefore, ''C2H2_rt_pulse.inp'' that specifies namelist variables and their values for the pulsed electric field calculation is the only file that the users need to prepare.
 
 
 
{| class="wikitable"
 
| file name      || description
 
 
|-
 
|-
| ''C2H2_rt_pulse.inp'' || input file that contain namelist variables and their values.         
+
| intel-avx || Intel Processer (Ivy-, Sandy-Bridge)  || Intel Compiler || Intel MKL
 
|-
 
|-
| ''C_rps.dat'' || pseodupotential file for Carbon
+
| intel-avx2 || Intel Processer (Haswell, Broadwell ..) || Intel Compiler || Intel MKL
 
|-
 
|-
| ''H_rps.dat'' || pseudopotential file for Hydrogen
+
| fujitsu-fx100 || FX100 Supercomputer || Fujitsu Compiler || SSL-II
 
|-
 
|-
| ''C2H2.data'' || binary file created in the ground state calculation
+
| fujitsu-k || Fujitsu FX100 / K-computer || Fujitsu Compiler || SSL-II
 
|}
 
|}
  
* You may download the ''C2H2_rt_pulse.inp'' file (zipped file) from:
+
If the build is successful, you will get a file ''salmon.cpu'' at the directory ''salmon/bin''.
 
+
If you specify many-core archtechtures, ''intel-knl'' or ''intel-knc'', you find a file ''salmon.mic'' or both files ''salmon.cpu'' and ''salmon.mic''.
[[media:C2H2_rt_pulse_input.zip| Download zipped input file]]
 
 
 
* In the input file ''C2H2_rt_pulse.inp'', namelists variables are specified. Most of them are mandatory to execute the calculation of electron dynamics induced by a pulsed electric field. We present explanations of the namelist variables that appear in the input file in:
 
 
 
[[Explanations of input files (C2H2 molecule under a pulsed electric field)-v.1.0.0]]
 
 
: This will help you to prepare the input file for other systems and other pulsed electric fields that you want to calculate. A complete list of the namelist variables that can be used in input files can be found at ???.
 
 
 
==== Output files ====
 
: After the calculation, following output files are created in the directory that you run the code,
 
 
 
{| class="wikitable"
 
| file name      || description
 
|-
 
| ''C2H2_p.data'' || components of the electric dipole moment as functions of time           
 
|-
 
| ''C2H2_ps.data'' || power spectrum that is obtained by a time-frequency Fourier transformation of the electric dipole moment
 
|}
 
  
* You may download the above files (zipped file) from:
 
  
[[media:C2H2_rt_pulse_output.zip|Download zipped output files]]
 
  
*Explanations of the files are described in:
+
== Files necessary to run SALMON ==
  
[[Explanations of input files (C2H2 molecule under a pulsed electric field)-v.1.0.0]]
+
To run SALMON, at least two kinds of files are required for any calculations.
 +
One is an input file, with the filename extension of ''*.inp*'', to be read from the standard input, ''stdin''.
 +
It should be prepared in the Fortran90 namelist format.
 +
Pseudopotential files of relevant elements are also required.  
 +
Depending on your purpose, some other files may also be necessary.  
 +
For example, coordinates of atomic positions of the target material may either be written in the input file or prepared as a separate file.
  
== Crystalline silicon (periodic solids) ==
+
=== Pseudopotentials ===
  
=== Tutorial-4: Dielectric function of crystalline silicon===
+
SALMON utilizes norm-conserving pseudpotentials.
In this tutorial, we learn the linear response calculation of the crystalline silicon of a diamond structure.
+
You may find pseudopotentials of some elements in [[Samples]].  
Calculation is done in a cubic unit cell that contains eight silicon atoms.
+
SALMON allows using several formats of pseudopotentials that can be easily obtained from websites listed below.
Since the ground state calculation costs much less computational time than the time evolution calculation,
 
both calculations are successively executed.
 
After finishing the ground state calculation, an impulsive perturbation is applied to all electrons in the unit cell
 
along ''z'' direction.
 
Since the dielectric function is isotropic in the diamond structure, calculated dielectric function should not depend
 
on the direction of the perturbation.
 
During the time evolution, electric current averaged over the unit cell volume is calculated.
 
A time-frequency Fourier transformation of the electric current gives us a frequency-dependent conductivity.
 
The dielectric function may be obtained from the conductivity using a standard relation.
 
  
==== Input files ====
 
: To run the code, following files are used:
 
  
 
{| class="wikitable"
 
{| class="wikitable"
| file name      || description
+
| pseudopotential || website
 
|-
 
|-
| ''Si_gs_rt_response.inp'' || input file that contain namelist variables and their values.        
+
| Ab-init FHI || http://www.ab-init
|-
 
| ''Si_rps.dat'' || pseodupotential file of silicon
 
 
|}
 
|}
  
* You may download the above 2 files (zipped file) from:
+
In the input file, you need to write the filename of the pseudopotential.
 +
Use exactly the same filename as that downloaded from the website or that in the [[Samples]].
  
[[media: Si_gs_rt_response_input.zip| Download zipped input and pseudopotential files]]
+
=== input file ===
  
* In the input file ''Si_gs_rt_response.inp'', namelists variables are specified. Most of them are mandatory to execute the calculation. We present explanations of the namelist variables that appear in the input file in:
+
SALMON describes electron dynamics in systems with both isolated and periodic boundary conditions.
 +
The boundary condition is specified by the variable ''iperiodic'' in the namelist ''&system''.
 +
Calculations are achieved in two steps; first, the ground state calculation is carried out and then electron dynamics calculations in real time are achieved.  
 +
Choice of the calculation mode is specified by the variable ''calc_mode'' in the namelist ''&calculation''.  
 +
For isolated systems, the ground state and the electron dynamics calculations should be carried out in two steps.
 +
First the ground state calculation is achieved specifying ''calc_mode = 'GS' ''.
 +
Then the real-time electron dynamics calculation is achieved specifying ''calc_mode = 'RT' ''.
 +
For periodic systems, two calculations can also be carried out in one step specifying ''calc_mode = 'GS_RT' ''.
 +
For the isolated systems, ’GS-RT’ is not implemented. However, their calculations are done at once if
 +
users prepare appropriate shell scripts.
  
[[Explanations of input files (dielectric function of crystalline silicon)-v.1.0.0]]
+
There are about 20 groups of main namelists listed below.
 
+
A list of variables in each namelist is provided in the file ''???'' included in the source-file distribution.
 
: This will help you to prepare the input file for other systems that you want to calculate. A complete list of the namelist variables that can be used in input files can be found at ???.
 
 
 
==== Output files ====
 
: After the calculation, following output files are created in the directory that you run the code,
 
  
 
{| class="wikitable"
 
{| class="wikitable"
| file name       || description
+
| name of namelist || description  
 
|-
 
|-
| ''Si_eigen.data'' || energy eigenvalues of orbitals
+
| &calculation || specify calculation modes
 
|-
 
|-
| ''Si_gs_info.data'' || information of ground state calculation
+
| &control  || parameters related to general conditions for the calculation
 
|-
 
|-
| ''Si_k.data'' || information on k-points
+
| &units        || specify units of input and output files
 
|-
 
|-
| ''Si_rt.data'' || electric field, vector potential, and current as functions of time
+
| &parallel      || parameters related to parallelization
 
|-
 
|-
| ''Si_lr.data'' || Fourier spectra of the dielectric functions
+
| &system      || information related to the system
|}
+
|-
 
+
| &pseudo      || information related to pseudopotentials
* You may download the above files (zipped file) from:
+
|-
 
+
| &functional || specify density functional to be used
[[media:Si_gs_rt_response_output.zip|Download zipped output files]]
+
|-
 
+
| &rgrid        || parameters related to real space grid 
* Explanations of the output files are described in:
 
 
 
[[Explanation of output fiels (dielectric function of crystalline silicon)-v.1.0.0]]
 
 
 
=== Tutorial-5: Electron dynamics in crystalline silicon under a pulsed electric field ===
 
In this tutorial, we learn the calculation of electron dynamics in a unit cell of crystalline silicon of a diamond structure.
 
Calculation is done in a cubic unit cell that contains eight silicon atoms.
 
Since the ground state calculation costs much less computational time than the time evolution calculation,
 
both calculations are successively executed.
 
After finishing the ground state calculation, a pulsed electric field that has cos^2 envelope shape is applied.
 
The parameters that characterize the pulsed field such as magnitude, frequency, polarization, and carrier envelope phase
 
are specified in the input file.
 
 
 
==== Input files ====
 
: To run the code, following files are used:
 
 
 
{| class="wikitable"
 
| file name      || description
 
 
|-
 
|-
| ''Si_gs_rt_pulse.inp'' || input file that contain namelist variables and their values.         
+
| &kgird      || parameters related to k-points for periodic systems
 
|-
 
|-
| ''Si_rps.dat'' || pseodupotential file for Carbon
+
| &tgrid      || parameters related to time evolution
|}
 
 
 
* You may download the above 2 files (zipped file) from:
 
 
 
[[media:Si_gs_rt_pulse_input.zip| Download zipped input and pseudopotential files]]
 
 
 
* In the input file ''Si_gs_rt_pulse.inp'', namelists variables are specified. Most of them are mandatory to execute the calculation. We present explanations of the namelist variables that appear in the input file in:
 
 
 
[[Explanation of input files (crystalline silicon under a pulsed electric field)-v.1.0.0]]
 
 
 
 
: This will help you to prepare the input file for other systems that you want to calculate. A complete list of the namelist variables that can be used in input files can be found at ???.
 
 
 
==== Output files ====
 
: After the calculation, following output files are created in the directory that you run the code,
 
 
 
{| class="wikitable"
 
| file name      || description
 
 
|-
 
|-
| ''Si_eigen.data'' || energy eigenvalues of orbitals
+
| &propagation || specify a choice of the propagation method
 
|-
 
|-
| ''Si_k.data'' || information on k-points
+
| &scf          || parameters related to ground state calculation
 
|-
 
|-
| ''Si_gs_info.data'' || information on the ground state
+
| &emfield  || parameters of electric fields applied to the system
 
|-
 
|-
| ''Si_rt.data'' || electric field, vector potential, and current as functions of time
+
| &linear_response || magnitude of the distortion for linear response
|}
 
 
 
* You may download the above files (zipped file) from:
 
 
 
[[media:Si_gs_rt_pulse_output.zip|Download zipped output files]]
 
 
 
* Explanations of the output files are described in:
 
 
 
[[Explanation of output files (crystalline silicon under a pulsed electric field)-v.1.0.0]]
 
 
 
== Maxwell + TDDFT multiscale simulation ==
 
 
 
=== Tutorial-6: Pulsed-light propagation through a silicon thin film ===
 
In this tutorial, we learn the calculation of the propagation of a pulsed light through a thin film of crystalline silicon.
 
We consider a silicon thin film of ?? nm thickness, and an irradiation of a few-cycle, linearly polarized pulsed light normally on the thin film.
 
First, to set up initial orbitals, the ground state calculation is carried out.
 
The pulsed light locates in the vacuum region in front of the thin film.
 
The parameters that characterize the pulsed light such as magnitude and frequency are specified in the input file.
 
The calculation ends when the reflected and transmitted pulses reach the vacuum region.
 
 
 
==== Input files ====
 
: To run the code, following files are used:
 
 
 
{| class="wikitable"
 
| file name      || description
 
 
|-
 
|-
| ''Si_gs_rt_multiscale.inp'' || input file that contain namelist variables and their values.         
+
| &multiscale || parameters related to coupled multiscale calculations of electron dynamics and light propagations
 
|-
 
|-
| ''Si_rps.dat'' || pseodupotential file for silicon
+
| &analysis || parameters related to output files
|}
 
 
 
* You may download the above two files (zipped file) from:
 
 
 
[[media: Si_gs_rt_multiscale_input.zip| Download zipped input and pseudopotential files]]
 
 
 
 
 
* In the input file ''Si_gs_rt_multiscale.inp'', namelists variables are specified. Most of them are mandatory to execute the calculation. We present explanations of the namelist variables that appear in the input file in:
 
 
 
[[Explanation of input files (pulsed-light propagation through a silicon thin film)-v.1.0.0]]
 
 
 
 
: This will help you to prepare the input file for other systems that you want to calculate. A complete list of the namelist variables that can be used in input files can be found at ???.
 
 
 
==== Output files ====
 
: After the calculation, following output files are created in the directory that you run the code,
 
 
 
{| class="wikitable"
 
| file name      || description
 
 
|-
 
|-
| ''Si_Ac_xxxxxx.out'' || EM field and electron energy distribution at the macroscpic grid
+
| &hartree      || parameters related to Hartree potential calculation of isolated systems
 
|-
 
|-
| ''Si_Ac_M_xxxxxx.out'' || Vector potential field and current density at individual macropoints
+
| &ewald  || parameters related to Ewald sum that appears in the ground state calculation of periodic systems
 
|-
 
|-
| ''Si_Ac_vac.out'' ||
+
| &atomic_coor || Atomic coordinates can be written here
 
|}
 
|}
  
* You may download the above files (zipped file) from:
+
In [[Samples]], we prepare six samples that cover typical calculations feasible by using SALMON.
 +
We prepare explanations for the input files that will help to prepare input files of your own interests.
  
[[media:Si_gs_rt_multiscale_output.zip|Download zipped output files]]
+
Here we briefly explain the format of the namelist.  
  
* Explanations of the output files are described in:
+
  &namelist1
 
+
  variable1 = int_value
  [[Explanation of output files (pulsed-light propagation through a silicon thin film)-v.1.0.0]]
+
  variable2 = 'char_value'
 
+
  /
== Namelists and their values ==
+
&namelist2
 
+
  variable1 = real8_value
We here summarize namelists that appear in this Tutorial.
+
   variable2 = int_value1, int_value2, int_value3
A thorough list of the namelist variables may be found in the downloaded file in
 
'SALMON/manual/input_variables.md'.
 
 
 
=== &units ===
 
 
 
Mandatory: none
 
 
 
&units
 
   unit_system='A_eV_fs'
 
 
  /
 
  /
  
This namelist specifies the unit system to be used in the input file.  
+
A block of namelists starts with ''&namelist'' line and ends with ''/'' line.
Options are 'A_eV_fs' for Angstrom, eV, and fs, and 'a.u.' or 'au' for atomic units.  
+
Between two lines, descriptions of variables and their values appear.
If you do not specify it, atomic unit will be used as default.
+
Note that many variables have their default values so that it is not necessary to give values for all variables.  
 +
The description of the variables may appear at any position if they are between ''&namelist'' and ''/''.
 +
Input files constitute of several blocks of namelists.
 +
The blocks can appear in any order.
  
For isolated systems (specified by <code>iperiodic = 0</code> in <code>&system</code>), the unit of 1/eV is used for the output files of DOS and PDOS if <code>unit_system = 'A_eV_fs'</code> is specified, while atomic unit is used if not. For other output files, the Angstrom/eV/fs units are used  irrespective of the namelist value.
+
== Run SALMON ==
  
For periodic systems (specified by <code>iperiodic =3</code> in <code>&system</code>), the unit system specified by this namelist variable is used for most output files. See the first few lines of output files to confirm the unit system adopted in the file.
+
To run SALMON, the executable file of ''salmon.cpu'' (and ''salmon.mic'' if your system is the many-core machine) should be built from the source file of SALMON as described above. An input file ''inputfile.inp'' and pseudopotential files should also be prepared as mentioned above.
 +
In order to execute the calculation, for the single process environment, type the following command:
  
=== &calculation ===
+
$ salmon.cpu < inputfile.inp > fileout.out
  
Mandatory: calc_mode
+
For the multiprocess environment, If the command to execute calculations using MPI is ''mpiexec',  the calculation will start
  
  &calculation
+
  $ mpiexec -n NPROC salmon.cpu < inputfile.inp > fileout.out
  calc_mode = 'GS'
 
/
 
  
The value of the <code>calc_mode</code> should be one of <code>'GS'</code>, <code>'RT'</code>, and <code>'GS-RT'</code>.  
+
where NPROC is the number of MPI processes you want to use.
For isolated systems (specified by <code>iperiodic = 3</code> in <code>&system</code>), the ground state (<code>'GS'</code>) and the real time (<code>'RT'</code>) calculations should be done separately and sequentially.
+
For the many-core processor (e.g. intel-knl) environment, the execution command is
For periodic systems (specified by <code>iperiodic = 3</code> in <code>&system</code>), both ground state and real time calculations should be carried out as a single task (<code>calc_mode = 'GS_RT'</code>).
 
  
For Maxwell + TDDFT multi-scale calculation, add the following namelist.
+
$ mpiexec.hydra -n NPROC salmon.mic < inputfile.inp > fileout.out
  
    use_ms_maxwell = 'y'
+
The execution command and the job submission procedure depends much on the local environment.
 +
We just summarize the general conditions to execute SALMON:
  
=== &control ===
+
* salmon runs in parallel environment using MPI.
 +
* executable files are prepared as ''/salmon/bin/salmon.cpu'' and/or ''/salmon/bin/salmon.mic'' in the standard build procedure.
 +
* to start calculations, ''inputfile.inp'' should be read through ''stdin''.
  
Mandatory: none
 
  
&control
 
  sysname = 'C2H2'
 
/
 
  
'C2H2' defined by <code>sysname = 'C2H2'</code> will be used in the filenames of output files.
 
If you do not specify it, the file name will start with 'default'.
 
  
=== &functional ===
+
= Appendix  =
  
  &functional
+
== Additional options in configure.py script ==
    xc ='PZ'
 
  /
 
  
<code>xc ='PZ'</code> indicates that (adiabatic) local density approximation is adopted (Perdew-Zunger: Phys. Rev. B23, 5048 (1981)).
 
This is the default choice.
 
  
For isolated systems (specified by <code>iperiodic = 0</code> in <code>&system</code>), only the default choice of 'PZ' is available at present.
+
=== Build using CMake for Singleprocess environment ===
 +
If you want to build for the single process environment, please specify <code>--disable-mpi</code>.
  
For periodic systems (specified by <code>iperiodic = 3</code> in <code>&system</code>),  the following functionals may be available in addition to 'PZ':
+
  $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi
  
xc = 'PZM'
+
=== Manual specification of compiler variables ===
  
Perdew-Zunger LDA with modification to improve sooth connection between high density form and low density one. :J. P. Perdew and Alex Zunger, Phys. Rev. B 23, 5048 (1981).
+
In executing <code>configure.py</code>, you may manually specify compiler and environment variables instead of specifying the architecture, for example:
  
  xc = 'TBmBJ'
+
  $ python ../configure.py FC=mpiifort CC=mpiicc FFLAGS="-xAVX" CFLAGS="-restrict -xAVX"
cval = 1.0
 
 
 
Tran-Blaha meta-GGA exchange with Perdew-Wang correlation. :Fabien Tran and Peter Blaha, Phys. Rev. Lett. 102, 226401 (2009). John P. Perdew and Yue Wang, Phys. Rev. B 45, 13244 (1992). This potential is known to provide a reasonable description for the bandage of various insulators. For this choice, the additional mixing parameter 'cval' may be specified. If cval is set to a minus value, the mixing-parameter will be computed following the formula in the original paper [Phys. Rev. Lett. 102, 226401 (2009)]. The default value for this parameter is 1.0.
 
 
 
=== &system ===
 
 
 
Mandatory: iperiodic, al, nstate, nelem, natom
 
 
 
'''For an isolated molecule (Tutorial-1, 2, 3)''':
 
 
 
&system
 
  iperiodic = 0
 
  al = 16d0, 16d0, 16d0
 
  nstate = 5
 
  nelem = 2
 
  natom = 4
 
  nelec = 10
 
/
 
 
 
<code>iperiodic = 0</code> indicates that the isolated boundary condition will be used in the calculation.
 
<code>al = 16d0, 16d0, 16d0</code> specifies the lengths of three sides of the rectangular parallelepiped where the grid points are prepared.
 
<code>nstate = 8</code> indicates the number of Kohn-Sham orbitals to be solved.
 
<code>nelec = 10</code> indicate the number of valence electrons in the system. Since the present code assumes that the system is spin saturated, <code>nstate</code> should be equal to or larger than <code>nelec/2</code>.
 
<code>nelem = 2</code> and <code>natom = 4</code> indicate the number of elements and the number of atoms in the system, respectively.
 
 
 
'''For a periodic system (Tutorial-4, 5)''':
 
 
   
 
   
  &system
+
  {| class="wikitable"
  iperiodic = 3
+
| Commandline switch      || Detail                       
  al = 10.26d0,10.26d0,10.26d0
+
|-
  nstate = 32
+
| -a ARCH, --arch=ARCH || Target architecture 
  nelec = 32
+
|-
  nelem = 1
+
  | --enable-mpi, --disable-mpi  ||  enable/disable MPI parallelization.
  natom = 8
+
|-
  /
+
| ---enable-scalapack, --disable-scalapack  ||   disable/disable computations with ScaLAPACK library
 
+
|-
<code>iperiodic = 3</code> indicates that three dimensional periodic boundary condition (bulk crystal) is assumed.
+
| FC, FFLAGS  ||  User-defined Fortran Compiler, and the compiler options
<code>al = 10.26d0, 10.26d0, 10.26d0</code> specifies the lattice constans of the unit cell.
+
|-
<code>nstate = 32</code> indicates the number of Kohn-Sham orbitals to be solved.
+
| FC, FFLAGS  ||   User-defined C Compiler, and the compiler options
<code>nelec = 32</code> indicate the number of valence electrons in the system.
+
|-
<code>nelem = 1</code> and <code>natom = 8</code> indicate the number of elements and the number of atoms in the system, respectively.
+
| ---enable-scalapack, --disable-scalapack  ||  disable/disable computations with ScaLAPACK library
 
+
|}
'''For Maxwell - TDDFT multi scale calculation (Tutorial-6)''':
 
 
 
   &system
 
    iperiodic = 3
 
    al = 10.26d0,10.26d0,10.26d0
 
    isym = 8
 
    crystal_structure = 'diamond'
 
    nstate = 32
 
    nelec = 32
 
    nelem = 1
 
    natom = 8
 
   /
 
 
 
The difference from the above case is the variables, <code>isym = 8</code> and <code>crystal_structure = 'diamond'</code>,
 
which indicates that the spatial symmetry of the unit cell is used in the calculation.
 
Although the use of the symmetry substantially reduces the computational cost, it should be used very carefully.
 
At present, the spatial symmetry has been implemented only for the case of the diamond structure.
 
  
=== &pseudo ===
 
  
Mandatory: pseudo_file, izatom
+
=== Build for the GCC/GFortran environemnt ===
  
'''For C2H2 molecule''':
+
* For GCC/GFortran environemnt, specify:
  
  &pseudo
+
  $ python ../configure.py FC=gfortran CC=gcc FFLAG=-O3 CFLAG=-O3
  izatom(1)=6
 
  izatom(2)=1
 
  pseudo_file(1)='C_rps.dat'
 
  pseudo_file(2)='H_rps.dat'
 
  lmax_ps(1)=1
 
  lmax_ps(2)=0
 
  lloc_ps(1)=1
 
  lloc_ps(2)=0
 
/
 
  
Parameters related to atomic species and pseudopotentials.
 
<code>izatom(1) = 6</code> specifies the atomic number of the element #1.
 
<code>pseudo_file(1) = 'C_rps.dat'</code> indicates the filename of the pseudopotential of element #1.
 
<code>lmax_ps(1) = 1</code> and <code>lloc_ps(1) = 1</code> specify the maximum angular momentum of the pseudopotential projector and the angular momentum of the pseudopotential that will be treated as local, respectively.
 
  
'''For crystalline Si''':
 
  
&pseudo
 
  izatom(1)=14
 
  pseudo_file(1) = './Si_rps.dat'
 
  lloc_ps(1)=2
 
/
 
  
<code>izatom(1) = 14</code> indicates the atomic number of the element #1.
+
== Build with GNU Makefile ==
<code>pseudo_file(1) = 'Si_rps.dat'</code> indicates the  pseudopotential filename of element #1.
 
<code>lloc_ps(1) = 2</code> indicate the angular momentum of the pseudopotential that will be treated as local.
 
  
=== &atomic_coor ===
+
If CMake build fails in your environment, you can try Gnu Make for the build process.
  
Mandatory: atomic_coor or atomic_red_coor (they may be provided as a separate file)
+
First, enter to the makefile directory:
  
'''For C2H2 molecule''':
+
$ cd SALMON/makefiles
  
  &atomic_coor
+
and you need to choose ''Makefile'' appropriately according to your environment. The available makefiles are
'C'   0.000000    0.000000    0.599672  1
+
* fujitsu
'H'   0.000000    0.000000    1.662257  2
+
* gnu
'C'    0.000000    0.000000  -0.599672  1
+
* gnu-without-mpi
'H'    0.000000    0.000000  -1.662257  2
+
* intel
/
+
* intel-avx
 +
* intel-avx2
 +
* intel-knc
 +
* intel-knl
 +
* intel-without-mpi
  
Cartesian coordinates of atoms. The first column indicates the element. Next three columns specify Cartesian coordinates of the atoms. The number in the last column labels the element.
+
The <code>-without-mpi</code> specifies the build for the single process environment.
 +
Execute make command with the platform specified makefile:
  
=== &atomic_red_coor ===
+
  $ make -f Makefile.PLATFORM
 
 
Mandatory: atomic_coor or atomic_red_coor (they may be provided as a separate file)
 
 
 
'''For a crystalline silicon''':
 
 
 
  &atomic_red_coor
 
  'Si'    .0      .0      .0      1
 
  'Si'    .25    .25    .25    1
 
  'Si'    .5      .0      .5      1
 
  'Si'    .0      .5      .5      1
 
  'Si'    .5      .5      .0      1
 
  'Si'    .75    .25  .75    1
 
  'Si'    .25    .75  .75    1
 
  'Si'    .75    .75  .25    1
 
/
 
 
 
Cartesian coordinates of atoms are specified in a reduced coordinate system. First column indicates the element, next three columns specify reduced Cartesian coordinates of the atoms, and the last column labels the element.
 
 
 
=== &rgrid ===
 
 
 
Mandatory: dl or num_rgrid
 
 
 
This namelist provides grid spacing of Cartesian coordinate system.
 
<code>dl(3)</code> specify the grid spacing in three Cartesian coordinates.
 
This is adopted for C2H2 calculation (Tutorial-1).
 
 
 
&rgrid
 
  dl = 0.25d0, 0.25d0, 0.25d0
 
/
 
 
 
<code>num_rgrid(3)</code> specify the number of grid points in each Cartesian direction.
 
This is adopted for crystalline Is calculation (Tutorial-4, 5, 6).
 
 
 
&rgrid
 
  num_rgrid = 12,12,12
 
/
 
 
 
=== &kgrid ===
 
 
 
Mandatory: none
 
 
 
This namelist provides grid spacing of k-space for periodic systems.
 
 
 
&kgrid
 
  num_kgrid = 4,4,4
 
/
 
 
 
=== &scf ===
 
 
 
Mandatory: nscf
 
 
 
This namelists specify parameters related to the self-consistent field calculation.
 
 
 
&scf
 
  ncg = 4
 
  nscf = 1000
 
  convergence = 'norm_rho_dng'
 
  threshold_norm_rho = 1.d-15
 
/
 
  
<code>ncg = 4</code> is the number of conjugate-gradient iterations in solving the Kohn-Sham equation. Usually this value should be 4 or 5. <code>nscf = 1000</code> is the number of scf iterations. For isolated systems specified by <code>&system/iperiodic = 0</code>, the scf loop in the ground state calculation ends before the number of the scf iterations reaches <code>nscf</code>, if a convergence criterion is satisfied. There are several options to examine the convergence. If the value of <code>norm_rho_dng</code> is specified, the convergence is examined by the squared difference of the electron density,
+
The binary file is created in the directory <code>SALMON/bin/</code>.

Revision as of 17:24, 21 November 2017

Prerequisites

In this guide, it is assumed that readers have a basic knowledge of Unix and its command line operations. For the installation of SALMON, following packages are required.

  • Fortran90/C compiler. Our package assumes users have one of the following compilers:
    • GCC (Gnu Compiler Collection)
    • Intel Fortran/C Compiler
    • Fujitsu Compiler (at FX100 / K-Computer)
  • One of the following library packages for linear algebra:
    • BLAS/LAPACK
    • Intel Math Kernel Library (MKL)
    • Fujitsu Scientific Subroutine Library 2 (SSL-II)
  • Build tools.
    • CMake

If there is any problem to use CMake tool in your environment by you can use the GNU make tools. See Troubleshooting of the Installation Process.

If you use other compilers, you may need to change build scripts (CMake). If no numerical library is installed on your computer system, you may need to install BLAS/LAPACK by yourself. See Tips for Installation. See Troubleshooting of the Installation Process.

Download

The newest version of the SALMON can be downloaded from Download. To extract files from the downloaded file salmon-<VERSION>.tar.gz, type the following command in the command-line,

$ tar –zxvf ./salmon-<VERSION>.tar.gz

After the extraction, the following directories will be created.

SALMON
 |- src        Source codes
 |- example    Samples
 |- makefiles   GNU Makefiles for building
 |- cmakefiles   CMake related files
 |- makefiles   GNU Makefiles for building

Build

To compile SALMON to create executable binary files, two options are prepared, CMake and Gnu Make. If CMake works in your environment, we recommend to use it. If CMake fails in your environment, consider using Gnu Make Install_and_Run-v.1.0.0#Build_with_GNU_Makefile.

Installation of CMake

The CMake is a cross-platform build tool. In order to build the SALMON from the source code, the CMake of version 3.0.2 or later is required on your system.

You can get the binary distribution from the download page. First, move to the installation directory of salmon,

cd <SALMON_INSTALLATION_DIRECTORY>

and download the binary distribution ( cmake-<VERSION>-<PLATFORM>.tar.gz) appropriate for your platform. You can do it by copy the URL of download link from the browser, and use wget command:

wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz

In this document, we will use version 3.8.2 as an example. You can unpack the archive

tar -zxvf cmake-3.8.2-Linux-x86_64.tar.gz

and you will have the binary make-3.8.2-Linux-x86_64/bin/cmake. To utilize the cmake command, the executable are settled inside the directory specified in your $PATH.

If you use the bash shell, you edit ~/.bashrc and append the line:

export PATH=<SALMON_INSTALLATION_DIRECTORY>/cmake-3.8.2-Linux-x86_64/bin:$PATH

, and reload the configuration source ~/.bashrc.

Build using CMake

First, examine whether CMake is usable in your environment or not. Type the following in Unix command-line:

$ cmake --version

If CMake is not installed in your system, an error message such as cmake: command not found will appear. If CMake is installed on your system, the version number will be shown. To build SALMON, CMake of version 3.0.2 or later is required. If CMake is not installed or CMake of the older version is installed in your system, you need to install the new version by yourself.

The installation of the CMake is simple. A detailed description of the installation is given in Installation of CMake. Here we describe a simple method to use the binary distribution of CMake. First, download the binary distribution file appropriate for your system from https://cmake.org/download/. The filename of the downloaded file will be cmake-<VERSION_PLATFORM>.tar.gz. In standard Unix environment, files for the platform of Linux x86_64 will be appropriate. Next extract the binary executable file of CMake, typing in the command-line as

$ tar xvfz cmake-<VERSION_PLATFORM>.tar.gz

Then you will have the cmake binary file in bin directory. For the CMake binary file to be usable, you need to modify the Unix environmental variable $PATH appropriately.

Description how to modify the $PATH should come here

To confirm that CMake of the new version is usable in your environment, type cmake --version in the command-line.

Build using CMake specifying archtechture

Confirming that CMake of version 3.0.2 or later can be usable on your system, proceed the following steps. We assume that you are in the directory SALMON.

  • Create a new temporary directory build and move to the directory,
$ mkdir build
$ cd build
  • Execute the python script configure.py and then make,
$ python ../configure.py –arch=ARCHTECTURE
$ make

Here ARCHITECTURE specifies the architecture of the CPU in your computer system such as intel-avx. You need to choose ARCHTECUTRE from the following options:

arch Detail Compiler Numerical Library
intel-knl Intel Knights Landing Intel Compiler Intel MKL
intel-knc Intel Knights Corner Intel Compiler Intel MKL
intel-avx Intel Processer (Ivy-, Sandy-Bridge) Intel Compiler Intel MKL
intel-avx2 Intel Processer (Haswell, Broadwell ..) Intel Compiler Intel MKL
fujitsu-fx100 FX100 Supercomputer Fujitsu Compiler SSL-II
fujitsu-k Fujitsu FX100 / K-computer Fujitsu Compiler SSL-II

If the build is successful, you will get a file salmon.cpu at the directory salmon/bin. If you specify many-core archtechtures, intel-knl or intel-knc, you find a file salmon.mic or both files salmon.cpu and salmon.mic.


Files necessary to run SALMON

To run SALMON, at least two kinds of files are required for any calculations. One is an input file, with the filename extension of *.inp*, to be read from the standard input, stdin. It should be prepared in the Fortran90 namelist format. Pseudopotential files of relevant elements are also required. Depending on your purpose, some other files may also be necessary. For example, coordinates of atomic positions of the target material may either be written in the input file or prepared as a separate file.

Pseudopotentials

SALMON utilizes norm-conserving pseudpotentials. You may find pseudopotentials of some elements in Samples. SALMON allows using several formats of pseudopotentials that can be easily obtained from websites listed below.


pseudopotential website
Ab-init FHI http://www.ab-init

In the input file, you need to write the filename of the pseudopotential. Use exactly the same filename as that downloaded from the website or that in the Samples.

input file

SALMON describes electron dynamics in systems with both isolated and periodic boundary conditions. The boundary condition is specified by the variable iperiodic in the namelist &system. Calculations are achieved in two steps; first, the ground state calculation is carried out and then electron dynamics calculations in real time are achieved. Choice of the calculation mode is specified by the variable calc_mode in the namelist &calculation. For isolated systems, the ground state and the electron dynamics calculations should be carried out in two steps. First the ground state calculation is achieved specifying calc_mode = 'GS' . Then the real-time electron dynamics calculation is achieved specifying calc_mode = 'RT' . For periodic systems, two calculations can also be carried out in one step specifying calc_mode = 'GS_RT' . For the isolated systems, ’GS-RT’ is not implemented. However, their calculations are done at once if users prepare appropriate shell scripts.

There are about 20 groups of main namelists listed below. A list of variables in each namelist is provided in the file ??? included in the source-file distribution.

name of namelist description
&calculation specify calculation modes
&control parameters related to general conditions for the calculation
&units specify units of input and output files
&parallel parameters related to parallelization
&system information related to the system
&pseudo information related to pseudopotentials
&functional specify density functional to be used
&rgrid parameters related to real space grid
&kgird parameters related to k-points for periodic systems
&tgrid parameters related to time evolution
&propagation specify a choice of the propagation method
&scf parameters related to ground state calculation
&emfield parameters of electric fields applied to the system
&linear_response magnitude of the distortion for linear response
&multiscale parameters related to coupled multiscale calculations of electron dynamics and light propagations
&analysis parameters related to output files
&hartree parameters related to Hartree potential calculation of isolated systems
&ewald parameters related to Ewald sum that appears in the ground state calculation of periodic systems
&atomic_coor Atomic coordinates can be written here

In Samples, we prepare six samples that cover typical calculations feasible by using SALMON. We prepare explanations for the input files that will help to prepare input files of your own interests.

Here we briefly explain the format of the namelist.

&namelist1
  variable1 = int_value
  variable2 = 'char_value'
 /
&namelist2
  variable1 = real8_value
  variable2 = int_value1, int_value2, int_value3
/

A block of namelists starts with &namelist line and ends with / line. Between two lines, descriptions of variables and their values appear. Note that many variables have their default values so that it is not necessary to give values for all variables. The description of the variables may appear at any position if they are between &namelist and /. Input files constitute of several blocks of namelists. The blocks can appear in any order.

Run SALMON

To run SALMON, the executable file of salmon.cpu (and salmon.mic if your system is the many-core machine) should be built from the source file of SALMON as described above. An input file inputfile.inp and pseudopotential files should also be prepared as mentioned above. In order to execute the calculation, for the single process environment, type the following command:

$ salmon.cpu < inputfile.inp > fileout.out

For the multiprocess environment, If the command to execute calculations using MPI is mpiexec', the calculation will start

$ mpiexec -n NPROC salmon.cpu < inputfile.inp > fileout.out

where NPROC is the number of MPI processes you want to use. For the many-core processor (e.g. intel-knl) environment, the execution command is

$ mpiexec.hydra -n NPROC salmon.mic < inputfile.inp > fileout.out

The execution command and the job submission procedure depends much on the local environment. We just summarize the general conditions to execute SALMON:

  • salmon runs in parallel environment using MPI.
  • executable files are prepared as /salmon/bin/salmon.cpu and/or /salmon/bin/salmon.mic in the standard build procedure.
  • to start calculations, inputfile.inp should be read through stdin.



Appendix

Additional options in configure.py script

Build using CMake for Singleprocess environment

If you want to build for the single process environment, please specify --disable-mpi.

 $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi

Manual specification of compiler variables

In executing configure.py, you may manually specify compiler and environment variables instead of specifying the architecture, for example:

$ python ../configure.py FC=mpiifort CC=mpiicc FFLAGS="-xAVX" CFLAGS="-restrict -xAVX"

Commandline switch Detail
-a ARCH, --arch=ARCH Target architecture
--enable-mpi, --disable-mpi enable/disable MPI parallelization.
---enable-scalapack, --disable-scalapack disable/disable computations with ScaLAPACK library
FC, FFLAGS User-defined Fortran Compiler, and the compiler options
FC, FFLAGS User-defined C Compiler, and the compiler options
---enable-scalapack, --disable-scalapack disable/disable computations with ScaLAPACK library


=== Build for the GCC/GFortran environemnt ===
  • For GCC/GFortran environemnt, specify:
$ python ../configure.py FC=gfortran CC=gcc FFLAG=-O3 CFLAG=-O3



Build with GNU Makefile

If CMake build fails in your environment, you can try Gnu Make for the build process.

First, enter to the makefile directory:

$ cd SALMON/makefiles

and you need to choose Makefile appropriately according to your environment. The available makefiles are

  • fujitsu
  • gnu
  • gnu-without-mpi
  • intel
  • intel-avx
  • intel-avx2
  • intel-knc
  • intel-knl
  • intel-without-mpi

The -without-mpi specifies the build for the single process environment. Execute make command with the platform specified makefile:

$ make -f Makefile.PLATFORM

The binary file is created in the directory SALMON/bin/.