+ All Categories
Home > Documents > VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . ....

VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . ....

Date post: 22-Mar-2020
Category:
Upload: others
View: 22 times
Download: 0 times
Share this document with a friend
55
VAMPIRE User Manual
Transcript
Page 1: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

VAMPIREUser Manual

VAMPIREUser ManualSoftware version 50

Manual written by Richard F L Evans and Andreas Biternas

Copyright copy 2018 Department of Physics The University of York Heslington YorkYO10 5DD All rights Reserved

The VAMPIRE software package is principally developed andmaintained by RichardF L Evans Code contributors Andrea Meo Samuel Morris Matthew EllisOscar David Arbelaacuteez Echeverri Weijia Fan Phanwadee Chureemart Rory PondSarah Jenkins Joe Barker Thomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye

The entire VAMPIRE package is available under the GNU General Public LicenseYou are free to use vampire for personal academic and commercial researchand to modify the source code as you wish For details of the licence check theREADME file in the source code or consult wwwgnuorgcopyleftgplhtml

The VAMPIRE source code is available fromwwwgithubcomrichard-evansvampireThis manual software features tutorials and more information is available fromthe VAMPIRE webpage at httpvampireyorkacuk

1

Table of Contents

Table of Contents 2

Preface 9Introducing VAMPIRE 9

1 Background theory 10Atomistic Spin Models 10The spin Hamiltonian 11Spin Dynamics 11Citations 12

2 Installation 14System Requirements 14Binary installation 14Compiling from source 15

Compiling on Linux 15Compiling on Mac OSX 15Compiling on Windows 15Compiling for ARCHER 16Compiling for GPU 16

3 Running the code 17Running on UnixLinux and macOS 17Running on Windows 17Log file 17

4 Getting Started 19Feature Overview 19Input and Output Files 20Sample input files 20

2

5 Unit Cell Files 22The unit cell file format 22Example Simple Cubic System 25

6 Input File Command Reference 26System Generation 26

createfull 26createcube 26createcylinder 26createellipsoid 26createsphere 26createtruncated-octahedron 26createparticle 27createparticle-array 27createvoronoi-film 27createvoronoi-size-variance 27createvoronoi-row-offset 27createvoronoi-random-seed 27createvoronoi-rounded-grains 28createvoronoi-rounded-grains-area 28createparticle-parity 28createcrystal-structure 28createsingle-spin 28createperiodic-boundaries-x 28createperiodic-boundaries-y 28createperiodic-boundaries-z 28createselect-material-by-height 28createselect-material-by-geometry 28createfill-core-shell-particles 28createinterfacial-roughness 29creatematerial-interfacial-roughness 29createinterfacial-roughness-random-seed 29createinterfacial-roughness-number-of-seed-points 29createinterfacial-roughness-type 29createinterfacial-roughness-seed-radius 29createinterfacial-roughness-seed-radius-variance 29createinterfacial-roughness-mean-height 29createinterfacial-roughness-maximum-height 29

3

createinterfacial-roughness-height-field-resolution 29createalloy-random-seed 29creategrain-random-seed 29createdilution-random-seed 30createintermixing-random-seed 30

System dimensions 30dimensionsunit-cell-size 30dimensionsunit-cell-size-x 30dimensionsunit-cell-size-y 30dimensionsunit-cell-size-z 30dimensionssystem-size 30dimensionssystem-size-x 30dimensionssystem-size-y 30dimensionssystem-size-z 30dimensionsparticle-size 30dimensionsparticle-spacing 30dimensionsparticle-shape-factor-x 31dimensionsparticle-shape-factor-y 31dimensionsparticle-shape-factor-z 31dimensionsparticle-array-offset-x 31dimensionsparticle-array-offset-y 31dimensionsmacro-cell-size 31

Anisotropy calculation 31anisotropysurface-anisotropy-threshold 31anisotropysurface-anisotropy-nearest-neighbour-range 32anisotropyenable-bulk-neel-anisotropy 32

Dipole field calculation 32dipolesolver 32

Simulation Control 32simintegrator 32simprogram 33simenable-dipole-fields 34simenable-fmr-field 34simenable-fast-dipole-fields 34simdipole-field-update-rate 34simtime-step 34simtotal-time-steps 34simloop-time-steps 34

4

simtime-steps-increment 35simequilibration-time-steps 35simsimulation-cycles 35simmaximum-temperature 35simminimum-temperature 35simequilibration-temperature 35simtemperature 35simtemperature-increment 35simcooling-time 35simlaser-pulse-temporal-profile 35simlaser-pulse-time 35simlaser-pulse-power 35simsecond-laser-pulse-time 35simsecond-laser-pulse-power 35simsecond-laser-pulse-maximum-temperature 35simsecond-laser-pulse-delay-time 35simtwo-temperature-heat-sink-coupling 35simtwo-temperature-electron-heat-capacity 35simtwo-temperature-phonon-heat-capacity 36simtwo-temperature-electron-phonon-coupling 36simcooling-function 36simapplied-field-strength 36simmaximum-applied-field-strength 36simequilibration-applied-field-strength 36simapplied-field-strength-increment 36simapplied-field-angle-theta 36simapplied-field-angle-phi 36simapplied-field-unit-vector 36simdemagnetisation-factor 36simintegrator-random-seed 36simconstraint-rotation-update 37simconstraint-angle-theta 37simconstraint-angle-theta-minimum 37simconstraint-angle-theta-maximum 37simconstraint-angle-theta-increment 37simconstraint-angle-phi 37simconstraint-angle-phi-minimum 37simconstraint-angle-phi-maximum 37

5

simconstraint-angle-phi-increment 37simmonte-carlo-algorithm 37simcheckpoint 37simpreconditioning-steps 37

Data output 38outputtime-steps 38outputreal-time 38outputtemperature 38outputapplied-field-strength 38outputapplied-field-unit-vector 38outputapplied-field-alignment 38outputmaterial-applied-field-alignment 38outputmagnetisation 39outputmagnetisation-length 39outputmean-magnetisation-length 39outputmean-magnetisation 39outputmaterial-magnetisation 39outputmaterial-mean-magnetisation-length 39outputmaterial-mean-magnetisation 39outputtotal-torque 39outputmean-total-torque 40outputconstraint-phi 40outputconstraint-theta 40outputmaterial-mean-torque 40outputmean-susceptibility 40outputmean-material-susceptibility 41outputelectron-temperature 41outputphonon-temperature 41outputtotal-energy 41outputmean-total-energy 41outputanisotropy-energy 41outputmean-anisotropy-energy 41outputexchange-energy 41outputmean-exchange-energy 41outputapplied-field-energy 41outputmean-applied-field-energy 41outputmagnetostatic-energy 41outputmean-magnetostatic-energy 41

6

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 2: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

VAMPIREUser ManualSoftware version 50

Manual written by Richard F L Evans and Andreas Biternas

Copyright copy 2018 Department of Physics The University of York Heslington YorkYO10 5DD All rights Reserved

The VAMPIRE software package is principally developed andmaintained by RichardF L Evans Code contributors Andrea Meo Samuel Morris Matthew EllisOscar David Arbelaacuteez Echeverri Weijia Fan Phanwadee Chureemart Rory PondSarah Jenkins Joe Barker Thomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye

The entire VAMPIRE package is available under the GNU General Public LicenseYou are free to use vampire for personal academic and commercial researchand to modify the source code as you wish For details of the licence check theREADME file in the source code or consult wwwgnuorgcopyleftgplhtml

The VAMPIRE source code is available fromwwwgithubcomrichard-evansvampireThis manual software features tutorials and more information is available fromthe VAMPIRE webpage at httpvampireyorkacuk

1

Table of Contents

Table of Contents 2

Preface 9Introducing VAMPIRE 9

1 Background theory 10Atomistic Spin Models 10The spin Hamiltonian 11Spin Dynamics 11Citations 12

2 Installation 14System Requirements 14Binary installation 14Compiling from source 15

Compiling on Linux 15Compiling on Mac OSX 15Compiling on Windows 15Compiling for ARCHER 16Compiling for GPU 16

3 Running the code 17Running on UnixLinux and macOS 17Running on Windows 17Log file 17

4 Getting Started 19Feature Overview 19Input and Output Files 20Sample input files 20

2

5 Unit Cell Files 22The unit cell file format 22Example Simple Cubic System 25

6 Input File Command Reference 26System Generation 26

createfull 26createcube 26createcylinder 26createellipsoid 26createsphere 26createtruncated-octahedron 26createparticle 27createparticle-array 27createvoronoi-film 27createvoronoi-size-variance 27createvoronoi-row-offset 27createvoronoi-random-seed 27createvoronoi-rounded-grains 28createvoronoi-rounded-grains-area 28createparticle-parity 28createcrystal-structure 28createsingle-spin 28createperiodic-boundaries-x 28createperiodic-boundaries-y 28createperiodic-boundaries-z 28createselect-material-by-height 28createselect-material-by-geometry 28createfill-core-shell-particles 28createinterfacial-roughness 29creatematerial-interfacial-roughness 29createinterfacial-roughness-random-seed 29createinterfacial-roughness-number-of-seed-points 29createinterfacial-roughness-type 29createinterfacial-roughness-seed-radius 29createinterfacial-roughness-seed-radius-variance 29createinterfacial-roughness-mean-height 29createinterfacial-roughness-maximum-height 29

3

createinterfacial-roughness-height-field-resolution 29createalloy-random-seed 29creategrain-random-seed 29createdilution-random-seed 30createintermixing-random-seed 30

System dimensions 30dimensionsunit-cell-size 30dimensionsunit-cell-size-x 30dimensionsunit-cell-size-y 30dimensionsunit-cell-size-z 30dimensionssystem-size 30dimensionssystem-size-x 30dimensionssystem-size-y 30dimensionssystem-size-z 30dimensionsparticle-size 30dimensionsparticle-spacing 30dimensionsparticle-shape-factor-x 31dimensionsparticle-shape-factor-y 31dimensionsparticle-shape-factor-z 31dimensionsparticle-array-offset-x 31dimensionsparticle-array-offset-y 31dimensionsmacro-cell-size 31

Anisotropy calculation 31anisotropysurface-anisotropy-threshold 31anisotropysurface-anisotropy-nearest-neighbour-range 32anisotropyenable-bulk-neel-anisotropy 32

Dipole field calculation 32dipolesolver 32

Simulation Control 32simintegrator 32simprogram 33simenable-dipole-fields 34simenable-fmr-field 34simenable-fast-dipole-fields 34simdipole-field-update-rate 34simtime-step 34simtotal-time-steps 34simloop-time-steps 34

4

simtime-steps-increment 35simequilibration-time-steps 35simsimulation-cycles 35simmaximum-temperature 35simminimum-temperature 35simequilibration-temperature 35simtemperature 35simtemperature-increment 35simcooling-time 35simlaser-pulse-temporal-profile 35simlaser-pulse-time 35simlaser-pulse-power 35simsecond-laser-pulse-time 35simsecond-laser-pulse-power 35simsecond-laser-pulse-maximum-temperature 35simsecond-laser-pulse-delay-time 35simtwo-temperature-heat-sink-coupling 35simtwo-temperature-electron-heat-capacity 35simtwo-temperature-phonon-heat-capacity 36simtwo-temperature-electron-phonon-coupling 36simcooling-function 36simapplied-field-strength 36simmaximum-applied-field-strength 36simequilibration-applied-field-strength 36simapplied-field-strength-increment 36simapplied-field-angle-theta 36simapplied-field-angle-phi 36simapplied-field-unit-vector 36simdemagnetisation-factor 36simintegrator-random-seed 36simconstraint-rotation-update 37simconstraint-angle-theta 37simconstraint-angle-theta-minimum 37simconstraint-angle-theta-maximum 37simconstraint-angle-theta-increment 37simconstraint-angle-phi 37simconstraint-angle-phi-minimum 37simconstraint-angle-phi-maximum 37

5

simconstraint-angle-phi-increment 37simmonte-carlo-algorithm 37simcheckpoint 37simpreconditioning-steps 37

Data output 38outputtime-steps 38outputreal-time 38outputtemperature 38outputapplied-field-strength 38outputapplied-field-unit-vector 38outputapplied-field-alignment 38outputmaterial-applied-field-alignment 38outputmagnetisation 39outputmagnetisation-length 39outputmean-magnetisation-length 39outputmean-magnetisation 39outputmaterial-magnetisation 39outputmaterial-mean-magnetisation-length 39outputmaterial-mean-magnetisation 39outputtotal-torque 39outputmean-total-torque 40outputconstraint-phi 40outputconstraint-theta 40outputmaterial-mean-torque 40outputmean-susceptibility 40outputmean-material-susceptibility 41outputelectron-temperature 41outputphonon-temperature 41outputtotal-energy 41outputmean-total-energy 41outputanisotropy-energy 41outputmean-anisotropy-energy 41outputexchange-energy 41outputmean-exchange-energy 41outputapplied-field-energy 41outputmean-applied-field-energy 41outputmagnetostatic-energy 41outputmean-magnetostatic-energy 41

6

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 3: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

Table of Contents

Table of Contents 2

Preface 9Introducing VAMPIRE 9

1 Background theory 10Atomistic Spin Models 10The spin Hamiltonian 11Spin Dynamics 11Citations 12

2 Installation 14System Requirements 14Binary installation 14Compiling from source 15

Compiling on Linux 15Compiling on Mac OSX 15Compiling on Windows 15Compiling for ARCHER 16Compiling for GPU 16

3 Running the code 17Running on UnixLinux and macOS 17Running on Windows 17Log file 17

4 Getting Started 19Feature Overview 19Input and Output Files 20Sample input files 20

2

5 Unit Cell Files 22The unit cell file format 22Example Simple Cubic System 25

6 Input File Command Reference 26System Generation 26

createfull 26createcube 26createcylinder 26createellipsoid 26createsphere 26createtruncated-octahedron 26createparticle 27createparticle-array 27createvoronoi-film 27createvoronoi-size-variance 27createvoronoi-row-offset 27createvoronoi-random-seed 27createvoronoi-rounded-grains 28createvoronoi-rounded-grains-area 28createparticle-parity 28createcrystal-structure 28createsingle-spin 28createperiodic-boundaries-x 28createperiodic-boundaries-y 28createperiodic-boundaries-z 28createselect-material-by-height 28createselect-material-by-geometry 28createfill-core-shell-particles 28createinterfacial-roughness 29creatematerial-interfacial-roughness 29createinterfacial-roughness-random-seed 29createinterfacial-roughness-number-of-seed-points 29createinterfacial-roughness-type 29createinterfacial-roughness-seed-radius 29createinterfacial-roughness-seed-radius-variance 29createinterfacial-roughness-mean-height 29createinterfacial-roughness-maximum-height 29

3

createinterfacial-roughness-height-field-resolution 29createalloy-random-seed 29creategrain-random-seed 29createdilution-random-seed 30createintermixing-random-seed 30

System dimensions 30dimensionsunit-cell-size 30dimensionsunit-cell-size-x 30dimensionsunit-cell-size-y 30dimensionsunit-cell-size-z 30dimensionssystem-size 30dimensionssystem-size-x 30dimensionssystem-size-y 30dimensionssystem-size-z 30dimensionsparticle-size 30dimensionsparticle-spacing 30dimensionsparticle-shape-factor-x 31dimensionsparticle-shape-factor-y 31dimensionsparticle-shape-factor-z 31dimensionsparticle-array-offset-x 31dimensionsparticle-array-offset-y 31dimensionsmacro-cell-size 31

Anisotropy calculation 31anisotropysurface-anisotropy-threshold 31anisotropysurface-anisotropy-nearest-neighbour-range 32anisotropyenable-bulk-neel-anisotropy 32

Dipole field calculation 32dipolesolver 32

Simulation Control 32simintegrator 32simprogram 33simenable-dipole-fields 34simenable-fmr-field 34simenable-fast-dipole-fields 34simdipole-field-update-rate 34simtime-step 34simtotal-time-steps 34simloop-time-steps 34

4

simtime-steps-increment 35simequilibration-time-steps 35simsimulation-cycles 35simmaximum-temperature 35simminimum-temperature 35simequilibration-temperature 35simtemperature 35simtemperature-increment 35simcooling-time 35simlaser-pulse-temporal-profile 35simlaser-pulse-time 35simlaser-pulse-power 35simsecond-laser-pulse-time 35simsecond-laser-pulse-power 35simsecond-laser-pulse-maximum-temperature 35simsecond-laser-pulse-delay-time 35simtwo-temperature-heat-sink-coupling 35simtwo-temperature-electron-heat-capacity 35simtwo-temperature-phonon-heat-capacity 36simtwo-temperature-electron-phonon-coupling 36simcooling-function 36simapplied-field-strength 36simmaximum-applied-field-strength 36simequilibration-applied-field-strength 36simapplied-field-strength-increment 36simapplied-field-angle-theta 36simapplied-field-angle-phi 36simapplied-field-unit-vector 36simdemagnetisation-factor 36simintegrator-random-seed 36simconstraint-rotation-update 37simconstraint-angle-theta 37simconstraint-angle-theta-minimum 37simconstraint-angle-theta-maximum 37simconstraint-angle-theta-increment 37simconstraint-angle-phi 37simconstraint-angle-phi-minimum 37simconstraint-angle-phi-maximum 37

5

simconstraint-angle-phi-increment 37simmonte-carlo-algorithm 37simcheckpoint 37simpreconditioning-steps 37

Data output 38outputtime-steps 38outputreal-time 38outputtemperature 38outputapplied-field-strength 38outputapplied-field-unit-vector 38outputapplied-field-alignment 38outputmaterial-applied-field-alignment 38outputmagnetisation 39outputmagnetisation-length 39outputmean-magnetisation-length 39outputmean-magnetisation 39outputmaterial-magnetisation 39outputmaterial-mean-magnetisation-length 39outputmaterial-mean-magnetisation 39outputtotal-torque 39outputmean-total-torque 40outputconstraint-phi 40outputconstraint-theta 40outputmaterial-mean-torque 40outputmean-susceptibility 40outputmean-material-susceptibility 41outputelectron-temperature 41outputphonon-temperature 41outputtotal-energy 41outputmean-total-energy 41outputanisotropy-energy 41outputmean-anisotropy-energy 41outputexchange-energy 41outputmean-exchange-energy 41outputapplied-field-energy 41outputmean-applied-field-energy 41outputmagnetostatic-energy 41outputmean-magnetostatic-energy 41

6

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 4: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

5 Unit Cell Files 22The unit cell file format 22Example Simple Cubic System 25

6 Input File Command Reference 26System Generation 26

createfull 26createcube 26createcylinder 26createellipsoid 26createsphere 26createtruncated-octahedron 26createparticle 27createparticle-array 27createvoronoi-film 27createvoronoi-size-variance 27createvoronoi-row-offset 27createvoronoi-random-seed 27createvoronoi-rounded-grains 28createvoronoi-rounded-grains-area 28createparticle-parity 28createcrystal-structure 28createsingle-spin 28createperiodic-boundaries-x 28createperiodic-boundaries-y 28createperiodic-boundaries-z 28createselect-material-by-height 28createselect-material-by-geometry 28createfill-core-shell-particles 28createinterfacial-roughness 29creatematerial-interfacial-roughness 29createinterfacial-roughness-random-seed 29createinterfacial-roughness-number-of-seed-points 29createinterfacial-roughness-type 29createinterfacial-roughness-seed-radius 29createinterfacial-roughness-seed-radius-variance 29createinterfacial-roughness-mean-height 29createinterfacial-roughness-maximum-height 29

3

createinterfacial-roughness-height-field-resolution 29createalloy-random-seed 29creategrain-random-seed 29createdilution-random-seed 30createintermixing-random-seed 30

System dimensions 30dimensionsunit-cell-size 30dimensionsunit-cell-size-x 30dimensionsunit-cell-size-y 30dimensionsunit-cell-size-z 30dimensionssystem-size 30dimensionssystem-size-x 30dimensionssystem-size-y 30dimensionssystem-size-z 30dimensionsparticle-size 30dimensionsparticle-spacing 30dimensionsparticle-shape-factor-x 31dimensionsparticle-shape-factor-y 31dimensionsparticle-shape-factor-z 31dimensionsparticle-array-offset-x 31dimensionsparticle-array-offset-y 31dimensionsmacro-cell-size 31

Anisotropy calculation 31anisotropysurface-anisotropy-threshold 31anisotropysurface-anisotropy-nearest-neighbour-range 32anisotropyenable-bulk-neel-anisotropy 32

Dipole field calculation 32dipolesolver 32

Simulation Control 32simintegrator 32simprogram 33simenable-dipole-fields 34simenable-fmr-field 34simenable-fast-dipole-fields 34simdipole-field-update-rate 34simtime-step 34simtotal-time-steps 34simloop-time-steps 34

4

simtime-steps-increment 35simequilibration-time-steps 35simsimulation-cycles 35simmaximum-temperature 35simminimum-temperature 35simequilibration-temperature 35simtemperature 35simtemperature-increment 35simcooling-time 35simlaser-pulse-temporal-profile 35simlaser-pulse-time 35simlaser-pulse-power 35simsecond-laser-pulse-time 35simsecond-laser-pulse-power 35simsecond-laser-pulse-maximum-temperature 35simsecond-laser-pulse-delay-time 35simtwo-temperature-heat-sink-coupling 35simtwo-temperature-electron-heat-capacity 35simtwo-temperature-phonon-heat-capacity 36simtwo-temperature-electron-phonon-coupling 36simcooling-function 36simapplied-field-strength 36simmaximum-applied-field-strength 36simequilibration-applied-field-strength 36simapplied-field-strength-increment 36simapplied-field-angle-theta 36simapplied-field-angle-phi 36simapplied-field-unit-vector 36simdemagnetisation-factor 36simintegrator-random-seed 36simconstraint-rotation-update 37simconstraint-angle-theta 37simconstraint-angle-theta-minimum 37simconstraint-angle-theta-maximum 37simconstraint-angle-theta-increment 37simconstraint-angle-phi 37simconstraint-angle-phi-minimum 37simconstraint-angle-phi-maximum 37

5

simconstraint-angle-phi-increment 37simmonte-carlo-algorithm 37simcheckpoint 37simpreconditioning-steps 37

