Octopus
hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t Type Reference

The basic Hamiltonian for electronic system. More...

Detailed Description

The basic Hamiltonian for electronic system.

This object stores and applies an electromagnetic potential that can be represented by different types of potentials.

Different components of scalar or vector potentials are added together as for the application of the Hamiltonian onlt the sum matters.

Definition at line 156 of file hamiltonian_elec_base.F90.

Public Attributes

type(nl_operator_t), pointer, public kinetic
 kinetic energy operator More...
 
real(real64), dimension(:, :), allocatable, public potential
 real scalar potential More...
 
real(real64), dimension(:, :), allocatable, public impotential
 imaginary scalar potential More...
 
real(real64), dimension(:), allocatable, public uniform_magnetic_field
 uniform magnetic field (assumed to be in Gaussian units) More...
 
real(real64), dimension(:, :), allocatable, public magnetic_field
 non-uniform magnetic field (assumed to be in Gaussian units) More...
 
real(real64), dimension(:, :), allocatable, public zeeman_pot
 
real(real64), dimension(:), allocatable, public uniform_vector_potential
 a uniform vector potential More...
 
real(real64), dimension(:, :), allocatable, public vector_potential
 general (non-uniform) vector potential More...
 
type(accel_mem_t), public vtau_accel
 

Private Member Functions

procedure init => hamiltonian_elec_base_init
 initialize the hamiltonian_elec_base_t object More...
 
procedure end => hamiltonian_elec_base_end
 Finalizer for hamiltonian_elec_base_t. More...
 
procedure clear => hamiltonian_elec_base_clear
 This functions sets to zero all fields that are currently allocated. More...
 
procedure update_magnetic_terms => hamiltonian_elec_base_update_magnetic_terms
 
procedure allocate_field => hamiltonian_elec_base_allocate
 This function ensures that the corresponding field is allocated. More...
 
procedure accel_copy_pot => hamiltonian_elec_base_accel_copy_pot
 copy the potential to the acceleration device buffer More...
 
procedure has_magnetic => hamiltonian_elec_base_has_magnetic
 return .true. if the Hamiltonian contains any magnetic field More...
 
procedure has_zeeman => hamiltonian_elec_base_has_zeeman
 return .true. of the Hamiltonian contains a zeeman term More...
 
procedure has_vector_potential => hamiltonian_elec_base_has_vector_potential
 return .true. of the Hamiltonian contains any vector potential More...
 
procedure calc_rashba => hamiltonian_elec_base_rashba
 
procedure dcalc_magnetic => dhamiltonian_elec_base_magnetic
 apply magnetic terms form the Hamiltonian to the wave functions More...
 
procedure zcalc_magnetic => zhamiltonian_elec_base_magnetic
 apply magnetic terms form the Hamiltonian to the wave functions More...
 
procedure dcalc_local => dhamiltonian_elec_base_local
 apply the local potential (stored in the hamiltonian) to the states More...
 
procedure zcalc_local => zhamiltonian_elec_base_local
 apply the local potential (stored in the hamiltonian) to the states More...
 

Private Attributes

integer nspin
 number of spin channels More...
 
real(real64) mass
 Needed to compute the magnetic terms, if the mass is not one. More...
 
real(real64) rashba_coupling
 Rashba coupling strength. More...
 
