input file - bertdupe/Matjes GitHub Wiki

This page contains the input parameters as set in the input file.

It is split up into the following sections:

Simulation type

The type of the simulation can be chosen using the keyword simulation.

The possible values are:

  • magnet-dynamics Does magnetization-dynamics (input)
  • metropolis: Metropolis Monte-Carlo (input)
  • parallel-tempering: Parallel-tempering (input)
  • minimization: Minimization of the magnetization lattice (input)
  • minimize_infdamp: Minimization of the magnetization lattice using the infinite damping method (input)
  • GNEB: geodesic nudged elastic band method (input)
  • tight-binding: Evaluation of static properties of a tight-binding model (input)
  • molecular_dynamics: Molecular dynamics (input)
  • llg_diag: Calculate transition matrix of LLG

Only one simulation type can be used at a time.

Hamiltonian setup

This section summarizes the input functionalities to create the Hamiltonian.

Hamiltonian implementation

One can choose between the different implementations of the Hamiltonian and the fourier-based Hamiltonian with the keywords Hamiltonian_mode and Hamiltonian_fft_mode. For the Hamiltonian in normal space 5 distinct modes exist:

  1. Sparse MKL csr matrix storage
  2. Eigen sparse matrix storage with additional saving of the transpose for faster evaluation
  3. Eigen sparse matrix storage
  4. Dense matrix using BLAS
  5. Dense matrix using intrinsic functions
  6. Cuda (only for full evaluation)

The dense case should always work irrespective of external libraries, but a sparse storage scheme is much faster and thus should always be used for production. The Sparse MKL implementation is preferable in the case of evaluations of the entire system (magnetization-dynamics), while the Eigen case works also for evaluation of energies caused by single size as necessary in case of Monte-Carlo based calculations.

The default values is always set depending on the environment variables.

For the Hamiltonian in fourier space 2 modes exist:

  1. FFTW3
  2. cuFFT cuda implementation

There is no implementation which works without an external library, however this only is tested if a fourier-space Hamiltonian is actually used. If no fourier-space Hamiltonian is considered, this flag can be ignored.

Hence, using the default input should be totally fine, however this input:

Hamiltonian_mode 2
Hamiltonian_fft_mode 1

would enforce the Eigen sparse matrix storage with additional saving of the transpose for the normal space Hamiltonian and the FFTW implementation for the fourier=space Hamiltonian.

Hamiltonian choice

The input parameters to define the magnetic Hamiltonian described in more detail here.

The following gives an overview of the inputs:

M_biq  #biquadratic
1 1 1 -0.2d-3 #between atoms 1 and 1, shell 1, amplitude in eV

M_4spin #4spin interaction
1 -1.05d-3  #atom type 1, amplitude in eV

magnetic_J #isotropic exchange
1 1 1 5.7d-3     #between atoms 1 and 1, shell 1, amplitude in eV  <p>
1 1 2 -0.84d-3     #between atoms 1 and 1, shell 2, amplitude in eV,etc

MT_J #alpha T^2 mi.mj
1 1 1  1.0d-3

ME_sym #symmetric magnetoelectric coupling
1 1 1 0.0 #between atoms 1 and 1, shell 1, amplitude in eV

ME_antisym #antisymmetric magnetoelectric coupling
1 1 1 1.0d-3 #between atoms 1 and 1, shell 1, amplitude in eV

magnetic_anisotropy #anisotropy
0.0  0.0 -0.8d-3 #atom type 1, eanx,eany,eanz in eV

magnetic_D #DMI 
1 1 2 1 1.8d-3 #between atoms 1 and 1, mediated by 2, shell 1, amplitude in eV

enable_zeeman T  #logical variable which enables the zeeman-exchange irrespective of `H_ext` 

The Hamiltonian inputs for the tight-binding part are described in more detail here.

Lattice parameters

This section summarizes the input functionalities to define the lattice parameters such as unit-cell, number of repetitions, and periodicity.

The input neccessary to setup the lattice geometry is described in more detail here.

The keywords are:

Nsize 10 10 1  #repetition of supercell
Periodic_log T T F  #periodic boundary conditions
alat 1.0 1.0 1.0  #lattice scale in nm

lattice    #lattice vectors
0.5 -0.86602540378 0.0
0.5 0.86602540378 0.0
0.0 0.0 1.0

