This module implements the ZORA terms for the Hamoiltonian.
|
class(zora_t) function, pointer | zora_constructor (namespace, der, st_d, ep, mass) |
| initialize the ZORA More...
|
|
subroutine | zora_finalize (this) |
| finalize the ZORA object and free memory More...
|
|
subroutine | zora_update (this, der, potential) |
| update the ZORA potentials More...
|
|
subroutine | dzora_apply_batch (this, mesh, der, states_dim, psib, hpsib) |
| apply the ZORA to a batch of states psib More...
|
|
subroutine | zzora_apply_batch (this, mesh, der, states_dim, psib, hpsib) |
| apply the ZORA to a batch of states psib More...
|
|
subroutine zora_oct_m::zora_update |
( |
class(zora_t), intent(inout) |
this, |
|
|
class (derivatives_t), intent(in) |
der, |
|
|
real(real64), dimension(:, :), intent(in), contiguous |
potential |
|
) |
| |
|
private |
update the ZORA potentials
This routine performs calculations, which do not require the wave functions but only depend on the potential.
It calculates:
- \( {\rm zora\%pot}({\bf r}) = \frac{c^2}{2c^2 - V({\bf r})} \)
- \( {\rm zora\%grad_pot}({\bf r}) = \nabla \frac{c^2}{2c^2 - V({\bf r})} \)
and for the fully relativistic case
- \( {\rm zora\%soc}({\bf r}) = {\rm prefactor}({\bf r}) \, \sigma \cdot ( \nabla V({\bf r}) \times {\bf p} )\) = \( {\rm prefactor}({\bf r}) * (\sigma \times ( \nabla V)({\bf r})) \cdot {\bf p} \)
where \( {\rm prefactor}({\bf r}) = {\rm so\_strength} * 2 c^2 / (2 m c^2 - {\rm V({\bf r})^2} ) \)
These are used in dzora_apply_batch() and zzora_apply_batch().
- Parameters
-
[in,out] | this | the ZORA object |
[in] | der | the derivatives |
[in] | potential | dimensions (1:np, 1:thisspin_channels) |
Definition at line 252 of file zora.F90.