magneticdisorder Module

  • Uses:

  • konstanter
  • helpers
  • geometryfunctions
  • type_crystalstructure
  • type_symmetrylist
  • type_forcemap
  • type_blas_lapack_wrappers
module~~magneticdisorder~~UsesGraph module~magneticdisorder magneticdisorder type_forcemap type_forcemap type_forcemap->module~magneticdisorder geometryfunctions geometryfunctions geometryfunctions->module~magneticdisorder helpers helpers helpers->module~magneticdisorder konstanter konstanter konstanter->module~magneticdisorder type_symmetrylist type_symmetrylist type_symmetrylist->module~magneticdisorder type_blas_lapack_wrappers type_blas_lapack_wrappers type_blas_lapack_wrappers->module~magneticdisorder type_crystalstructure type_crystalstructure type_crystalstructure->module~magneticdisorder
Help
module~~magneticdisorder~~UsesGraph module~magneticdisorder magneticdisorder type_forcemap type_forcemap type_forcemap->module~magneticdisorder geometryfunctions geometryfunctions geometryfunctions->module~magneticdisorder helpers helpers helpers->module~magneticdisorder konstanter konstanter konstanter->module~magneticdisorder type_symmetrylist type_symmetrylist type_symmetrylist->module~magneticdisorder type_blas_lapack_wrappers type_blas_lapack_wrappers type_blas_lapack_wrappers->module~magneticdisorder type_crystalstructure type_crystalstructure type_crystalstructure->module~magneticdisorder
Help

Derived Types

type, private :: lo_magdisorder_shell

Components

TypeVisibility AttributesNameInitial
integer, public :: npair =-lo_hugeint
integer, public, dimension(:), allocatable:: i1
integer, public, dimension(:), allocatable:: i2

type, public :: lo_magdisorder

Components

TypeVisibility AttributesNameInitial
logical, public :: ferromagnetic =.false.

ferromagnetic?

logical, public :: coll =.false.

collinear or noncollinear

integer, public :: nbin =-lo_hugeint

How many bins of different levels of disorder do we want?

integer, public :: nconf =-lo_hugeint

How many configurations per bin

integer, public :: nshell =-lo_hugeint

number of magnetic coordination shells

type(lo_magdisorder_shell), public, dimension(:), allocatable:: sh

info about the coordination shells

integer, public, dimension(:,:,:), allocatable:: collhistory

history of configurations

real(kind=flyt), public, dimension(:,:,:,:), allocatable:: noncollhistory
integer, public, dimension(:), allocatable:: initial_collinear_configuration

initial configuration

real(kind=flyt), public, dimension(:,:), allocatable:: initial_noncollinear_configuration
integer, public, dimension(:), allocatable:: sites

which sites are switchable?

Type-Bound Procedures

procedure, public :: generate

create the structure

procedure, public :: correlation_function

get the correlation function

procedure, public :: optimize

generate magnetic sqs

procedure, public :: dump_configurations

dump to file


Functions

private function random_unit_vector() result(v)

get a sphericall random unit vector

Arguments

None

Return Value real(kind=flyt), dimension(3)


Subroutines

private subroutine zerosum(x, rel)

make sure an AFM configuration has net magnetic moment of 0

Arguments

Type IntentOptional AttributesName
real(kind=flyt), intent(inout), dimension(:,:):: x
logical, intent(in), dimension(:):: rel

private subroutine dump_configurations(mag, map, uc, ss, nsubconf)

write(,) 'iter:',iter,'ss',tochar(flipatoms)

Arguments

Type IntentOptional AttributesName
class(lo_magdisorder), intent(in) :: mag

shells and stuff

type(lo_forcemap), intent(in) :: map
type(lo_crystalstructure), intent(in) :: uc
type(lo_crystalstructure), intent(in) :: ss
integer, intent(in) :: nsubconf

private subroutine correlation_function(mag, collconf, noncollconf, cf)

calculate the correlation function

Arguments

Type IntentOptional AttributesName
class(lo_magdisorder), intent(in) :: mag

list of shells and stuff

integer, intent(in), optional dimension(:):: collconf

current collinear magnetic configuration

real(kind=flyt), intent(in), optional dimension(:,:):: noncollconf

current noncollinear magnetic configuration

real(kind=flyt), intent(out), dimension(:):: cf

the correlation function per shell

private subroutine optimize(mag, ss, nconf, nbin)

generate optimized configuration

Arguments

Type IntentOptional AttributesName
class(lo_magdisorder), intent(inout) :: mag

shells and stuff

type(lo_crystalstructure), intent(in) :: ss

crystal structure

integer, intent(in) :: nconf

how many configurations do I want in each bin?

integer, intent(in) :: nbin

how many bins?

private subroutine generate(mag, sl, uc, ss)

set up all the coordination shells and stuff

Arguments

Type IntentOptional AttributesName
class(lo_magdisorder), intent(out) :: mag

to keep track of all the coordination shells

type(lo_symlist), intent(in) :: sl

a symmetry table, useful for a bunch of stuff

type(lo_crystalstructure), intent(in) :: uc

unit cell

type(lo_crystalstructure), intent(in) :: ss

supercell