atomtypes  2  #number of atom-types
Fe  2.3 0.0 0.0 F 1   #atom type: (name, magnetic moment (in muB), charge, mass (atomic mass unit), displacement, number TB-orb.
Ag  0.0 1.0 1.0 T 2

atoms 2    #number of atoms
Fe   0.0 0.0 0.0     # (atom-type + positions)
Ag   0.5 0.5 0.0

It is possible to manually enable the initialization of the different order parameters through:

enable_H F   #set T to enable magnetic field order parameter
enable_E F   #set T to enable electric field order parameter
enable_T F   #set T to enable temperature order parameter
enable_M F   #set T to enable magnetic moment order parameter
enable_u F   #set T to enable displacement order parameter

This might be necessary in case of time-dependent external fields.

Simulation mode specifications

This section summarizes the input parameters used in the respective simulation mode.

Tight-binding

The tight-binding input parameters are described in more detail here

Magnetization-dynamics

integration 1               #(1: simple integration 2:Heun  3: SIB )
timestep 1.0                #full timestep (fs)
duration 10000              #number of timestep interations
damping 0.0                 #damping de la dynamique no units
resolution 500 500          #résolution des images Povray (ne sert plus)
torque 0.0000               #torque SOT field like no units
damptorque 0.0              #torque SOT damping-like no units
Ipol 0.0 0.0 0.0            #polarisation du courant
adia 0.0                    #torque adiabatique Slonceswki (dépend de gradient de M) no units
nonadia 0.0                 #torque non-adiabatique Slonceswki (dépend de gradient de M) no units
stmtorque .F. 1.0 1.0 0.0.  #torque SOT créé par STM (True/fasle tip radius / tip height / strength)
Ffield .F.                  #calcul la densité de distribution de la force
STMtemp .F.                 #calcul la température créée par la pointe
Efreq 10                    #fréquence d'écriture en dynamique (in units of duration)
print_Econt .F.             #write out the energy decomposition on different Hamiltonian terms during dynamic steps (depends on `Efreq` and `energy_detail`)
update_time .false.         #pas de temps adaptatif
discretization 15           #nombre de point par période
calc_topo  F                #enable/disable calculation of skyrmion number
update_time F.              #enable/disable the time step to change as a function of simulation step
discretization 15           #number of points that will describe one precession (t=2.0d0*pi*hbar/max_B/discretization)

Infinite damping minimization

  • convergence_criteria 1.0d-10 dimensionless convergence criteria on max torque

GNEB

Input parameters choosing the initial magnetic configuration

Parameters which determine from which files the initial configurations are read

  • momfile_i 'momfile_i' #File name for initial magn. configuration, takes precedence over restartfile_if
  • momfile_f 'momfile_f' #File name for final magn. configuration, takes precedence over restartfile_if
  • restartfile_if 'nofile' #Name of the file with initial and final states needed to restart energy minimization calculations (adding eg. "_1.dat" for the initial image)
  • restartfile_path 'nofile' #Name of the file with the path needed to restart GNEB calculations (adding eg. "_2.dat" for respective image)

Parameters which determine how the initial configuration is prepared

  • gnebinit_read_path F #Reads the magnetic input textures for the entire path using the restartfile_path-parameter and disables the alternative geodesic interpolation to initialize the state
  • gnebinit_read_outer T #Reads the initial/final magnetic state using restartfile_if
  • gnebinit_min_type 1 #Sets the method to initially minimize the initial/final GNEB-image (0: no minimization, 1: minimize_infdamp, 2: minimize)

Furthermore, there is the legacy input variable initpath which sets the previous 3 parameters prior to processing their input

  • initpath -1 #Legacy input variable which controls (gnebinit_read_path,gnebinit_read_outer,gnebinit_min_type) as following: 1:(F,T,0), 2:(T,T,2), 3:(T,T,1)