Data output 38outputtime-steps 38outputreal-time 38outputtemperature 38outputapplied-field-strength 38outputapplied-field-unit-vector 38outputapplied-field-alignment 38outputmaterial-applied-field-alignment 38outputmagnetisation 39outputmagnetisation-length 39outputmean-magnetisation-length 39outputmean-magnetisation 39outputmaterial-magnetisation 39outputmaterial-mean-magnetisation-length 39outputmaterial-mean-magnetisation 39outputtotal-torque 39outputmean-total-torque 40outputconstraint-phi 40outputconstraint-theta 40outputmaterial-mean-torque 40outputmean-susceptibility 40outputmean-material-susceptibility 41outputelectron-temperature 41outputphonon-temperature 41outputtotal-energy 41outputmean-total-energy 41outputanisotropy-energy 41outputmean-anisotropy-energy 41outputexchange-energy 41outputmean-exchange-energy 41outputapplied-field-energy 41outputmean-applied-field-energy 41outputmagnetostatic-energy 41outputmean-magnetostatic-energy 41

6

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 5: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

createinterfacial-roughness-height-field-resolution 29createalloy-random-seed 29creategrain-random-seed 29createdilution-random-seed 30createintermixing-random-seed 30

System dimensions 30dimensionsunit-cell-size 30dimensionsunit-cell-size-x 30dimensionsunit-cell-size-y 30dimensionsunit-cell-size-z 30dimensionssystem-size 30dimensionssystem-size-x 30dimensionssystem-size-y 30dimensionssystem-size-z 30dimensionsparticle-size 30dimensionsparticle-spacing 30dimensionsparticle-shape-factor-x 31dimensionsparticle-shape-factor-y 31dimensionsparticle-shape-factor-z 31dimensionsparticle-array-offset-x 31dimensionsparticle-array-offset-y 31dimensionsmacro-cell-size 31

Anisotropy calculation 31anisotropysurface-anisotropy-threshold 31anisotropysurface-anisotropy-nearest-neighbour-range 32anisotropyenable-bulk-neel-anisotropy 32

Dipole field calculation 32dipolesolver 32

Simulation Control 32simintegrator 32simprogram 33simenable-dipole-fields 34simenable-fmr-field 34simenable-fast-dipole-fields 34simdipole-field-update-rate 34simtime-step 34simtotal-time-steps 34simloop-time-steps 34

4

simtime-steps-increment 35simequilibration-time-steps 35simsimulation-cycles 35simmaximum-temperature 35simminimum-temperature 35simequilibration-temperature 35simtemperature 35simtemperature-increment 35simcooling-time 35simlaser-pulse-temporal-profile 35simlaser-pulse-time 35simlaser-pulse-power 35simsecond-laser-pulse-time 35simsecond-laser-pulse-power 35simsecond-laser-pulse-maximum-temperature 35simsecond-laser-pulse-delay-time 35simtwo-temperature-heat-sink-coupling 35simtwo-temperature-electron-heat-capacity 35simtwo-temperature-phonon-heat-capacity 36simtwo-temperature-electron-phonon-coupling 36simcooling-function 36simapplied-field-strength 36simmaximum-applied-field-strength 36simequilibration-applied-field-strength 36simapplied-field-strength-increment 36simapplied-field-angle-theta 36simapplied-field-angle-phi 36simapplied-field-unit-vector 36simdemagnetisation-factor 36simintegrator-random-seed 36simconstraint-rotation-update 37simconstraint-angle-theta 37simconstraint-angle-theta-minimum 37simconstraint-angle-theta-maximum 37simconstraint-angle-theta-increment 37simconstraint-angle-phi 37simconstraint-angle-phi-minimum 37simconstraint-angle-phi-maximum 37

5

simconstraint-angle-phi-increment 37simmonte-carlo-algorithm 37simcheckpoint 37simpreconditioning-steps 37

Data output 38outputtime-steps 38outputreal-time 38outputtemperature 38outputapplied-field-strength 38outputapplied-field-unit-vector 38outputapplied-field-alignment 38outputmaterial-applied-field-alignment 38outputmagnetisation 39outputmagnetisation-length 39outputmean-magnetisation-length 39outputmean-magnetisation 39outputmaterial-magnetisation 39outputmaterial-mean-magnetisation-length 39outputmaterial-mean-magnetisation 39outputtotal-torque 39outputmean-total-torque 40outputconstraint-phi 40outputconstraint-theta 40outputmaterial-mean-torque 40outputmean-susceptibility 40outputmean-material-susceptibility 41outputelectron-temperature 41outputphonon-temperature 41outputtotal-energy 41outputmean-total-energy 41outputanisotropy-energy 41outputmean-anisotropy-energy 41outputexchange-energy 41outputmean-exchange-energy 41outputapplied-field-energy 41outputmean-applied-field-energy 41outputmagnetostatic-energy 41outputmean-magnetostatic-energy 41

6

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 6: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

simtime-steps-increment 35simequilibration-time-steps 35simsimulation-cycles 35simmaximum-temperature 35simminimum-temperature 35simequilibration-temperature 35simtemperature 35simtemperature-increment 35simcooling-time 35simlaser-pulse-temporal-profile 35simlaser-pulse-time 35simlaser-pulse-power 35simsecond-laser-pulse-time 35simsecond-laser-pulse-power 35simsecond-laser-pulse-maximum-temperature 35simsecond-laser-pulse-delay-time 35simtwo-temperature-heat-sink-coupling 35simtwo-temperature-electron-heat-capacity 35simtwo-temperature-phonon-heat-capacity 36simtwo-temperature-electron-phonon-coupling 36simcooling-function 36simapplied-field-strength 36simmaximum-applied-field-strength 36simequilibration-applied-field-strength 36simapplied-field-strength-increment 36simapplied-field-angle-theta 36simapplied-field-angle-phi 36simapplied-field-unit-vector 36simdemagnetisation-factor 36simintegrator-random-seed 36simconstraint-rotation-update 37simconstraint-angle-theta 37simconstraint-angle-theta-minimum 37simconstraint-angle-theta-maximum 37simconstraint-angle-theta-increment 37simconstraint-angle-phi 37simconstraint-angle-phi-minimum 37simconstraint-angle-phi-maximum 37

5

simconstraint-angle-phi-increment 37simmonte-carlo-algorithm 37simcheckpoint 37simpreconditioning-steps 37

Data output 38outputtime-steps 38outputreal-time 38outputtemperature 38outputapplied-field-strength 38outputapplied-field-unit-vector 38outputapplied-field-alignment 38outputmaterial-applied-field-alignment 38outputmagnetisation 39outputmagnetisation-length 39outputmean-magnetisation-length 39outputmean-magnetisation 39outputmaterial-magnetisation 39outputmaterial-mean-magnetisation-length 39outputmaterial-mean-magnetisation 39outputtotal-torque 39outputmean-total-torque 40outputconstraint-phi 40outputconstraint-theta 40outputmaterial-mean-torque 40outputmean-susceptibility 40outputmean-material-susceptibility 41outputelectron-temperature 41outputphonon-temperature 41outputtotal-energy 41outputmean-total-energy 41outputanisotropy-energy 41outputmean-anisotropy-energy 41outputexchange-energy 41outputmean-exchange-energy 41outputapplied-field-energy 41outputmean-applied-field-energy 41outputmagnetostatic-energy 41outputmean-magnetostatic-energy 41

6

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 7: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

simconstraint-angle-phi-increment 37simmonte-carlo-algorithm 37simcheckpoint 37simpreconditioning-steps 37

Data output 38outputtime-steps 38outputreal-time 38outputtemperature 38outputapplied-field-strength 38outputapplied-field-unit-vector 38outputapplied-field-alignment 38outputmaterial-applied-field-alignment 38outputmagnetisation 39outputmagnetisation-length 39outputmean-magnetisation-length 39outputmean-magnetisation 39outputmaterial-magnetisation 39outputmaterial-mean-magnetisation-length 39outputmaterial-mean-magnetisation 39outputtotal-torque 39outputmean-total-torque 40outputconstraint-phi 40outputconstraint-theta 40outputmaterial-mean-torque 40outputmean-susceptibility 40outputmean-material-susceptibility 41outputelectron-temperature 41outputphonon-temperature 41outputtotal-energy 41outputmean-total-energy 41outputanisotropy-energy 41outputmean-anisotropy-energy 41outputexchange-energy 41outputmean-exchange-energy 41outputapplied-field-energy 41outputmean-applied-field-energy 41outputmagnetostatic-energy 41outputmean-magnetostatic-energy 41

6

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 8: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

outputmpi-timings 41outputgnuplot-array-format 41outputoutput-rate 41outputprecision 42outputfixed-width 42

Configuration output 42configatoms 42configatoms-output-rate 42configatoms-min-x 42configatoms-min-y 43configatoms-min-z 43configatoms-max-x 43configatoms-max-y 43configatoms-max-z 43configmacro-cells 43configmacro-cells-output-rate 43configoutput-format 43configoutput-mode 43configoutput-nodes 44

7 Material File Command Reference 46materialnum-materials 46materialmaterial-name 46materialdamping-constant 46materialexchange-matrix 47materialatomic-spin-moment 47materialuniaxial-anisotropy-constant 47materialsecond-order-uniaxial-anisotropy-constant 48materialfourth-order-uniaxial-anisotropy-constant 48materialcubic-anisotropy-constant 48materialfourth-order-cubic-anisotropy-constant 48materialuniaxial-anisotropy-direction 48materialsurface-anisotropy-constant 49materialneel-anisotropy-constant 49materiallattice-anisotropy-constant 49materiallattice-anisotropy-file 49materialrelative-gamma 50materialinitial-spin-direction 50

7

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 9: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

materialmaterial-element 50materialgeometry-file 50materialalloy-host 50materialalloy-fraction 50materialminimum-height 50materialmaximum-height 51materialcore-shell-size 51materialinterface-roughness 51materialintermixing 51materialdensity 52materialcontinuous 52materialfill-space 52materialcouple-to-phononic-temperature 52materialtemperature-rescaling-exponent 53materialtemperature-rescaling-curie-temperature 53materialnon-magnetic 53

Example material files 53

Bibliography 54

8

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 10: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

Introducing VAMPIRE

VAMPIRE is a state-of-the-art atomistic simulator for magnetic nanomaterials Thissoftware is the culmination of several years of continuous development with anaim to make atomistic simulation of magnetic materials routinely available tothe non-specialist researcher Before now using atomistic models to simulatemagnetic systems required in depth and technical knowledge of the underlyingtheoretical methods computer programming skills and the ability to debug andunderstand intricate computational problems The code is designed with ease ofuse in mind and includes an extensive set of input parameters to control thesimulations through a plain text input file Subject to future funding it is alsohoped to develop graphical user interfaces for MacTM OS X and WindowsTM

which should make using the code more accessible

The VAMPIRE project is still very much under active development with an opendevelopment of all code features The features are always available during thedevelopment stages from the develop branch of the code but with the caveat thatthey are not always fully reliable Feedback of any bugs or errors to the VAMPIRE

developers is always welcome as well as any feature requests or enhancements

We hope that as the VAMPIRE project develops it will become a useful tool forthe magnetics community for specialists and non-specialists alike

9

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 11: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

1 Background theory

While the underlying theory behind the atomistic spin model is well known inthe scientific literature in the following a very brief overview of the fundamentaltheory is presented for the benefit of those who do not wish to study themethodsin great detail If more information is required then a comprehensive review ofthe methods implemented in VAMPIRE is available from the project website

Atomistic Spin ModelsAtomistic spin models form the natural limit of two distinct approaches namelymicromagnetics and ab-initio models of the electronic structure In micromag-netics a material is discretized into small domains where the magnetization isassumed to be fully ordered within it If the micromagnetic cell size is reducedto less than 1 nm then the magnetization is no longer a true continuum buta discrete entity considering localized moments on individual atoms Similarlywhen the electronic properties of the system are considered the quantummechanical properties can be mapped onto atomic cores in a manner similar tomolecular dynamics where the effective properties can often be treated with aclassical approximation

The advantage of the atomistic model over micromagnetics is that it naturallydeals with atomic ordering and variation of local properties seen in real materialssuch as interfaces defects roughness etc The discrete formulation also allowsthe simulation of high temperatures above and beyond the Curie temperaturewhere the usual continuum micromagnetic approach breaks down Such effectsor often central to current problems inmagnetism such asmaterials for spin elec-tronics heat assisted magnetic recording or ultrafast laser processes Similarlyfor ab-initio calculations mapping onto an effective spin model allows apply thefull quantum mechanical deal of the properties to much larger systems and theconsideration of dynamic effects on much longer timescales

10

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 12: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

The Spin HamiltonianThe basis of the atomistic spin model is the spin Hamiltonian which describesthe fundamental spin-dependent interactions at the atomic level (neglectingthe effects of potential and kinetic energy and electron correlations) The spinHamiltonian is typically defined as

H = minus983131

iltj

JijSi middot Sj minus k2983131

i

S2z minus microS

983131

i

Bapp middot Si

describing exchange uniaxial anisotropy and applied field contributions respec-tively Important parameters are the Heisenberg exchange Jij the anisotropyconstant k2 and the atomic spin moment microS Si is a unit vector which describesthe orientation of the local spin moment In most magnetic materials theexchange interactions are the dominant contribution usually by two ordersof magnitude and gives rise to the atomic ordering of the spin directionsFor ferromagnetic materials (parallel alignment of spins) Jij gt 0 while foranti-ferromagnetic materials (antiparallel alignment of spins) Jij lt 0

While the exchange interaction determines the ordering of the spins it isusually isotropic and so there is no preferential orientation of all the spins inthe system Most magnetic materials are anisotropic that is the spins have apreferred orientation in space which arises at the atomic level due to the localcrystal environment hence its full name of magnetocrystalline anisotropy Inthe model this is most commonly uniaxial anisotropy where the spins preferto lie along a single preferred axis known as the easy axis The strength ofthe anisotropy is determined by the anisotropy constant in our case k2 wherepositive value prefer alignment along the z-axis while negative values preferalignment around the xminus y plane

The last termdescribes the coupling of the spin system to an externally appliedfield Bapp or Zeeman field The applied field is used to reverse the orientationof the spins and can be used in the simulation to calculate hysteresis loops forexample

Spin DynamicsThe spin Hamiltonian describes the energetics of the system but says nothingabout the dynamic behaviour For that the Landau-Lifshitz-Gilbert (LLG) equationis used to describe the dynamics of atomic spins The LLG is given by

partSi

partt= minus

γ

(1 + λ2)[Si timesBi

eff + λSi times (Si timesBieff)] (11)

11

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 13: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

where Si is a unit vector representing the direction of the magnetic spin momentof site i γ is the gyromagnetic ratio and Bi

eff is the net magnetic field on eachspin The atomistic LLG equation describes the interaction of an atomic spinmoment i with an effective magnetic field which is obtained from the negativefirst derivative of the complete spin Hamiltonian such that

Bieff = minus

1

microS

partH

partSi(12)

where microS is the local spin moment The inclusion of the spin moment withinthe effective field is significant in that the field is then expressed in units ofTesla given a Hamiltonian in Joules The LLG is integrated numerically using theHeun numerical scheme which allows the time evolution of the spin system to besimulated

CitationsIf you use VAMPIRE for your research it is helpful to acknowledge the authors ofthe code by citing relevant papers and include a statement in the paper such asthe following

The simulations in this work made use of the VAMPIRE software package [1]

and add a footnote reading

[1] VAMPIRE software package version 50 available fromhttpsvampireyorkacuk

In addition it is recommended for reproducibility that you include the githash for

the specific version of the code which enables someone to checkout the specificversion of the code used for the simulations [1] VAMPIRE software package ver-

sion 50 (Version aa842a409c68d6724e156df6cab0bcaa172f5f41) available fromhttpsvampireyorkacuk

If you use the code please cite the following articleAtomistic spin model simulations of magnetic nanomaterials

R F L Evans W J Fan P Chureemart T A Ostler M O A Ellis and R W Chantrell

J Phys Condens Matter 26 103202 (2014)

12

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 14: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

If you use the constrained Monte Carlo method in addition please cite

Constrained Monte Carlo method and calculation of the temperature dependence of mag-

netic anisotropy

P Asselin R F L Evans J Barker R W Chantrell R Yanes O Chubykalo-Fesenko D Hinzke

and U Nowak

Phys Rev B 82 054415 (2010)

If you use the temperature rescaling method please cite

Quantitative simulation of temperature-dependent magnetization dynamics and equilibrium

properties of elemental ferromagnets

R F L Evans U Atxitia and R W Chantrell

Phys Rev B 91 144425 (2015)

13

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 15: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

2 Installation

This chapter covers the requirements installation and support for VAMPIRE ondifferent platforms

System RequirementsVAMPIRE is designed to be generally portable and compilable on Linux Unix MacOSX andWindows with a range of different compilers By design the software hasa very minimal dependence on external libraries to aid compilation on the widestpossible range of platforms without needing to first install and configure a largenumber of other packages VAMPIRE is designed to be maximally efficient on highperformance computing clusters and scalable to thousands of processors and assuch is the recommended platform if you have access to appropriate resources

Hardware Requirements

VAMPIRE has been successfully tested on a wide variety of x86 and power PC pro-cessors Memory requirements are generally relatively modest for most systemsthough larger simulations will require significantly more memory VAMPIRE isgenerally computationally limited and so the faster the clock speed and numberof processor cores the better

Binary installationCompiled binaries of the latest release version are available to download from

httpsvampireyorkacukdownload

for Linux and MacTM OS X platforms For the Linux and Mac OS X releasesa simple installation script installsh installs the binary in optvampire andappends the directory to your environment path OnWindows the recommendedmethod is to use the Linux subsystem for windows developer feature which addsa linux subsystem that is capable of running the standard linux binary A copy ofqvoronoi is integrated into VAMPIRE for generating granular structures

14

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 16: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

Compiling from sourceThe best way to get the vampire source code is using git a distributed versioncontrol program which enables changes in the code to be tracked Git is readilyavailable on linux (git-core package on ubuntu) and Mac (via MacPorts) To getvampire from the Github repository checkout your own copy of the repositoryusing

git clone gitgithubcomrichard-evansvampiregit

This way updates to the code can be easily merged with the downloadedversion Compiling is generally as easy as running make in Unix platforms Inaddition on a multicore processor compilation can be parallelised using the -jNt

option where Nt is the number of threads to use

Compiling on Linux

In order to compile in linux a working set of development tools are needed whichon ubuntu includes the packages build-essential and g++ VAMPIRE should compilewithout issue following a simple make command in the source directory

For the parallel version a working installation of openmpi is recommendedwhich must usually include a version of the development tools (openmpi-bin andopenmpi-dev packages on ubuntu) Compilation is usually straightforward usingmake parallel

Compiling on Mac OSX

With OS X compilation from source requires a working installation of Xcodeavailable for free from the Mac App Store In addition command line tools mustalso be installed A working installation of MacPorts is recommended to provideaccess to a wide range of open source libraries and tools such as openmpi rasmoland povray For the serial version compilation is the same as for linux followinga simple make serial-llvm command in the source directory

Similarly for the parallel version openmpi needs to be installed via MacPortsand compilation is usually straightforward using make parallel-llvm

Compiling on Windows

The recommended way to use vampire on Windows is to install Linux subsystemforwindows 10 (see httpsdocsmicrosoftcomen-uswindowswslinstall-win10)Older versions of windows are no longer supported Once installed you candownload the serial linux binary as for linux and run as normal from the commandline

15

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 17: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

Compiling for ARCHERCray systems

ARCHER is the UK national supercomputer and includes custom compilers de-veloped by Cray Inc However performance is generally better for the gnucompiler collection and so there is an optimized makefile option for compilationon the ARCHER and similar Cray XC30 systems To compile you need to swapthe environment to the GNU compiler suite using module swap PrgEnv-crayPrgEnv-gnu You can then compile with make parallel-archer which will compile aparallel binary

Compiling for GPU acceleration with CUDA (beta)

The latest release includes a CUDA implementation for GPU accelerated atomisticspin dynamics To compile the CUDA version of the code you need to install theCUDA drivers and runtime Once installed compilation should be straightforwardusingmake gcc-cuda By default the binary includes device code for a wide rangeof architectures Depending on your devicecard you may need to modify thedevice code generation option in the makefile

16

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 18: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

3 Running the code

To run the code in all version you first need to specify an input file and materialfile which must reside in the same directory where you run the code Examplefiles are available in the source code distribution or from the Download sectionof the website (httpvampireyorkacukdownloadindexhtml)

UnixLinux and macOSIn the directory including the input and material files typing

vampire-serial

will run the code in serial mode For the parallel mode with openmpi

mpirun -np 2 vampire-parallel

will run the code in parallel mode on 2 CPUs Increasing the -np argument willrun on more cores

WindowsOnce you have installed Linux subsystem for Windows you can run the code bylaunching bash for windows and following the instructions for UnixLinux systemsabove

Log fileWhen you run the program it will output some program information to screen toindicate that the program is running listing somedetails about the developers andsome steps on the program execution There are also options to tell the programto output simulation data to screen to see how the simulation is progressing Inaddition a log file is produced which provides more detail about the execution ofthe program and progress including timestamps and errors that may occur and

17

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 19: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

certain performance metrics such as time to update the dipole field or output aspin configuration file A sample screen output header from the program is shownbelow

_(_)

__ ____ _ _ __ ___ _ __ _ _ __ ___ _` | _ ` _ | _ | | __ _ V (_| | | | | | | |_) | | | | ___ ___|_| |_| |_| __|_|_| ___|

| ||_|

Version 500 Aug 25 2018 230125

Git commit 4377c4a8c3b2334decf6b3892542927fcaddebc7

Licensed under the GNU Public License(v2) See licence file for details

Lead Developer Richard F L Evans ltrichardevansyorkacukgt

Contributors Andrea Meo Rory Pond Weijia FanPhanwadee Chureemart Sarah Jenkins Joe BarkerThomas Ostler Andreas Biternas Roy W ChantrellWu Hong-Ye Matthew Ellis Razvan AbabeiSam Westmoreland Oscar Arbelaez Sam Morris

Compiled with LLVM C++ CompilerCompiler Flags

Vampire includes a copy of the qhull library from CB Barber andThe Geometry Center and may be obtained via http from wwwqhullorg

18

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 20: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

4 Getting Started

VAMPIRE is a powerful software package capable of simulating many differentsystems and the determination of parameters such as coercivity Curie and Neacuteeltemperatures reversal dynamics statistical behaviour and more This chaptercontains an overview of the capabilities of VAMPIRE and how to use them

Feature OverviewThe features of the VAMPIRE code are split into three main categories materialparameters structural parameters and simulation parameters Details of theseparameters are given in the following chapters but between them they define theparameters for a particular simulation

Materials

Material parameters essentially define the magnetic properties of a class ofatoms including magnetic moments exchange interactions damping constantsetc VAMPIRE includes support for up to one hundred defined materials andmaterial parameters control the simulation of multilayers random alloys coreshell particles and lithographically defined patterns

Structures

Structural parameters define properties such as the system size shape particlesize or voronoi grain structures In combination with material parameters theyessentially define the system to be simulated

Simulations

VAMPIRE includes a number of built-in simulations for determining the most com-mon magnetic properties of a system for example Curie temperature hysteresisloops or even a time series Additionally the parameters for these simulationssuch as applied field maximum temperature temperature increment etc canbe set

19

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 21: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

Input and Output FilesVAMPIRE requires at least two files to run a simulation the input file and thematerial file The input file defines all the properties of the simulated systemsuch as the dimensions or particle shape as well as the simulation parametersand program output The material file defines the properties of all the materialsused in the simulation and is usually given the mat file extension A samplematerial file Comat is included with the code which defines a minimum set ofparameters for Co

The output of the code includes a main output file which records data suchas the magnetisation timesteps temperature etc The format of the output fileis fully customisable so that the amount of output data is limited to what isuseful In addition to the output file the other main available outputs are spinconfiguration files which with post-processing allow output of snapshots of themagnetic configurations during the simulation

Sample input filesSample input and output files are included in the source code distribution butthe files for a simple test simulation which computes the time dependence of themagnetisation of a cubic system are given here

input------------------------------------------ Sample vampire input file to perform benchmark calculation for version 50------------------------------------------

------------------------------------------ Creation attributes------------------------------------------createcrystal-structure = sc

------------------------------------------ System Dimensions------------------------------------------dimensionsunit-cell-size = 354 Adimensionssystem-size-x = 77 nmdimensionssystem-size-y = 77 nmdimensionssystem-size-z = 77 nm

------------------------------------------ Material Files------------------------------------------

20

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 22: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

materialfile = Comat

------------------------------------------ Simulation attributes------------------------------------------simtemperature = 3000simtime-steps-increment = 1000simtotal-time-steps = 10000simtime-step = 1 fs

------------------------------------------ Program and integrator details------------------------------------------simprogram = benchmarksimintegrator = llg-heun

------------------------------------------ data output------------------------------------------outputreal-timeoutputtemperatureoutputmagnetisationoutputmagnetisation-length

screentime-stepsscreenmagnetisation-length

Comat=================================================== Sample vampire material file version 5===================================================

--------------------------------------------------- Number of Materials---------------------------------------------------materialnum-materials=1--------------------------------------------------- Material 1 Cobalt Generic---------------------------------------------------material[1]material-name = Comaterial[1]damping-constant = 10material[1]exchange-matrix[1] = 112e-21material[1]atomic-spin-moment = 172 muBmaterial[1]uniaxial-anisotropy-constant = 10e-24material[1]material-element = Agmaterial[1]minimum-height = 00material[1]maximum-height = 10

21

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 23: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

5 Unit Cell Files

VAMPIRE provides a selection of built-in unit cell crystal structures which can bespecified with the createcrystal-structure keyword However there are manymore crystal structures and magnetic materials than the code could possiblysupport and so an advanced mode is available where the user can specify anyatomic structure and exchange interactions which are then imported into thecode and can be used to generate large systems andor cut into the standardgeometric shapes It is also possible to simulate complex non-periodic structuressuch as nanoparticles obtained from molecular dynamics simulations with thesame approach The unit cell file is specified in the main input file using thekeyword

materialunit-cell-file = fileucf

where fileucf is the filename

The unit cell file formatThe unit cell file is split into two main parts The first part specifies the unitcell shape the atoms in the unit cell and their material associations and cate-gorisation for statistics purposes The second part specifies all atomic exchangeinteractions within and between neighbouring unit cells The general plain textformat is as follows

1 Unit cell size2 ucx ucy ucz3 Unit cell lattice vectors4 ucvxx ucvxy ucvxz5 ucvyx ucvyy ucvyz6 ucvzx ucvzy ucvzz7 Atoms8 num_atoms_in_unit_cell number_of_materials9 atom_id cx cy cz [mat_id cat_id hcat_id]10

22

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 24: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

11 12 Interactions13 num_interactions [exchange_type]14 IID i j dx dy dz | Jij

| Jx Jy Jz| Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz

In general this format now allows the specification of any system we want butclearly complex multi- layered systems require large file sizes Working throughline by line

23

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 25: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

1 defines a comment line which is ignored by the parser ndash sothese lines are optional

2 ucx ucy and ucz are the unit cell size in angstroms4minus 6 These lines define the shape of the unit cell to be replicated

for cubic cells this is the unit matrix Note that at present onlyorthogonal lattice vectors are supported by the code due tocomplexities relating to parallelisation

8 Define the number of atoms and number of materials inthe unit cell Materials allow grouping of atoms by materialand have the same parameters (ie moment damping etc)Material specification affects the way statistics are collectedand displayed and also allows the simple creation of orderedalloys The list of atoms must immediately follow this line

9minus 10 These lines define the atoms in each unit cell and theirparameters

atom_id Number identifier of atom in unit cell starts at 0

cxcycz unit cell coordinates as a fraction of unit cell size

mat_id material id of the atom integer starting at 0

cat_id category id of the atom used for calculating propertiesnot categorised by material eg height or sublattice Integerstarting at 1

hcat_id Height category id used for calculating properties as afunction of height

12 Defines the total number of interactions for the unit cell andthe expected type of exchange (isotropic vectorial tensorialnormalized-isotropic normalized-vectorial normalized-ten-sorial) No lines are allowed between this line and the list ofinteractions

13 These lines list all the interactions IID Interaction ID is only used for accounting purposes starts

at 0 i Atom number of atom in local unit cell j Atom number of atom in localremote unit cell dxucdyucdzuc relative integer coordinates of unit cell for

atom j Jij Jxx Exchange values specified in Joules

24

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 26: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

Example Simple Cubic SystemAs an example here is a complete sample file for a simple cubic system with asingle material

1 Unit cell size2 354 354 3543 Unit cell vectors4 10 00 005 00 10 006 00 00 107 Atoms num_atoms num_materials id cx cy cz mat cat hcat8 1 19 000000000010 Interactions n exctype id i j dx dy dz Jij11 6 isotropic12 013 114 215 316 417 5

Here only easy axis anisotropy and isotropic exchange are defined Since there isonly a single atom in the unit cell all i-j pairs are 0-0 but over the neighbouring unitcellsplusmn1 in all directions This generally leads to a large number of interactions forincreasing numbers of atoms in the unit cell and in future I will write a programto generate some different lattices and interaction lists

25

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 27: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

6 Input File Command Reference

The input file can accept a large number of commands and this chapter gives acomprehensive list of all the options andwhat they do Commands are in the formcategorykeyword=value where value can be optional depending on the keyword

System GenerationThe following commands control generation of the simulated system includingdimensions crystal structures etc

createfull Uses the entire generated system without any truncation or consid-eration of the createparticle-size parameter createfull should be used whenimporting a complete system such as a complete nanoparticle and where afurther definition of the system shape is not required This is the default if nosystem truncation is defined

createcube Cuts a cuboid particle of size lx = ly = lz = createparticle-size fromthe defined crystal lattice

createcylinder Cuts a cylindrical particle of diameter createparticle-size fromthe defined crystal lattice The height of the cylinder extends to the whole extentof the system size createsystem-size-z in the z-direction

createellipsoid Cuts an ellipsoid particle of diameter createparticle-size withfractional diameters of dimensionsparticle-shape-factor-xdimensionsparticle-shape-factor-ydimensionsparticle-shape-factor-zfrom the defined crystal lattice

createsphere Cuts a spherical particle of diameter createparticle-size from thedefined crystal lattice

createtruncated-octahedron Cuts a truncated octahedron particle of diametercreateparticle-size from the defined crystal lattice

26

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 28: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

createparticle Defines the creation of a single particle at the centre of thedefined system If createparticle-size is greater than the system dimensions thenthe outer boundary of the particle is truncated by the system dimensions

createparticle-arrayDefines the creation of a two-dimensional array of particleson a square lattice Theparticles are separatedby adistance createparticle-spacingIf the system size is insufficient to contain at least a single entire particle ofsize createparticle-size then no atoms will be generated and the program willterminate with an error

createvoronoi-film Generates a two-dimensional voronoi structure of particleswith ameangrain size of createparticle-size and variance createvoronoi-size-varianceas a fraction of the grain size If createvoronoi-size-variance=0 then hexagonalshaped grains are generated The spacing between the grains (defined bythe initial voronoi seed points) is controlled by createparticle-spacing Thepseudo-random pattern uses a predefined random seed and so the generatedstructure will be the same every time A different structure can be generatedby setting a new random seed using the createvoronoi-random-seed parameterDepending on the desired edge structure the first row can be shifted using thecreatevoronoi-row-offset flag which changes the start point of the voronoi pat-tern The createvoronoi-rounded-grains parameter generates a voronoi struc-ture but then applies a grain rounding algorithm to remove the sharp edges

createvoronoi-size-variance=[float] Controls the randomness of the voronoigrain structure The voronoi structure is generated using a hexagonal arrayof seed points appropriately spaced according to the particle size and particlespacing The seed points are then displaced in x and y according to a gaussiandistribution of width createvoronoi-size-variance times the particle size Thevariance must be in the range 00-10 Typical values for a realistic looking grainstructure are less than 02 and larger values will generally lead to oblique grainshapes and a large size distribution

createvoronoi-row-offset flag [default false]Offsets the first row of hexagonalpoints to generate a different pattern eg 232 grains instead of 323 grains

createvoronoi-random-seed = int Sets a different integer random seed forthe voronoi seed point generation and thus produces a different random grain

27

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 29: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

structure

createvoronoi-rounded-grains flag [default false] Controls the rounding ofvoronoi grains to generate more realistic grain shapes The algorithm works byexpanding a polygon from the centre of the grain until the total volume boundedby the edges of the grain is some fraction of the total grain area defined bycreatevoronoi-rounded-grains-area This generally leads to the removal of sharpedges

createvoronoi-rounded-grains-area = float [00-10 default 09] Defines thefractional grain area where the expanding polygon is constrained in the range00-10 Values less than 10 will lead to truncation of the voronoi grain shapesand very small values will generally lead to circular grains A typical value is 09for reasonable voronoi variance

createparticle-centre-offset shifts the origin of a particle to the centre of thenearest unit cell

createcrystal-structure = string [scfccbcchcprocksalt default sc] Definesthe default crystal lattice to be generated

createsingle-spin flag Overrides all create options and generates a single iso-lated spin

createperiodic-boundaries-xflag creates periodic boundaries along thex-direction

createperiodic-boundaries-yflag creates periodic boundaries along the y-direction

createperiodic-boundaries-zflag creates periodic boundaries along the z-direction

createselect-material-by-height specifies that materials are preferentially as-signed by their height specification

createselect-material-by-geometry specifies that materials are preferentiallyassigned by their geometric specification (eg in core-shell systems)

createfill-core-shell-particles

28

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 30: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

createinterfacial-roughness specifies that a global roughness is applied to thematerial height specification (eg from a non-flat substrate)

creatematerial-interfacial-roughness specifies that a material-specific rough-ness is applied to the material height specification (eg from differences in localdeposition rate)

