Giter Club home page Giter Club logo

mukkelian / ether Goto Github PK

View Code? Open in Web Editor NEW
10.0 1.0 1.0 575 KB

Based on the classical lattice model (Heisenberg, XY, XYZ, etc.), code Ether has been developed to study the thermodynamics of ANY CRYSTAL SYSTEM by performing the basic Monte Carlo methods. Metropolis algorithm has been used to equate all the observables

License: GNU General Public License v2.0

Fortran 97.96% Shell 2.04%
monte-carlo vasp vesta exchange-algorithm metropolis-algorithm montecarlo-simulation overrelaxation-method xyz-model heisenberg-model

ether's Introduction

Ether

Based on the classical lattice model (Heisenberg, XY, XYZ, etc.), code Ether has been developed to study the thermodynamics of ANY CRYSTAL SYSTEM by performing the basic Monte Carlo methods. Metropolis algorithm has been used to equate all the observables.

Code Ether solves the given Hamiltonian H = J.SiSj - gmbMSi - SIA.(Si^2) -----(1)

or, H = Jxx.(SxiSxj) + Jyy.(SyiSyj) + Jzz.(SziSzj) - g.mb.(MxSx + MySy + MzSz)... -----(2)

where,

a is anisotrpy factor, a--> (a1, a2, a3) :: (on Jxx, on Jyy, on Jzz)

J is defined as exchang energy (unit meV) splited into Jxx, Jyy, Jzz components. Jxx = a1.J_value, Jyy = a2.J_value, Jzz = a3.J_value. J_value is a input variable, can be supplied in 'j_exchange' input file

S is spin vector and has Sx, Sy, Sz components.

SIA is single ion anisotropy vector (SIAx, SIAy, SIAz) in meV

M is magnetic field vector (unit Tesla) and has Mx, My, Mz components as well.

g is g-factor

mb is Bhor magneton (ev/T)

Note:: Always supplied 'J_value' values in unit of meV (milli electron volts). For example for 0.001 eV provide this value in Ether code as 1, code will automatically convert it into the meV. For classical Heisenberg hamiltonian, kindly put all a1, a2, a3 equal to 1 which represent Jxx=Jyy=Jzz.

Compile this ether.f90 by any FORTRAN compiler, for our case we have choosen gfortran

For the compilation, type the command same like given below into the terminal

gfortran ether.f90 -o ether

executable 'ether' will be created for running this program.

1. About 'input' file

In input file there are basic informations which you need to provide before running the program which are given below,

I ---> Ising/Heisenberg (I/M) model

20000 ---> MC steps

10000 ---> equilibration steps

100 2 2 ---> Temp(K) ==> final, initial, interval (for calculations in parameter, use temp (=KbT/J) from let say 0.001 to 2.00)

3 ---> no. of species present in the structure.vasp file

0.5 0 0 ---> Magnetic moment for species1, species2, species3.. and so on..

1 ---> no. of species to include

Ce ---> species symbols (repeat in same line for many species)

4 4 4 ---> Supercell size

.F. ---> for staggered magn. (optional)

c c c ---> boundary CLOSED/OPEN (c/o)

2 ---> for sampling (used to calculate the statistical error); NOTE :: you can increase it for correct result

50 ---> least phi angle (used to achieve the equilibrium spin state, phi angle will vary within this range)

50 ---> MC step interval to calculate observables

.F. 5 5 0 ---> Magnetic field (logic, Mx, My, Mz)

2 ---> g_factor

.T. 1 1 1 ---> SIA logic, SIAx, SIAy, SIAz (all in meV)

.F. 0.0 ---> Parameter logic, J value (meV) :: temp. will be in KbT/J then

2. About 'j_exchange' file

4 ---> no. of distinct nbd(N)

Ce ce 1.0 1 1 1 4.16970 (for N=1) ! ith ion, jth ion, J_value, anisotropy(a1, a2, a3), bond length.

ce Ce 1.0 1 1 1 7.22213 (for N=2)

Ce Ce 1.0 1 1 1 4.08267 (for N=3)

ce ce 1.0 1 1 1 7.57543 (for N=4)

#note: small/large caps are automatically considered into the program. For anisotropy see (a1, a2, a3) in equation no.2. a can be set from 0 <--> 1 and will considered as like 0 <--> 100 %

3. About structure.vasp file

'structure.vasp' is an input structure file used to perform the Density Functional Theory (DFT) calculation using VASP program ( https://www.vasp.at/ ). For the making structure file use VESTA tool (https://jp-minerals.org/vesta/en/download.html) and export it into the file name 'structure.vasp'.

Please always export the file into cartesian coordinates.

Contact me if somebody face problem in understanding the input files.

Mukesh Kumar Sharma email ID:: [email protected]

If you find this code helpful in your research work kindly cite this code. New collaborations will be welcomed.

4. Output section

Along with all data files, there are two directories (_data, _spin) which will be generated during execution.

4.1 About _spin directory

It contains the final spin configuration files for each temperature. File is named as "sp***K.dat", K is referred as Kelvin.

To visualize these files, please install xcrysden software (http://www.xcrysden.org/Download.html). Please follow the given step to visualize the spin configuration as well as lattice distribution.

Step 1. open xcrysden software by typing ./xcrysden in terminal.

Step 2. go to the file --> Open structure --> Open XSF (Xcrysdgen structure file) Step 3. Select the desired sp***K.dat file

Step 4. At this point, you can see the lattice arrangement. Now, press 'f' button then the 'Shift + f' button combination. After pressing the 'Shift + f' you will have another dialogue box, in that there is an option to change the 'Length factor'. Change it by 4 or 5 or any number you want. You will have the spin configuration for the selected temperature.

4.2 About _data directory

In this directory data files related to energy, magnetization, nbd (neighborhood), and initial spin configuration are present.

For the basic plot where information of specific heat, susceptibility, magnetization, energy/site, just type 'gnuplot graph.sh' in the terminal, the output file named as fig1.png will be generated.

please always check the nbd.dat file to make sure that code is taking the right nbd's for the selected lattice point. To do this open the initial_spin_conf.dat file into the Xcrysden and this 'nbd.dat' file in gedit/Notepad editor and check and compare the nbd information present in the nbd.dat file. (by clicking the Atom info. in Xcrysden you will have the lattice point ID on the screen, by this you can check the ID's of nbd and compare it from the 'nbd.dat' file)

ether's People

Contributors

mukkelian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

hwchen2017

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.