lo_magdisorder Derived Type

type, public :: lo_magdisorder

type~~lo_magdisorder~~InheritsGraph type~lo_magdisorder lo_magdisorder type~lo_magdisorder_shell lo_magdisorder_shell type~lo_magdisorder_shell->type~lo_magdisorder sh


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


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

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

    set up all the coordination shells and stuff


    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


procedure, public :: correlation_function

get the correlation function

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

    calculate the correlation function


    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

procedure, public :: optimize

generate magnetic sqs

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

    generate optimized configuration


    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?

procedure, public :: dump_configurations

dump to file

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

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


    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