Octopus
ion_dynamics_oct_m Module Reference

Data Types

type  cell_state_t
 
type  ion_dynamics_t
 
type  ion_state_t
 
type  ion_td_displacement_t
 
type  nose_hoover_t
 

Functions/Subroutines

subroutine, public ion_dynamics_init (this, namespace, ions, symmetrize, symm)
 
subroutine, public ion_dynamics_end (this)
 
subroutine, public ion_dynamics_propagate (this, ions, time, dt, namespace)
 Interface for the ion/cell dynamics. More...
 
subroutine ion_dynamics_update_temperature (this, time, namespace)
 Update the temperature of the ions in case of a thermostat. More...
 
subroutine ion_dynamics_propagate_driven_ions (this, ions, time, dt)
 Move ions following a driven motion. More...
 
subroutine ion_dynamics_propagate_ions (this, ions, time, dt)
 Time evolution of the ions. More...
 
subroutine ion_dynamics_propagate_cell (this, ions, time, dt, namespace)
 Time-evolution of the lattice vectors. More...
 
subroutine nh_chain (this, ions)
 
subroutine, public ion_dynamics_propagate_vel (this, ions, atoms_moved)
 
subroutine, public ion_dynamics_verlet_step1 (ions, q, v, fold, dt)
 A bare verlet integrator. More...
 
subroutine, public ion_dynamics_verlet_step2 (ions, v, fold, fnew, dt)
 A bare verlet integrator. More...
 
subroutine, public ion_dynamics_save_state (this, ions, state)
 
subroutine, public ion_dynamics_restore_state (this, ions, state)
 
logical pure function ion_dynamics_ions_move (this)
 
logical pure function, public ion_dynamics_drive_ions (this)
 Is the ion dynamics activated or not. More...
 
logical pure function ion_dynamics_cell_relax (this)
 Is the cell dynamics activated or not. More...
 
logical pure function ion_dynamics_is_active (this)
 Is the cell dynamics activated or not. More...
 
real(real64) function, public ion_dynamics_temperature (ions)
 This function returns the ionic temperature in energy units. More...
 
logical function, public ion_dynamics_freeze (this)
 Freezes the ionic movement. More...
 
subroutine, public ion_dynamics_unfreeze (this)
 Unfreezes the ionic movement. More...
 
subroutine, public ion_dynamics_dump (this, restart, ierr)
 
subroutine, public ion_dynamics_load (this, restart, ierr)
 
subroutine ion_dynamics_update_stress (this, space, stress, rlattice, rcell_volume)
 Updates the stress tensor for the ion dynamics. More...
 
subroutine, public electrons_lattice_vectors_update (namespace, gr, space, psolver, kpoints, mc, qtot, new_latt)
 

Variables

integer, parameter thermo_none = 0
 
integer, parameter thermo_scal = 1
 
integer, parameter thermo_nh = 2
 

Function/Subroutine Documentation

◆ ion_dynamics_init()

subroutine, public ion_dynamics_oct_m::ion_dynamics_init ( type(ion_dynamics_t), intent(out)  this,
type(namespace_t), intent(in)  namespace,
type(ions_t), intent(inout)  ions,
logical, intent(in)  symmetrize,
type(symmetrizer_t), intent(in), optional, target  symm 
)

Definition at line 253 of file ion_dynamics.F90.

◆ ion_dynamics_end()

subroutine, public ion_dynamics_oct_m::ion_dynamics_end ( type(ion_dynamics_t), intent(inout)  this)

Definition at line 710 of file ion_dynamics.F90.

◆ ion_dynamics_propagate()

subroutine, public ion_dynamics_oct_m::ion_dynamics_propagate ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
type(namespace_t), intent(in)  namespace 
)

Interface for the ion/cell dynamics.

Definition at line 740 of file ion_dynamics.F90.

◆ ion_dynamics_update_temperature()

subroutine ion_dynamics_oct_m::ion_dynamics_update_temperature ( type(ion_dynamics_t), intent(inout)  this,
real(real64), intent(in)  time,
type(namespace_t), intent(in)  namespace 
)
private

Update the temperature of the ions in case of a thermostat.

Definition at line 799 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_driven_ions()

subroutine ion_dynamics_oct_m::ion_dynamics_propagate_driven_ions ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  time,
real(real64), intent(in)  dt 
)
private

Move ions following a driven motion.

This can be a constant velocity, or a prescribed time-dependent displacement

Definition at line 828 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_ions()

subroutine ion_dynamics_oct_m::ion_dynamics_propagate_ions ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  time,
real(real64), intent(in)  dt 
)
private

Time evolution of the ions.

On input, the coordinates are in reduced coordinates, not in Cartesian coordinates. Coordinates are returned in reduced coordinate

Definition at line 868 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_cell()

subroutine ion_dynamics_oct_m::ion_dynamics_propagate_cell ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
type(namespace_t), intent(in)  namespace 
)
private

Time-evolution of the lattice vectors.

Definition at line 913 of file ion_dynamics.F90.

◆ nh_chain()

subroutine ion_dynamics_oct_m::nh_chain ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions 
)
private

Definition at line 966 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_vel()

subroutine, public ion_dynamics_oct_m::ion_dynamics_propagate_vel ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
logical, intent(out), optional  atoms_moved 
)
Parameters
[out]atoms_movedReturns true if the atoms were moved by this function.

Definition at line 1010 of file ion_dynamics.F90.

◆ ion_dynamics_verlet_step1()