Other GNEB input

  • amp_rnd 0.0 #coefficient that randomizes the initial configurations (0 no randomization - 1 fully random)
  • amp_rnd_path 0.0 #coefficient that randomizes the initial path (0 no randomization - 1 fully random)
  • min_ftol 1.0d-8 #tolerance for the convergence of the simulation
  • mintraj_step 500 #Save configuration every 'mintraj_step' step during energy minimization
  • vpo_dt 0.01d0 #VPO timestep
  • vpo_mass 1d0 #VPO mass
  • spring 1.0d0 #spring constant
  • mep_ftol 1.0d-5 #tolerance on gneb force
  • mep_ftol_ci 1.0d-8 #tolerance on ci-gneb force
  • mep_itrmax default very large #max number of iterations for ci-gneb and gneb, respectively * meptraj_step 10 #print out output files every meptraj_step steps
  • do_gneb_simple .F. #do GNEB calculations * do_gneb_ci .T. #do ci-GNEB calculations (only ci-gneb if gneb is F)
  • do_norm_rx 'Y' #normalize reaction coordinate
  • en_zero 'I' #Level of zero energy. 'I' - initial state; 'F' - final state; 'N' - 0.0
  • nim 10 #number of images
  • sample_num 500 #number of points in energy interpolation

Notice that the minimization parameters may affect the GNEB-calculation, since the first and last image may first be minimized using either minimize or minimize_infdamp (gnebinit_min_type) with its parameters.

Minimization

  • steps very large number #maxmimal number of steps to try to satisfy convergence criterium
  • masse 1.0d0 #mass used in minimize
  • timestep 0.1d0 #timestep used in minimize
  • min_Efreq 100 #frequency of writing out energy and torque information
  • convergence_criteria 1.0d-6 #torque convergence criteria

Metropolis

  • Tini 1.0d0 !lower bound temperature (K)
  • Tfin 30.0d0 !upper bound temperature (K)
  • n_Tsteps 1 !number of MC simulations at different T, uses Tini and Tfin
  • Total_MC_Steps 2000 !total number of MC steps per temperature
  • T_relax 20 !number of thermalization steps (will be T_relax*N)
  • T_auto 5 !measure steps occur every T_auto autocorrelation steps
  • tracker .F. !tracks skyrmions
  • ising .F. !Ising model: only up and down orientations
  • do_fluct .T. !for fluctuations
  • fluct_direction 0.0 1.0 0.0 #direction of first neighbour to consider when computing autocorrelations

Molecular Dynamics

  • phonon_harmonic

    1 1 1 1.0d-3 !interaction between atoms 1 and 1, shell 1, amplitude in eV/nm^2 (only if read from input)

OR

  • force_tensor

    1 1 1 1.0d-3 0.0d0 0.0d0 0.0d0 1.0d-3 0.0d0 0.0d0 0.0d0 1.0d-3 1.0 0.0 0.0 #1 1 1 Fxx Fxy Fxz Fyx Fyy Fyz Fzx Fzy Fzz Rx Ry Rz (+does symmetry operations)

  • set_ASR T #enable acoustic sum rule

  • damp_Fluid 0.001 #damping rate in fs^-1, needed for Langevin dynamics

Control of the modes

This section provides the input to specify the initialization of the different, externally controlled order parameters.

Constant initialization

The following flags allow to initialize some modes to constant values (and for non-zero values thus enable the usage of the particular mode):

H_ext 0.0 0.0 0.0         #Constant external magnetic field [Tesla] in Cartesian coordinates
H_ext_lat 0.0 0.0 1.0 0.0 #Constant external magnetic field, (1:3) direction in real-space lattice parameters, (4) magnitude in T 
E_ext 0.0 0.0 0.0         #Constant external electric field in V/nm
E_ext_lat 0.0 0.0 1.0 0.0 #Constant external electric field, (1:3) direction in real-space lattice parameters, (4) magnitude in V/nm 
Tini 1.0d0                #(Initial) Temperature in Kelvin 
Tfin 1.0d0                #Final Temperature in Kelvin if multiple Temperatures are used
n_Tsteps` 10              #Number of step from initial to final Temperature considered in simulations where multiple Temperatures are considered

More complicated specifications can be be initialized using the init.config-file as described here.

Furthermore, mode input files can be read from files in using the order parameter name (magnetic, Efield, Bfield, temperature, phonon) combined with the suffix .inp.

Excitations

Alternatively, in time-dependent simulations (eg. magnetization-dynamics) some external modes can be tuned according to predefined parameters.

This possibility is described here.

In the following some obsolete input for the excitation input is stated:

  • num_excitations 2 total number of excitations
  • EMwave_1 T Efield 0.0 0.0 0.0 0.0 0.0 0.0 0 0 time function (heavyside_i, rampe_i, TPulse_i, EMwave_i) where i is the excitation index, boolean (T/F), order parameter name (Bfield, Efield, temperature), initial_value(3 or 1), end_value(3 or 1), t_start(fs) t_end(fs). For EMwave and Tpulse only time function, T/F and order parameter are used.
  • TPulse_2 T temperature 0.0 0.0 0.0 0.0
  • shape plane 25.0 25.0 0.0 10.0 spatial shape (square, plane, cylinder,gaussian), centre(x y z), cutoff distance

Temperature pulse

in default form, the pulse has the following form:

with with t0=texp+tstart-3σ in default or t0=texp-3σ in exponential

t1=texp+tstart in default or t1=texp+3σ in exponential,

tM=texp,

tm=tfrac

  • T0 1.0 initial temperature (K)
  • t_start_pulse 0 t_0, controls start of pulse in default form (integer, number of timesteps)
  • alpha 1.0d0 dimensionless factor used to renormalize to T_c
  • I_exp 20.0d0 I_0, amplitude of pulse (K) (exponential prefactor)
  • I_over_x 5 I_1, in default form this is used as coefficient for cooling phase
  • t_exp 16 controls the start time of the pulse (fs). In exponential form, pulse starts for t > t_exp - 3sigma and ends for t> t_exp + 3sigma
  • t_frac 19.62 t_m in default form (fs), used in default form for cooling
  • expo 0.47 k, exponent of inverse time polynomial during cooling in default form
  • sigma 5 mean width of pulse (fs), also controls time when pulse starts
  • t_cut_pulse 2500 in default form, controls time when cooling stops (fs) when time > t_cut_pulse+t_start_pulse
  • forme exponential will be default if unspecifed

EM wave

The EM wave has the form

E x,y,z(t) = E0 cos(ωl t ) exp(- (t-t0)/τ )2

with

E0 = α I0 the maximum amplitude in V/nm and

ωl = 2πc / λl the temporal frequency of the laser in fs-1. c is the speed of light in a vacuum (nm/fs) and λl is the spatial wavelength of the laser (nm).

  • t_start -1 -t_start will be used as start of wave if t_start < 0 (fs)
  • t_cut -20 -t_cut will be used as end of wave if t_cut < 0 (fs)
  • lambda_l 10.0d0 spatial wavelength of the laser (nm)
  • Tau 100.0d0 controls damping of the gaussian enveloppe (fs), time width of pulse will be 6*Tau centred on t_0 if t_start > 0, t_cut > 0, otherwise it will be t_cut-t_start
  • I_0 1.0d7 amplitude of pulse in W.cm-2, the code will convert back to V/nm
  • t_0 7.0d0 time shift of pulse (fs)

input/output

  • gra_topo .F trace la distribution de charge topologique
  • gra_fft .F calcul la FFT
  • gra_log .F calcul les fichiers Povray et les fichiers de configurations (Mx,My,Mz)
  • gra_Beff .F. outputs local effective field at the frequency gra_freq
  • gra_freq 100. fréquence d'écriture des fichiers (ici tout les 100 itérations)
  • CalTheta .F. calcul les fichier de configuration en fonction de theta et phi
  • Energy_Distrib .F. calcul le densité de distribution de l'énergie
  • energy_detail .F. keeps more detail about the origin of the Hamiltonian energy output (e.g. for Energy_Distrib)

Random number generator

By default the random number generator is the GNU rnd. Two other random number generators can be chosen:

  • the internal mtprng which can be used with the preprocessor flag -DCPP_MRG
  • the mkl random number generator which can be used if the MKL libraries are correctly linked. In both cases, the random numbers are generated at the beginning of each step and can be printed by setting print_rnd to True. When both are chosen by the user, some tags in the code can change between the 2
  • rnd_num_type can be 1 for internal random numbers and 2 for the mkl.

if the MKL are chosen, more options can be chosen

  • vsl_method is VSL_RNG_METHOD_GAUSSIAN_BOXMULLER by default
  • vsl_brng is VSL_BRNG_MT19937 by default if you want to know more, you can go to the website of the mkl libraries.
⚠️ **GitHub.com Fallback** ⚠️