createinterfacial-roughness-random-seed specifies the random seed for gen-erating the roughness pattern where different numbers generate different ran-dom patterns Number should ideally be large and around 2000000000

createinterfacial-roughness-number-of-seed-points determines the undula-tion for the roughness where more points gives a larger undulation

createinterfacial-roughness-type determines whether the roughness is ap-plied as peaks or troughs in the material-specific material heights Valid optionsare peaks or troughs

createinterfacial-roughness-seed-radius

createinterfacial-roughness-seed-radius-variance

createinterfacial-roughness-mean-height

createinterfacial-roughness-maximum-height

createinterfacial-roughness-height-field-resolution

createalloy-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random alloys Simula-tions use a predictable sequence of psuedo random numbers to give repeatableresults for the same simulation The seed determines the actual sequence ofnumbers and is used to generate a different alloy distribution Note that differentnumbers of cores will change the structure that is generated

creategrain-random-seed integer [default 683614233] Sets the random seedfor the psuedo random number generator for generating random grain struc-tures

29

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 31: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

createdilution-random-seed integer [default 683614233] Sets the randomseed for the psuedo random number generator for diluting the atoms leading toa different realization of a dilute material Note that different numbers of coreswill change the structure that is generated

createintermixing-random-seed integer [default 683614233] Sets the ran-dom seed for the psuedo randomnumber generator for calculating intermixing ofmaterials A different seed will lead to a different realization of a dilute materialNote that different numbers of cores will change the structure that is generated

System dimensionsThe commands here determine the dimensions of the generated system

dimensionsunit-cell-size = float [01 Aring- 10 microm default 354 Aring]Defines the sizeof the unit cell

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-x Defines the size of the unit cell if asymmetric

dimensionsunit-cell-size-z Defines the size of the unit cell if asymmetric

dimensionssystem-size Defines the size of the symmetric bulk crystal

dimensionssystem-size-x Defines the total size if the system along the x-axis

dimensionssystem-size-y Defines the total size if the system along the y-axis

dimensionssystem-size-z Defines the total size if the system along the z-axis

dimensionsparticle-size = float Defines the size of particles cut from the bulkcrystal

dimensionsparticle-spacing Defines the spacing between particles in particlearrays or voronoi media

30

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 32: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

dimensionsparticle-shape-factor-x = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the x direction This propertyscales the as a fraction of the particle-size along the x-direction

dimensionsparticle-shape-factor-y = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the y direction This propertyscales the as a fraction of the particle-size along the y-direction

dimensionsparticle-shape-factor-z = float [0001-1 default 10] Modifies thedefault particle shape to create elongated particles The selected particle shapeis modified by changing the effective particle size in the z direction This propertyscales the as a fraction of the particle-size along the z-direction

dimensionsparticle-array-offset-x [0-104 Aring] Translates the 2-D particle arraythe chosen distance along the x-direction

dimensionsparticle-array-offset-y Translates the 2-D particle array the chosendistance along the y-direction

dimensionsdouble macro-cell-size determines the macro cell size for calcula-tion of the demagnetizing field and output of the magnetic configuration Finerdiscretisation leads to more accurate results at the cost of significantly longerrun times The cell size should always be less than the system size as highlyasymmetric cells will leads to significant errors in the demagnetisation fieldcalculation

Anisotropy calculationThe following commands control the calculation of the magnetic anisotropy en-ergy for the system anisotropysurface-anisotropy-threshold integer default[native] Determines minimal number of neighbours to classify as surface atomThe default value is the number of neighbours specified by the crystal or unit cellfile You can set this as a lower threshold

31

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 33: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

anisotropysurface-anisotropy-nearest-neighbour-rangefloat default [infin] Setsthe interaction range for the nearest neighbour list used for the surface anisotropycalculation

anisotropyenable-bulk-neel-anisotropy bool default false Enables calculationof the Neacuteel pair anisotropy in the bulk irrespective of the number of neighboursenabling the effect of localised spin-orbit interactions Internally this sets alarge threshold and so specifying anisotropysurface-anisotropy-threshold willoverride this flag

Dipole field calculationThe following commands control the calculation of the dipole-dipole field Bydefault the dipole fields are disabled for performance reasons but for largesystems (gt 10 nm) the interactions can become important The VAMPIRE codeimplements several different solvers balancing accuracy and performance Thedefault in V5+ is the tensor method which approximates the dipole dipoleinteractions at the macrocell level but calculating a dipole-dipole tensor whichis exact if the magnetic moments in each cell are aligned

dipolesolver = exclusive string [default tensor] Declares the solver to be usedfor the dipole calculation Available options are

macrocell

tensor

Simulation ControlThe following commands control the simulation including the program maxi-mum temperatures applied field strength etc

simintegrator = exclusive string [default llg-heun] Declares the integrator tobe used for the simulation Available options are

llg-heun

monte-carlo

llg-midpoint

32

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 34: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

constrained-monte-carlo

hybrid-constrained-monte-carlo

simprogram = exclusive string defines the simulation program to be used

simprogram=benchmark programwhich integrates the system for 10000 timesteps and exits Used primarily for quick performance comparisons for differentsystem architectures processors and during code performance optimisation

simprogram = time-series program to perform a single time series typicallyused for switching calculations ferromagnetic resonance or to find equilibriummagnetic configurations The system is usually simulated with constant tempera-ture and appliedfield The system isfirst equilibrated for simequilibration-time-stepstime steps and is then integrated for simtime-steps time steps

simprogram = hysteresis-loop program to simulate a dynamic hysteresis loopin user defined field range and precision The system temperature is fixed anddefined by simtemperature The system is first equilibrated for simequilibrationtime-steps time steps at simmaximum-applied-field-strength applied field Fornormal loops simmaximum-applied-field-strength should be a saturating fieldAfter equilibration the system is integrated for simloop-time-steps at each fieldpoint Thefield increments from+simmaximum-applied-field-strength to =simmaximum-applied-field-strength in steps of simapplied-field-increment and data is output aftereach field step

simprogram = static-hysteresis-loop program to perform a hysteresis loopin the same way as a normal hysteresis loop but instead of a dynamic loopthe equilibrium condition is found by minimisation of the torque on the sys-tem For static loops the temperature must be zero otherwise the torque isalways finite At each field increment the system is integrated until either themaximum torque for any one spin is less than the tolerance value (10minus6 T)or if simloop-time-steps is reached Generally static loops are computationallyefficient and so simloop-time-steps can be large as many integration steps areonly required during switching ie near the coercivity

simprogram = curie-temperature Simulates a temperature loop to determinethe Curie temperature of the system The temperature of the system is increasedstepwise starting at simminimum temperature and ending at simmaximum-

33

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 35: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

temperature in steps of simtemperature-increment At each temperature thesystem is first equilibrated for simequilibration-steps time steps and then astatistical average is taken over simloop-time-steps In general the Monte Carlointegrator is the optimalmethod for determining the Curie temperature and typi-cally a few thousand steps is sufficient to equilibrate the system To determine theCurie temperature it is best to plot the mean magnetization length at each tem-perature which can be specified using the outputmean-magnetisation-lengthkeyword Typically the temperature dependent magnetization can be fitted usingthe function

m(T ) = 〈983158983131

i

S〉 =9830611minus

T

TC

983062β

(61)

where T is the temperature TC is the Curie temperature and β sim 034 is thecritical exponent

simprogram = field-cooling

simprogram = temperature-pulse

simprogram = cmc-anisotropy

simenable-dipole-fields flag enables calculation of the demagnetising field

simenable-fmr-field

simenable-fast-dipole-fields Bool default false Enables fast calculation of thedemag field by pre calculation of the interaction matrix

simdipole-field-update-rate Integer default 1000 Number of timesteps be-tween recalculation of the demag field Default value is suitable for slow calcu-lations fast dynamics will generally require much faster update rates

simtime-step

simtotal-time-steps

simloop-time-steps

34

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 36: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

simtime-steps-increment

simequilibration-time-steps

simsimulation-cycles

simmaximum-temperature

simminimum-temperature

simequilibration-temperature

simtemperature

simtemperature-increment

simcooling-time

simlaser-pulse-temporal-profile square two-temperature double-pulse-two-tem-perature double-pulse-square

simlaser-pulse-time

simlaser-pulse-power

simsecond-laser-pulse-time

simsecond-laser-pulse-power

simsecond-laser-pulse-maximum-temperature

simsecond-laser-pulse-delay-time

simtwo-temperature-heat-sink-coupling

simtwo-temperature-electron-heat-capacity

35

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 37: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

simtwo-temperature-phonon-heat-capacity

simtwo-temperature-electron-phonon-coupling

simcooling-function exponential gaussian double-gaussian linear

simapplied-field-strength

simmaximum-applied-field-strength

simequilibration-applied-field-strength

simapplied-field-strength-increment

simapplied-field-angle-theta

simapplied-field-angle-phi

simapplied-field-unit-vector

simdemagnetisation-factor =float vector [default (000)] vector describing thecomponents of the demagnetising factor from a macroscopic sample By defaultthis is disabled and specifying a demagnetisation factor adds an effective fieldsuch that the total field is given by

Htot = Hext +Hint minusM middotNd

whereM is themagnetisation of the sample andNd is the demagnetisation factorof the macroscopic sample The components of the demagnetisation factor mustsum to 1 In general the demagnetisation factor should be used without thedipolar field as this results in counting the demagnetising effects twice Howeverthe possibility of using both is not prevented by the code

simintegrator-random-seed Integer [default 12345] Sets a seed for the psuedorandom number generator Simulations use a predictable sequence of psuedorandom numbers to give repeatable results for the same simulation The seeddetermines the actual sequence of numbers and is used to give a differentrealisation of the same simulation which is useful for determining statisticalproperties of the system

36

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 38: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

simconstraint-rotation-update

simconstraint-angle-theta = float (default 0)When a constrained integrator isused in a normal program this variable controls the angle of the magnetisationof the Whole system from the x-axis [degrees] In constrained simulations (suchas cc anisotropy) this has no effect

simconstraint-angle-theta-minimum float (default 0)

simconstraint-angle-theta-maximum

simconstraint-angle-theta-increment = float 0001-360 (default 5) Incremen-tal Change of angle of m from z-direction in constrained simulations Controls theresolution of

simconstraint-angle-phi

simconstraint-angle-phi-minimum

simconstraint-angle-phi-maximum

simconstraint-angle-phi-increment

simmonte-carlo-algorithm

spin-flip

uniform

angle

hinzke-nowak

simcheckpoint flag [default false] Enables checkpointing of spin configurationat end of simulation simsave-checkpoint=end simsave-checkpoint=continuoussimsave-checkpoint-rate=1 simload-checkpoint=restart simload-checkpoint=continue

simpreconditioning-steps integer [default 0] defines a number of precondi-tioning steps to thermalise the spins at simequilibration-temperature prior tothe main simulation starting The preconditioner uses a Monte Carlo algorithm

37

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 39: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

to develop a Boltzmann spin distribution prior to the main program starting Themethod works in serial and parallel mode and is especially efficient for materialswith low Gilbert damping The preconditioning steps are applied after loading acheckpoint allowing you to take a low temperature starting state and thermallyequilibrate it

Data outputThe following commands control what data is output to the output file Theorder in which they appear is the order in which they appear in the output fileMost options output a single column of data but some output multiple columnsparticularly vector data or parameters related tomaterials where one columnpermaterial is output

outputtime-steps outputs the number of time steps (or Monte Carlo steps)completed during the simulation so far

outputreal-time outputs the simulation time in seconds The real time isgiven by the number of time steps multiplied by simtime-step (default value is10times 10minus15 s The real time has no meaning for Monte Carlo simulations

outputtemperature outputs the instantaneous system temperature in Kelvin

outputapplied-field-strength outputs the strength of the applied field in TeslaFor hysteresis simulations the sign of the applied field strength changes along afixed axis and is represented in the output by a similar change in sign

outputapplied-field-unit-vector outputs a unit vector in three columns hx hy hz indicating the direction of the external applied field

outputapplied-field-alignment outputs the dot product of the net magnetiza-tion direction of the system with the external applied field direction m middot H

outputmaterial-applied-field-alignment outputs the dot product of the netmagnetization direction of each material defined in the material file with theexternal applied field direction

983147m1 middot H

983148983147m2 middot H

983148983147mn middot H

983148

38

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 40: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

outputmagnetisation outputs the instantaneous magnetization of the systemThe data is output in four columns mx my mz |m| giving the unit vector directionof the magnetization and normalized length of the magnetization respectivelyThe normalized length of themagnetization |m| = |

983123i microiSi|

983123microi is given by the

sum of all moments in the system assuming ferromagnetic alignment of all spinsNote that the localized spinmoments microi are taken into account in the summation

outputmagnetisation-length outputs the instantaneous normalized magneti-zation length |m| = |

983123i microiSi|

983123microi where the saturation value is defined by

ferromagnetic alignment of all spins in the system Note that the localized spinmoments microi are taken into account in the summation

outputmean-magnetisation-lengthoutputs the time-averagednormalizedmag-netization length 〈|m|〉

outputmean-magnetisation outputs the time-averaged normalizedmagnetiza-tion vector 〈|m|〉

outputmaterial-magnetisation outputs the instantaneous normalized magne-tization for each material in the simulation The data is output in blocks of fourcolumns with one block per material defined in the material file eg

983147mx

1 my1 m

z1 |m1|

983148983147mx

2 my2 m

z2 |m2|

983148

983147mx

nmynmz

n|mn|983148

Note that obtaining the actual macroscopic magnetization length from thisdata is not trivial since it is necessary to know how many atoms of each materialare in the system This information is contained within the log file (giving thefraction of atomswhichmake up eachmaterial) However it is usual to also outputthe total normalized magnetization of the system to give the relative ordering ofthe entire system

outputmaterial-mean-magnetisation-length outputs the time-averaged nor-malized magnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputmaterial-mean-magnetisation outputs the time-averaged normalizedmagnetization length for each material eg 〈|m1|〉 〈|m2|〉〈|mn|〉

outputtotal-torque outputs the instantaneous components of the torque onthe system τ =

983123i microiSi times Hi in three columns τx τy τz (units of Joules)

39

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 41: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

In equilibrium the total torque will be close to zero but is useful for testingconvergence to an equilibrium state for zero temperature simulations

outputmean-total-torque outputs the time average of components of thetorque on the system 〈τ〉 = 〈

983123i microiSi times Hi〉 in three columns 〈τx〉 〈τy〉 〈τz〉 In

equilibrium the total torque will be close to zero but the average torque is usefulfor extracting effective anisotropies or exchange using constrained Monte Carlosimulations

outputconstraint-phi outputs the current angle of constraint from the z-axis forconstrained simulations using either the Lagrangian Multiplier Method (LMM) orConstrained Monte Carlo (CMC) integration methods

outputconstraint-theta outputs the current angle of constraint from the x-axisfor constrained simulations using either the Lagrangian Multiplier Method (LMM)or Constrained Monte Carlo (CMC) integration methods

outputmaterial-mean-torque outputs the time average of components of thetorque on the eachmaterial system 〈τ〉 in blocks of three columns with one blockfor each material defined in the material file eg

983045〈τx1 〉 〈τ

y1 〉 〈τz1 〉

983046983045〈τx2 〉 〈τ

y2 〉 〈τz2 〉

983046 [〈τxn 〉 〈τ

yn〉 〈τzn〉]

Computing the torque on each material is particularly useful for determin-ing equilibrium properties of multi-component systems with constrained MonteCarlo simulations In certain cases the components of a system (different mate-rials) can exert equal and opposite torques on each other giving a total systemtorque of zero The decomposition of the torques for each material allows thedetermination of internal torques in the system

outputmean-susceptibility outputs the components of the magnetic suscepti-bility χ The magnetic susceptibility is defined by

χα =

983123i microi

kBT

983043〈m2

α〉 minus 〈mα〉2983044

where α = x y zm giving the directional components of the magnetization in xy and z respectively as well as the longitudinal susceptibility χm The data is out-put in four columns χx χy χz and χm The susceptibility is useful for identifyingthe critical temperature for a system as well as atomistic parametrization of the

40

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 42: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

micromagnetic Landau-Lifshitz-Bloch (LLB) equation

outputmaterial-mean-susceptibility outputs the components of the magneticsusceptibility χ for each definedmaterial in the system The data is output in setsof four columns χx χy χz and χm for each material In multi-sublattice systemsthe susceptibility of each sublattice can be different

outputelectron-temperature outputs the instantaneous electron temperatureas calculated from the two temperature model

outputphonon-temperature outputs the instantaneous phonon (lattice) tem-perature as calculated from the two temperature model

outputtotal-energy

outputmean-total-energy

outputanisotropy-energy

outputmean-anisotropy-energy

outputexchange-energy

outputmean-exchange-energy

outputapplied-field-energy

outputmean-applied-field-energy

outputmagnetostatic-energy

outputmean-magnetostatic-energy

outputmpi-timings

outputgnuplot-array-format

outputoutput-rate = integer [default 1] controls the number of data points

41

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 43: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

written to the output file or printed to screen By default VAMPIRE calculatesstatistics once every simtime-steps-increment number of time steps Usually youwant to output the updated statistic (eg magnetization) every time which is thedefault behaviour However sometimes you may want to plot the time evolutionof an average where you want to collect statistics much more frequently thanyou output to the output file which is controlled by this keyword For exampleif outputoutput-rate = 10 and simtime-steps-increment = 10 then statistics (andaverage values) will be updated once every 10 time steps and the new statisticswill be written to the output file every 100 time steps

outputprecision = integer [default 6] controls the number of digits to be usedfor data written to the output file or printed to screen The default value is 6 digitsof precision

outputfixed-width = flag [default false] controls the formatting to be used fordata written to the output file or printed to screen The default is false whichignores trailing zeros in the output

Configuration outputThese options enable the output of spin configuration snapshots during thesimulation The configurations can then be visualised using povray or othersoftware generated with the vampire data converter (vdc) utility

configatoms flag enables the output of atomic spin configurations

configatoms-output-rate = int [0+ default 1000] determines the rate configu-ration files are outputted as a multiple of simtime-steps-increment

The following options allow a cubic slice of the total configuration data tobe output to the configuration file This is useful for reducing disk usage andprocessing times especially for large sale simulations

configatoms-minimum-x = float [00 - 10] determines theminimum x value (asa fraction of the total system dimensions) of the data slice to be outputted to theconfiguration file

42

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 44: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

configatoms-minimum-y determines the minimum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-minimum-z determines the minimum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-x determines themaximum x value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-y determines themaximum y value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configatoms-maximum-z determines themaximum z value (as a fraction of thetotal systemdimensions) of the data slice to be outputted to the configuration file

configmacro-cells enables the output of macro cell spin configurations

configmacro-cells-output-ratedetermines the rate configurationfiles are outputted as amultiple of simtime-steps-increment

configoutput-format = exclusive string [default text] specifies the format ofthe configuration data Available options are

text

binary

The text option outputs data files as plain text allowing them to be read by a widerange of applications and hence the highest portability There is a performancecost to using text mode and so this is recommended only if you need portabledata and will not be using the vampire data converter (vdc) utility The binaryoption outputs the data in binary format and is typically 100 times faster thantext mode This is important for large-scale simulations on large numbers ofprocessors where the data output can take a significant amount of time Binaryfiles are generally not compatible between operating systems and so the vdc toolsgenerally needs to be run on the same system which generated the files

configoutput-mode = exclusive string [default file-per-node] specifies howconfiguration data is outputted to disk Available options are

43

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 45: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

file-per-node

file-per-process

mpi-io

Using this option is important for obtaining good performance on Tier-0 (Euro-pean) and Tier-1 (National) supercomputers for simulations typically using morethan 1000 cores Large scale supercomputers have high performance parallel filesystems with a peak bandwidth typically over 10 GBs VAMPIRE supports threedifferent modes of data output file-per-node (FPN) file-per-process (FPP) andmpi-io Note that high performance requires configoutput-format = binary to beset to output the data in binary format but this is not default behaviour for easierdata analysis and portability for the casual user

The first (default) option of file-per-node collates data fromdifferent processesonto a defined number of configoutput-nodes before outputting to disk with thetotal data spread out with a different file per output node This has good perfor-mance for medium-scale simulations and above (gt100 cores) with a reasonablenumber of output nodes (typically 1 per physical node) Small simulations (lt100cores) benefit from a larger number of output processes to maximise bandwidthfro the independent write operations For typical simulations with gt 40000 atomsper core striping of the parallel file system improves performance while for lessatoms striping can be detrimental and should be disabled This option is also bestfor distributed file systems typical on local resources such as university clusters

The file-per-process option means every process in the simulation outputs itsown data to disk independent of all others The option is available for advancedtuning but is generally not recommended for typical simulations due to the largenumber of small files generated complicating data analysis and generally havingvery poor performance

The mpi-io option uses the MPI library routines to output a large singleshared file Enabling this option automatically forces binary data output Ingeneral this option gives good performance for large systems with a single filefor each configuration snapshot In general this gives worse performance thanthe file-per-node option except for the largest system sizes

configoutput-nodes = int [default 1] Specifies the number of files to be gen-erated per snapshot For typical small scale simulations (on a single physicalnode) the default value of 1 is fine For larger scale simulations more outputnodes are beneficial to achieve maximum performance with one output nodeper physical node being a sensible choice but this can be specified up to the

44

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 46: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

maximum number of processes in the simulation

45

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 47: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

7 Material File Command Reference

The material file defines all the magnetic properties of the materials used in thesimulation including exchange anisotropy damping etc Material properties aredefined by an index number for eachmaterial starting at one Material propertiesare then defined as follows

material[index]keyword = value unit

followed by a carriage return so that each property is defined on a separate lineThe defined keywords are listed below The material file is largely free-formatapart from the first line which must specify the number of materials for thesimulation The material properties can be defined in any order and if omittedthe default value will be used When the same property for a particular materialis defined in the file the last definition (reading top to bottom) will be usedComments can be added to the file using the character which moves the fileparser to the next line

materialnum-materials = int [1-100 default 1] defines the number of mate-rials to be used in the simulation and must be the first uncommented line inthe file If more than n materials are defined then only the first n materials areactually used The maximum number of different materials is currently limited to100 If using a custom unit cell then the number of materials in the unit cell cellmust match the number of materials here otherwise the code will produce anerror

materialmaterial-name = string [default materialn] defines an identifyingname for the material with a maximum length of xx characters The identifyingname is only used in the output files and does not affect the running of the code

materialdamping-constant = float [00-100 default 10] defines the phe-nomenological relaxation rate (damping) in dynamic simulations using the LLGequation For equilibrium properties the damping should be set to 1 (critical

46

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 48: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

damping) while for realistic dynamics the damping should be representative ofthe material Typical values range from 0005 to 01 for most materials

materialexchange-matrix[index] = float [default 00 Jlink] Defines the pair-wise exchange energy between atoms of type index and neighbour-index Thepair wise exchange energy is independent of the coordination number and sothe total exchange integral will depend on the number of nearest neighbours forthe crystal lattice The exchange energy must be defined between all materialpairs in the simulation with positive values representing ferromagnetic couplingand negative values representing anti ferromagnetic coupling For a ferromagnetwith nearest neighbour exchange the pairwise exchange energy can be foundfrom the Curie temperature by the meanfield expression

Jij =3kBTC

983171z

where Jij is the exchange energy kB is the Boltzmann constant TC is the Curietemperature z is the coordination number (number of nearest neighbours) and983171 is a correction factor to account for spin wave fluctuations in different crystallattices If a custom unit cell file is used the exchange values defined here areignored

materialatomic-spin-moment = float [001+ microB default 172 microB ] Definesthe local effective spin moment for each atomic site Atomic moments can befound fromab-initio calculations or derived from low temperaturemeasurementsof the saturation magnetisation The atomic spin moments are related to themacroscopic magnetisation by the expression

microS =MSa

3

n

where a is the lattice constantn is the number of atomsper unit cell andMS is thesaturationmagnetisation in units of JTm3 (Am) Note that unlikemicromagneticsimulations atomistic simulations always use zero-K values of the spin momentssince thermal fluctuations of the magnetisation are provided by the model Smallvalues (lt 1microB) will typically lead to integration problems for the LLG unlesssub-femtosecond time steps are used

materialuniaxial-anisotropy-constant = float [default 00 Jatom] Definesthe local second order single-ion magnetocrystalline anisotropy constant at eachatomic site The anisotropy energy is given by the expression

Ei = minusk2(Si middot ei)2

47

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 49: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

where Si is the local spin direction and ei is the easy axis unit vector Positivevalues of k2 give a preferred easy axis orientation and negative v alues givea preferred easy plane orientation of the spin perpendicular to the easy axisdirection

materialsecond-order-uniaxial-anisotropy-constant =float [default 00 Jatom]Has the samemeaning and is the preferred form formaterialuniaxial-anisotropy-constant

materialfourth-order-uniaxial-anisotropy-constant =float [default 00 Jatom]implements fourth order uniaxial anisotropy as implemented with sphericalharmonics

materialcubic-anisotropy-constant = float [default 00 Jatom] Defines thelocal cubic magnetocrystalline anisotropy constant at each atomic site Theanisotropy energy is given by the expression

Ei = minuskc

2(S4

x + S4y + S4

z )

where Sxyz are the components of the local spin direction and kc is the cubicanisotropy constant Positive values of kc give a preferred easy axis orientationalong the [001] directions medium-hard along the [110] directions and hard alongthe [111] directions Negative values give a preferred easy direction along the[111] directions medium ahead along the [110] directions and hard along the[100] directions

materialfourth-order-cubic-anisotropy-constant =float [default 00 Jatom]Has the samemeaning andpreferred form formaterialcubic-anisotropy-constantmaterialuniaxial-anisotropy-direction = float vector [default (001)] A unitvector ei describing the magnetic easy axis direction for uniaxial anisotropy Thevector is entered in comma delimited form - For example

material[1]uniaxial-anisotropy-direction = 001

The unit vector is self normalising and so the direction can be expressed instandard form (with length r = 1) or in terms of crystallographic directions eg[111]

Random anisotropy can be specified using

48

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 50: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

material[1]uniaxial-anisotropy-direction = random

which allocates each atom in thematerial a random anisotropy vector in threedimensions This may applicable to truly amorphous Rare earth alloys where nolocal anisotropy direction is preferred

Random anisotropy for each grain in the simulation (specified by generating avoronoi structure or particle array) can be specified using

material[1]uniaxial-anisotropy-direction = random-grain

which allocates each atom in thematerial a random anisotropy vector in threedimensions giving all atoms of the material in each grain a different anisotropyvector Both random anisotropies are compatible with higher order uniaxialanisotropy but not lattice anisotropy or cubic anisotropy

materialsurface-anisotropy-constant = float default 00 (Jatom) Describesthe surface anisotropy constant in theNeacuteel pair anisotropymodel The anisotropyis given by a summation over nearest neighbour atoms given by

Ei = +1

2

nn983131

j

ks(S middot rij)2

where ks is the surface anisotropy constant between atoms i and j and rij is aunit vector between sites i and j

neel-anisotropy-constant[index] = float [default 00 J] Has the same meaningand is the preferred form for materialsurface-anisotropy-constant

lattice-anisotropy-constant = float [default 00 Jatom] Defines anisotropyarising from temperature dependent lattice expansion such as in RETM alloysThe temperature dependence of the lattice anisotropy is defined with a userdefined function specified in the parameter lattice-anisotropy-file

lattice-anisotropy-file = string Defines a file containing the temperature de-pendence of anisotropy arising from lattice expansion The first line of thefile specifies the number of points followed by a list of pairs indicating thetemperature (in K) and normalised lattice anisotropy typically of order 1 at T =

0K The specified points are linearly interpolated by the code and so excessivelyhigh resolution is not required for high accuracy and 1 K resolution is typically

49

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 51: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

sufficient for most problems

materialrelative-gammafloat [default 1] defines the gyromagnetic ratio of thematerial relative to that of the electron γe = 176 Tminus1sminus1 Valid values are in therange 001 - 1000 For most materials γr = 1

materialinitial-spin-direction float vector bool [default (001) false] deter-mines the initial direction of the spins in the material Value can wither be a unitvector defining a direction in space or a boolean which initialises each spin to adifferent random direction (equivalent to infinite temperature) As with other unitvectors a normalised value or crystallographic notation (eg [110]) may be used

materialmaterial-element string [default Fe] defines a purely descriptivechemical element for the material which gives visual contrast in a range ofinteractive atomic structure viewers such as jmol rasmol etc In rasmol Fe is agold colour H is white Li is a deep red O is red B is green andAg is amediumgreyThis parameter has no relevance to the simulation at all and only appears whenoutputting atomic coordinates which can be post-processed to be viewable inrasmol The contrast is particularly useful in inspecting the generated structuresparticularly ones with a high degree of complexity

materialgeometry-file string [default ] specifies a filename containing aseries of connected points in space which is used to cut a specified shape fromthe material in a process similar to lithography The first line defines the totalnumber of points which must be in the range 3-100 (A minimum of three pointsis required to define a polygon) The points are normalised to the sample sizeand so all points are defined as x y pairs in the range 0-1 with one point per lineThe last point is automatically connected first so need not be defined twice

materialalloy-host flag [ default off ] is a keyword which if specified scansover all other materials to replace the desired fraction of host atoms with alloyatoms This is primarily used to create random alloys of materials with differentproperties (such as FeCo NiFe) or disordered ferrimagnets (such as GdFeCo)

materialalloy-fraction[index] = float [ 0-1 default 00 ] defines the fractionalnumber of atoms of the host material to be replaced by atoms of material index

materialminimum-height = float [ 0-1 default 00 ] defines the minimum

50

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 52: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

height of the material as a fraction of the total height z of the system By definingdifferent minimum and maximum heights it is easy to define a multilayer systemconsisting of different materials such as FMAFM or ECC recording media

material 1minimum 1

maximum 1

maximum 2

system-max-z = 1

system-min-z = 0

minimum 2material 2

Figure 71 Schematic diagram showing definition of a multilayer system consisting of twomaterials The minimum-height and maximum-height are defined as a fraction of the totalz-height of the system

The heights of thematerial are applied when the crystal is generated and so ingeneral further geometry changes can also be applied for example cutting a cylin-der shape or voronoi granular media while preserving the multilayer structureThe code will also print a warning if materials overlap their minimummaximumranges since such behaviour is usually (but not always) undesirable

materialmaximum-height = float [ 0-1 default 10 ] defines the maximumheight of the material as a fraction of the total height z of the system Seematerialminimum-height for more details

materialcore-shell-size = float [ 0-1 default 10 ] defines the radial extentof a material as a fraction of the particle radius This parameter is used togenerate core-shell nanoparticles consisting of two or more distinct layers Thecore-shell-size is compatible with spherical ellipsoidal cylindrical truncatedoctahedral and cuboid shaped particles In addition when particle arrays aregenerated all particles are also core-shell type This option is also comparablewith theminimummaximum-height options allowing for partially filled or coatednanoparticles

materialinterface-roughness = float [ 0-1 default 10 ] defines interfacialroughness in multilayer systems

materialintermixing[index] = float [ 0-1 default 10 ] defines intermixingbetween adjacent materials in multilayer systems The intermixing is defined as

51

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 53: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

parti

cle-

size

particle-size

maximum-height 2

maximum-height 1

material 1

material 2

material 1

material 2

minimum-height

core

-she

ll-si

ze

core-shell-sizea b

Figure 72 (a) Schematic diagram showing definition of a nanoparticle with twomaterials withdifferent radii core-shell-size is defined as a fraction of the particle radius (particle-size2)(b) Schematic diagram showing side-on iew of a cylinder consisting of two materials withdifferent core-shell-size and different maximumheights Part of the corematerial is exposedwhile the other part is covered with the other material

a fraction of the total system height and so small values are usually used Theintermixing defines the mixing of material index into the host material and canbe asymmetric (a -gt b = b -gt a)

materialdensity = float [ 0-1 default 10 ] defines the fraction of atoms toremove randomly from the material (density)

materialcontinuous = flag [ default off ] is a keyword which defines materialswhich ignore granular CSG operations such as particles voronoi media andparticle arrays

materialfill-space = flag [ default off ] is a keyword which defines materialswhich obey granular CSG operations such as particles voronoimedia and particlearrays but in-fill the void created This is useful for embedded nanoparticles andrecording media with dilute interlayer coupling

materialcouple-to-phononic-temperature = flag [ default off ] couples thespin system of the material to the phonon temperature instead of the electrontemperature in pulsed heating simulations utilising the two temperature modelTypically used for rare-earth elements

52

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 54: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

materialtemperature-rescaling-exponent = float [ 0-10 default 10 ] definesthe exponent when rescaled temperature calculations are used The higher theexponent the flatter the magnetisation is at low temperature This parametermust be used with temperature-rescaling-curie-temperature to have any effect

materialtemperature-rescaling-curie-temperature = float [ 0-10000 de-fault 00 ] defines the Curie temperature of the material to which temperaturerescaling is appliedmaterialnon-magnetic flag [default remove] defines atoms of that materialas being non-magnetic Non-magnetic atoms by default are removed from thesimulation and play no role in the simulation If configuration output is specifiedthen the positions of the non-magnetic atoms are saved and processed by thevdc utility This preserves the existence of non-magnetic atoms when generatingvisualisations but without needing to simulate them artificially The keep optionpreserves the non-magnetic atoms in the simulation for parallelization efficiencybut instructs the dipole field solver to ignore them for improved accuracy

Example material files

53

Bibliography

54

Page 55: VAMPIRE · 5 Unit Cell Files 22 The unit cell file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Example: Simple Cubic System ...

Bibliography

54


Recommended