type(accel_mem_tpotential_accel
 
type(accel_mem_timpotential_accel
 

Member Function/Subroutine Documentation

◆ init()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::init
private

initialize the hamiltonian_elec_base_t object

Definition at line 179 of file hamiltonian_elec_base.F90.

◆ end()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::end
private

Finalizer for hamiltonian_elec_base_t.

Definition at line 181 of file hamiltonian_elec_base.F90.

◆ clear()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::clear
private

This functions sets to zero all fields that are currently allocated.

Definition at line 183 of file hamiltonian_elec_base.F90.

◆ update_magnetic_terms()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::update_magnetic_terms
private

Definition at line 185 of file hamiltonian_elec_base.F90.

◆ allocate_field()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::allocate_field
private

This function ensures that the corresponding field is allocated.

Definition at line 187 of file hamiltonian_elec_base.F90.

◆ accel_copy_pot()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::accel_copy_pot
private

copy the potential to the acceleration device buffer

Definition at line 189 of file hamiltonian_elec_base.F90.

◆ has_magnetic()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::has_magnetic
private

return .true. if the Hamiltonian contains any magnetic field

Definition at line 191 of file hamiltonian_elec_base.F90.

◆ has_zeeman()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::has_zeeman
private

return .true. of the Hamiltonian contains a zeeman term

Definition at line 193 of file hamiltonian_elec_base.F90.

◆ has_vector_potential()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::has_vector_potential
private

return .true. of the Hamiltonian contains any vector potential

Definition at line 195 of file hamiltonian_elec_base.F90.

◆ calc_rashba()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::calc_rashba
private

Definition at line 197 of file hamiltonian_elec_base.F90.

◆ dcalc_magnetic()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::dcalc_magnetic
private

apply magnetic terms form the Hamiltonian to the wave functions

Definition at line 199 of file hamiltonian_elec_base.F90.

◆ zcalc_magnetic()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::zcalc_magnetic
private

apply magnetic terms form the Hamiltonian to the wave functions

Definition at line 201 of file hamiltonian_elec_base.F90.

◆ dcalc_local()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::dcalc_local
private

apply the local potential (stored in the hamiltonian) to the states

Parameters
[in]stddimensions of the states
[in]ispinspin channel
[in]psiboriginal states
[in,out]vpsibstates multiplied by local potential

Definition at line 203 of file hamiltonian_elec_base.F90.

◆ zcalc_local()

procedure hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::zcalc_local
private

apply the local potential (stored in the hamiltonian) to the states

Parameters
[in]stddimensions of the states
[in]ispinspin channel
[in]psiboriginal states
[in,out]vpsibstates multiplied by local potential

Definition at line 205 of file hamiltonian_elec_base.F90.

Member Data Documentation

◆ nspin

integer hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::nspin
private

number of spin channels

Definition at line 158 of file hamiltonian_elec_base.F90.

◆ mass

real(real64) hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::mass
private

Needed to compute the magnetic terms, if the mass is not one.

Definition at line 159 of file hamiltonian_elec_base.F90.

◆ rashba_coupling

real(real64) hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::rashba_coupling
private

Rashba coupling strength.

Definition at line 160 of file hamiltonian_elec_base.F90.

◆ kinetic

type(nl_operator_t), pointer, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::kinetic

kinetic energy operator

Definition at line 161 of file hamiltonian_elec_base.F90.

◆ potential

real(real64), dimension(:, :), allocatable, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::potential

real scalar potential

Definition at line 162 of file hamiltonian_elec_base.F90.

◆ impotential

real(real64), dimension(:, :), allocatable, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::impotential

imaginary scalar potential

Definition at line 163 of file hamiltonian_elec_base.F90.

◆ uniform_magnetic_field

real(real64), dimension(:), allocatable, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::uniform_magnetic_field

uniform magnetic field (assumed to be in Gaussian units)

Definition at line 164 of file hamiltonian_elec_base.F90.

◆ magnetic_field

real(real64), dimension(:, :), allocatable, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::magnetic_field

non-uniform magnetic field (assumed to be in Gaussian units)

Definition at line 166 of file hamiltonian_elec_base.F90.

◆ zeeman_pot

real(real64), dimension(:, :), allocatable, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::zeeman_pot

Definition at line 168 of file hamiltonian_elec_base.F90.

◆ uniform_vector_potential

real(real64), dimension(:), allocatable, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::uniform_vector_potential

a uniform vector potential

in some cases, absorbed in the vector_potential i.e. the non-uniform vector potential

Definition at line 169 of file hamiltonian_elec_base.F90.

◆ vector_potential

real(real64), dimension(:, :), allocatable, public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::vector_potential

general (non-uniform) vector potential

Definition at line 173 of file hamiltonian_elec_base.F90.

◆ potential_accel

type(accel_mem_t) hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::potential_accel
private

Definition at line 174 of file hamiltonian_elec_base.F90.

◆ impotential_accel

type(accel_mem_t) hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::impotential_accel
private

Definition at line 175 of file hamiltonian_elec_base.F90.

◆ vtau_accel

type(accel_mem_t), public hamiltonian_elec_base_oct_m::hamiltonian_elec_base_t::vtau_accel

Definition at line 176 of file hamiltonian_elec_base.F90.


The documentation for this type was generated from the following file: