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()
83 class(interaction_partner_t),
target,
intent(inout) :: partner
84 class(nlcc_t),
pointer :: this
92 this%partner => partner
99 class(nlcc_t),
intent(inout) :: this
100 class(mesh_t),
target,
intent(in) :: mesh
101 type(ions_t),
target,
intent(in) :: ions
108 safe_allocate(this%density(1:mesh%np,1))
110 this%atoms_dist => ions%atoms_dist
111 this%atom => ions%atom
112 this%space => ions%space
114 this%latt => ions%latt
121 class(nlcc_t),
intent(inout) :: this
129 this%density(:,:) =
m_zero
131 do ia = this%atoms_dist%start, this%atoms_dist%end
132 if (this%atom(ia)%species%is_ps_with_nlcc())
then
133 call species_get_nlcc(this%atom(ia)%species, this%space, this%latt, this%pos(:, ia), this%mesh, &
134 this%density(:,1), accumulate=.
true.)
139 if (this%atoms_dist%parallel)
then
154 safe_deallocate_a(this%density)
176 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, 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)