BigDFT - DFT over wavelets  1.7.5
 All Classes Files Functions Variables Groups Pages
The PSolver library

Interpolating scaling function Poisson Solver Library. More...

Detailed Description

Classes

module  poisson_solver
 Module used by the Poisson Solver library. It must be used in the parent routine. More...
 

Functions

type(coulomb_operator) function pkernel_init (verb, iproc, nproc, igpu, geocode, ndims, hgrids, itype_scf, mu0_screening, angrad, mpi_env, taskgroup_size)
 Initialization of the Poisson kernel. More...
 
subroutine pkernel_free (kernel, subname)
 Free memory used by the kernerl operation. More...
 
subroutine pkernel_set (kernel, wrtmsg)
 Allocate a pointer which corresponds to the zero-padded FFT slice needed for calculating the convolution with the kernel expressed in the interpolating scaling function basis. The kernel pointer is unallocated on input, allocated on output. SYNOPSIS. More...
 

Function Documentation

subroutine pkernel_free ( type(coulomb_operator), intent(inout)  kernel,
character(len=*), intent(in)  subname 
)

Definition at line 112 of file createKernel.f90.

Referenced by conv_check_fft(), exercise(), ps_check(), psolver_program(), and wvl().

+ Here is the caller graph for this function:

type(coulomb_operator) function pkernel_init ( logical, intent(in)  verb,
integer, intent(in)  iproc,
integer, intent(in)  nproc,
integer, intent(in)  igpu,
character(len=1), intent(in)  geocode,
integer, dimension(3), intent(in)  ndims,
real(gp), dimension(3), intent(in)  hgrids,
integer, intent(in)  itype_scf,
real(kind=8), intent(in), optional  mu0_screening,
real(gp), dimension(3), intent(in), optional  angrad,
type(mpi_environment), intent(in), optional  mpi_env,
integer, intent(in), optional  taskgroup_size 
)
Parameters
[in]verbverbosity
[in]iprocProc Id
[in]nprocNumber of processes
[in]geocodegeocode is used in all the code to specify the boundary conditions (BC) the problem:
  • 'F' free BC, isolated systems. The program calculates the solution as if the given density is "alone" in R^3 space.
  • 'S' surface BC, isolated in y direction, periodic in xz plane The given density is supposed to be periodic in the xz plane, so the dimensions in these direction mus be compatible with the FFT Beware of the fact that the isolated direction is y!
  • 'P' periodic BC. The density is supposed to be periodic in all the three directions, then all the dimensions must be compatible with the FFT. No need for setting up the kernel (in principle for Plane Waves)
  • 'W' Wires BC. The density is supposed to be periodic in z direction, which has to be compatible with the FFT.
  • 'H' Helmholtz Equation Solver

Definition at line 13 of file createKernel.f90.

References poisson_solver::doc::geocode, poisson_solver::pkernel_null(), yaml_output::yaml_comment(), yaml_output::yaml_mapping_close(), and yaml_output::yaml_mapping_open().

Referenced by conv_check_fft(), exercise(), ps_check(), psolver_program(), and wvl().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine pkernel_set ( type(coulomb_operator), intent(inout)  kernel,
logical, intent(in)  wrtmsg 
)
Parameters
iproc,nprocnumber of process, number of processes
n01,n02,n03dimensions of the real space grid to be hit with the Poisson Solver
itype_scforder of the interpolating scaling functions used in the decomposition
hx,hy,hzgrid spacings. For the isolated BC case for the moment they are supposed to be equal in the three directions
kernelpointer for the kernel FFT. Unallocated on input, allocated on output. Its dimensions are equivalent to the region of the FFT space for which the kernel is injective. This will divide by two each direction, since the kernel for the zero-padded convolution is real and symmetric.
gputag for CUDA gpu 0: CUDA GPU is disabled
Warning
Due to the fact that the kernel dimensions are unknown before the calling, the kernel must be declared as pointer in input of this routine. To avoid that, one can properly define the kernel dimensions by adding the nd1,nd2,nd3 arguments to the PS_dim4allocation routine, then eliminating the pointer declaration.

Definition at line 168 of file createKernel.f90.

References yaml_output::dump(), f_fft_dimensions(), time_profiling::f_timing(), free_kernel(), inplane_partitioning(), p_fft_dimensions(), periodic_kernel(), s_fft_dimensions(), surfaces_kernel(), w_fft_dimensions(), wires_kernel(), yaml_output::yaml_mapping_close(), and yaml_output::yaml_mapping_open().

Referenced by conv_check_fft(), exercise(), ps_check(), psolver_program(), and wvl().

+ Here is the call graph for this function:

+ Here is the caller graph for this function: