57 type(mesh_t),
pointer :: mesh => null()
58 type(space_t),
pointer :: space => null()
62 type(distributed_t),
pointer,
public :: atoms_dist => null()
63 type(atom_t),
pointer,
public :: atom(:) => null()
64 real(real64),
pointer,
public :: pos(:,:) => null()
65 type(lattice_vectors_t),
pointer :: latt => null()
84 class(interaction_partner_t),
target,
intent(inout) :: partner
85 class(nlcc_t),
pointer :: this
93 this%partner => partner
100 class(nlcc_t),
intent(inout) :: this
101 class(mesh_t),
target,
intent(in) :: mesh
102 type(ions_t),
target,
intent(in) :: ions
109 safe_allocate(this%density(1:mesh%np,1))
111 this%atoms_dist => ions%atoms_dist
112 this%atom => ions%atom
113 this%space => ions%space
115 this%latt => ions%latt
124 class(nlcc_t),
intent(inout) :: this
125 type(ions_t),
target,
intent(in) :: ions
129 this%atoms_dist => ions%atoms_dist
130 this%atom => ions%atom
131 this%space => ions%space
133 this%latt => ions%latt
140 class(nlcc_t),
intent(inout) :: this
148 this%density(:,:) =
m_zero
150 do ia = this%atoms_dist%start, this%atoms_dist%end
151 if (this%atom(ia)%species%is_ps_with_nlcc())
then
152 call species_get_nlcc(this%atom(ia)%species, this%space, this%latt, this%pos(:, ia), this%mesh, &
153 this%density(:,1), accumulate=.
true.)
158 if (this%atoms_dist%parallel)
then
169 class(
nlcc_t),
intent(inout) :: this
173 safe_deallocate_a(this%density)
184 type(
nlcc_t),
intent(inout) :: this
195 class(
nlcc_t),
intent(inout) :: this
real(real64), parameter, public m_zero
This module defines the abstract interaction_t class, and some auxiliary classes for interactions.
subroutine, public interaction_end(this)
This module defines classes and functions for interaction partners.
This module defines the meshes, which are used in Octopus.
subroutine nlcc_end(this)
subroutine nlcc_calculate(this)
subroutine nlcc_finalize(this)
subroutine nlcc_init(this, mesh, ions)
class(nlcc_t) function, pointer nlcc_constructor(partner)
subroutine nlcc_calculate_energy(this)
subroutine nlcc_bind(this, ions)
Rebind NLCC helper pointers after copying the ionic geometry. The movers in NLCC reference ionic arra...
subroutine, public profiling_out(label)
Increment out counter and sum up difference between entry and exit time.
subroutine, public profiling_in(label, exclude)
Increment in counter and save entry time.
This module defines the quantity_t class and the IDs for quantities, which can be exposed by a system...
subroutine, public species_get_nlcc(species, space, latt, pos, mesh, rho_core, accumulate)