subroutine, public ion_dynamics_oct_m::ion_dynamics_verlet_step1 ( type(ions_t), intent(in)  ions,
real(real64), dimension(:, :), intent(inout)  q,
real(real64), dimension(:, :), intent(inout)  v,
real(real64), dimension(:, :), intent(in)  fold,
real(real64), intent(in)  dt 
)

A bare verlet integrator.

Definition at line 1064 of file ion_dynamics.F90.

◆ ion_dynamics_verlet_step2()

subroutine, public ion_dynamics_oct_m::ion_dynamics_verlet_step2 ( type(ions_t), intent(in)  ions,
real(real64), dimension(:, :), intent(inout)  v,
real(real64), dimension(:, :), intent(in)  fold,
real(real64), dimension(:, :), intent(in)  fnew,
real(real64), intent(in)  dt 
)

A bare verlet integrator.

Definition at line 1099 of file ion_dynamics.F90.

◆ ion_dynamics_save_state()

subroutine, public ion_dynamics_oct_m::ion_dynamics_save_state ( type(ion_dynamics_t), intent(in)  this,
type(ions_t), intent(in)  ions,
type(ion_state_t), intent(out)  state 
)

Definition at line 1132 of file ion_dynamics.F90.

◆ ion_dynamics_restore_state()

subroutine, public ion_dynamics_oct_m::ion_dynamics_restore_state ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
type(ion_state_t), intent(inout)  state 
)

Definition at line 1159 of file ion_dynamics.F90.

◆ ion_dynamics_ions_move()

logical pure function ion_dynamics_oct_m::ion_dynamics_ions_move ( class(ion_dynamics_t), intent(in)  this)
private

Definition at line 1187 of file ion_dynamics.F90.

◆ ion_dynamics_drive_ions()

logical pure function, public ion_dynamics_oct_m::ion_dynamics_drive_ions ( type(ion_dynamics_t), intent(in)  this)

Is the ion dynamics activated or not.

Definition at line 1197 of file ion_dynamics.F90.

◆ ion_dynamics_cell_relax()

logical pure function ion_dynamics_oct_m::ion_dynamics_cell_relax ( class(ion_dynamics_t), intent(in)  this)
private

Is the cell dynamics activated or not.

Definition at line 1206 of file ion_dynamics.F90.

◆ ion_dynamics_is_active()

logical pure function ion_dynamics_oct_m::ion_dynamics_is_active ( class(ion_dynamics_t), intent(in)  this)
private

Is the cell dynamics activated or not.

Definition at line 1215 of file ion_dynamics.F90.

◆ ion_dynamics_temperature()

real(real64) function, public ion_dynamics_oct_m::ion_dynamics_temperature ( type(ions_t), intent(in)  ions)

This function returns the ionic temperature in energy units.

Definition at line 1225 of file ion_dynamics.F90.

◆ ion_dynamics_freeze()

logical function, public ion_dynamics_oct_m::ion_dynamics_freeze ( type(ion_dynamics_t), intent(inout)  this)

Freezes the ionic movement.

Definition at line 1243 of file ion_dynamics.F90.

◆ ion_dynamics_unfreeze()

subroutine, public ion_dynamics_oct_m::ion_dynamics_unfreeze ( type(ion_dynamics_t), intent(inout)  this)

Unfreezes the ionic movement.

Definition at line 1256 of file ion_dynamics.F90.

◆ ion_dynamics_dump()

subroutine, public ion_dynamics_oct_m::ion_dynamics_dump ( type(ion_dynamics_t), intent(in)  this,
type(restart_t), intent(in)  restart,
integer, intent(out)  ierr 
)

Definition at line 1262 of file ion_dynamics.F90.

◆ ion_dynamics_load()

subroutine, public ion_dynamics_oct_m::ion_dynamics_load ( type(ion_dynamics_t), intent(inout)  this,
type(restart_t), intent(in)  restart,
integer, intent(out)  ierr 
)

Definition at line 1283 of file ion_dynamics.F90.

◆ ion_dynamics_update_stress()

subroutine ion_dynamics_oct_m::ion_dynamics_update_stress ( class(ion_dynamics_t), intent(inout)  this,
class(space_t), intent(in)  space,
real(real64), dimension(3,3), intent(in)  stress,
real(real64), dimension(:,:), intent(in)  rlattice,
real(real64), intent(in)  rcell_volume 
)
private

Updates the stress tensor for the ion dynamics.

Definition at line 1305 of file ion_dynamics.F90.

◆ electrons_lattice_vectors_update()

subroutine, public ion_dynamics_oct_m::electrons_lattice_vectors_update ( type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
class(space_t), intent(in)  space,
type(poisson_t), intent(inout)  psolver,
type(kpoints_t), intent(inout)  kpoints,
type(multicomm_t), intent(in)  mc,
real(real64), intent(in)  qtot,
type(lattice_vectors_t), intent(in)  new_latt 
)

Definition at line 1349 of file ion_dynamics.F90.

Variable Documentation

◆ thermo_none

integer, parameter ion_dynamics_oct_m::thermo_none = 0
private

Definition at line 171 of file ion_dynamics.F90.

◆ thermo_scal

integer, parameter ion_dynamics_oct_m::thermo_scal = 1
private

Definition at line 171 of file ion_dynamics.F90.

◆ thermo_nh

integer, parameter ion_dynamics_oct_m::thermo_nh = 2
private

Definition at line 171 of file ion_dynamics.F90.