41#if defined(HAVE_OPENMP)
76 class(batch_t),
allocatable :: p
86 class(mesh_t),
intent(in) :: mesh
87 class(batch_t),
intent(in) :: aa
88 real(real64),
contiguous,
intent(out) :: nrm2(:)
89 logical,
optional,
intent(in) :: reduce
100 nrm2(1:aa%nst) = nrm2(1:aa%nst)**2
101 call mesh%allreduce(nrm2, dim = aa%nst)
102 nrm2(1:aa%nst) =
sqrt(nrm2(1:aa%nst))
113 class(mesh_t),
intent(in) :: mesh
114 class(batch_t),
intent(in) :: aa
115 class(batch_t),
allocatable,
intent(out) :: tmp
116 logical,
optional,
intent(in) :: sqrt_weights
118 type(accel_kernel_t),
save :: kernel_scale
119 integer(int64),
dimension(3) :: gsizes, bsizes
123 assert(mesh%use_vol_pp)
126 call aa%clone_to(tmp)
154#include "mesh_batch_inc.F90"
157#include "complex.F90"
158#include "mesh_batch_inc.F90"
164#include "mesh_batch_inc.F90"
167#include "complex.F90"
168#include "mesh_batch_inc.F90"
175#include "mesh_batch_inc.F90"
178#include "complex.F90"
179#include "mesh_batch_inc.F90"
186#include "mesh_batch_inc.F90"
189#include "complex.F90"
190#include "mesh_batch_inc.F90"
197#include "mesh_batch_inc.F90"
200#include "complex.F90"
201#include "mesh_batch_inc.F90"
208#include "mesh_batch_inc.F90"
211#include "complex.F90"
212#include "mesh_batch_inc.F90"
218#include "mesh_batch_codensity_inc.F90"
221#include "complex.F90"
222#include "mesh_batch_codensity_inc.F90"
226#include "mesh_batch_codensity_inc.F90"
229#include "complex32.F90"
230#include "mesh_batch_codensity_inc.F90"
double sqrt(double __x) __attribute__((__nothrow__
subroutine, public accel_kernel_start_call(this, file_name, kernel_name, flags)
This module implements batches of mesh functions.
integer, parameter, public batch_device_packed
functions are stored in device memory in packed order
This module implements common operations on batches of mesh functions.
This module contains interfaces for BLAS routines You should not use these routines directly....
This module is intended to contain "only mathematical" functions and procedures.
This module defines functions over batches of mesh functions.
subroutine, public zmesh_batch_codensity(mesh, aa, bra, ist_bra, rho, rho_buffer)
calculate the co-densities
subroutine, public smesh_batch_codensity(mesh, aa, bra, ist_bra, rho, rho_buffer)
calculate the co-densities
subroutine, public cmesh_batch_codensity(mesh, aa, bra, ist_bra, rho, rho_buffer)
calculate the co-densities
subroutine, public dmesh_batch_dotp_matrix(mesh, aa, bb, dot, reduce)
Calculate the overlap matrix of two batches.
subroutine, public dmesh_batch_dotp_self(mesh, aa, dot, reduce)
calculate the overlap matrix of a batch with itself
subroutine, public mesh_batch_nrm2(mesh, aa, nrm2, reduce)
Calculate the norms (norm2, not the square!) of a batch of mesh functions.
subroutine, public mesh_batch_weight_device(mesh, aa, tmp, sqrt_weights)
Weighted copy of a device batch: tmp := vol_pp .* aa (per mesh point), used to compute vol_pp-weighte...
subroutine, public zmesh_batch_exchange_points(mesh, aa, forward_map, backward_map)
This functions exchanges points of a mesh according to a certain map. Two possible maps can be given....
subroutine, public zmesh_batch_dotp_vector(mesh, aa, bb, dot, reduce, cproduct)
A simple switch between specialized kernels and generic kernels.
subroutine zpriv_mesh_batch_nrm2(mesh, aa, nrm2)
This function should not be called directly, but through mesh_batch_nrm2.
subroutine, public zmesh_batch_dotp_matrix(mesh, aa, bb, dot, reduce)
Calculate the overlap matrix of two batches.
subroutine, public zmesh_batch_normalize(mesh, psib, norm)
Normalize a batch.
subroutine, public dmesh_batch_orthogonalization(mesh, nst, psib, phib, normalize, overlap, norm, gs_scheme, full_batch)
Orthonormalizes states of phib to the orbitals of nst batches of psi.
subroutine, public zmesh_batch_orthogonalization(mesh, nst, psib, phib, normalize, overlap, norm, gs_scheme, full_batch)
Orthonormalizes states of phib to the orbitals of nst batches of psi.
subroutine, public dmesh_batch_exchange_points(mesh, aa, forward_map, backward_map)
This functions exchanges points of a mesh according to a certain map. Two possible maps can be given....
subroutine, public zmesh_batch_mf_dotp(mesh, aa, psi, dot, reduce, nst)
calculate the dot products between a batch and a vector of mesh functions
subroutine, public dmesh_batch_mf_dotp(mesh, aa, psi, dot, reduce, nst)
calculate the dot products between a batch and a vector of mesh functions
subroutine, public dmesh_batch_codensity(mesh, aa, bra, ist_bra, rho, rho_buffer)
calculate the co-densities
subroutine dpriv_mesh_batch_nrm2(mesh, aa, nrm2)
This function should not be called directly, but through mesh_batch_nrm2.
subroutine, public zmesh_batch_dotp_self(mesh, aa, dot, reduce)
calculate the overlap matrix of a batch with itself
subroutine, public dmesh_batch_normalize(mesh, psib, norm)
Normalize a batch.
subroutine, public dmesh_batch_dotp_vector(mesh, aa, bb, dot, reduce, cproduct)
A simple switch between specialized kernels and generic kernels.
This module defines various routines, operating on mesh functions.
This module defines the meshes, which are used in Octopus.
This module handles the communicators for the various parallelization strategies.
Some general things and nomenclature:
type(type_t), parameter, public type_float