Documentation for module ps_wavelet_base

Creates the wavelet kernel for the wavelet based poisson solver.

source: ps_wavelet_base.F
Loading...

public Subroutines/Functions:

(Based on suitable modifications of S.Goedecker routines) Applies the local FFT space Kernel to the density in Real space. Calculates also the LDA exchange-correlation terms
...
(Based on suitable modifications of S.Goedecker routines) Assign the correct planes to the work array zmpi2 in order to prepare for interprocessor data transposition. In the meanwhile, it unpacks the data of the HalFFT in order to prepare for multiplication with the kernel
!HERE POT MUST BE THE KERNEL (BEWARE THE HALF DIMENSION) ****h* BigDFT/S_PoissonSolver (Based on suitable modifications of S.Goedecker routines) Applies the local FFT space Kernel to the density in Real space. Does NOT calculate the LDA exchange-correlation terms

SUBROUTINEf_poissonsolver(n1, n2, n3, nd1, nd2, nd3, md1, md2, md3, nproc, iproc, pot, zf, scal, mpi_group)

(Based on suitable modifications of S.Goedecker routines) Applies the local FFT space Kernel to the density in Real space. Calculates also the LDA exchange-correlation terms

Arguments:
INTEGER,
INTENT(in)
:: n1 logical dimension of the transform.
INTEGER,
INTENT(in)
:: n2 logical dimension of the transform.
INTEGER,
INTENT(in)
:: n3 logical dimension of the transform.
INTEGER,
INTENT(in)
:: nd1 Dimension of POT
INTEGER,
INTENT(in)
:: nd2 Dimension of POT
INTEGER,
INTENT(in)
:: nd3 Dimension of POT
INTEGER,
INTENT(in)
:: md1 Dimension of ZF
INTEGER,
INTENT(in)
:: md2 Dimension of ZF
INTEGER,
INTENT(in)
:: md3 Dimension of ZF
INTEGER,
INTENT(in)
:: nproc number of processors used as returned by MPI_COMM_SIZE
INTEGER,
INTENT(in)
:: iproc [0:nproc-1] number of processor as returned by MPI_COMM_RANK
REAL(dp),
INTENT(in)
:: pot(nd1,nd2,nd3/nproc) Kernel, only the distributed part (REAL) POT(i1,i2,i3) i1=1,nd1 , i2=1,nd2 , i3=1,nd3/nproc
REAL(dp),
INTENT(inout)
:: zf(md1,md3,md2/nproc) Density (input/output) ZF(i1,i3,i2) i1=1,md1 , i2=1,md2/nproc , i3=1,md3
REAL(dp),
INTENT(in)
:: scal factor of renormalization of the FFT in order to acheve unitarity and the correct dimension
INTEGER,
INTENT(in)
:: mpi_group ...

SUBROUTINEp_poissonsolver(n1, n2, n3, nd1, nd2, nd3, md1, md2, md3, nproc, iproc, zf, scal, hx, hy, hz, mpi_group)

...

Arguments:
INTEGER,
INTENT(in)
:: n1 ...
INTEGER,
INTENT(in)
:: n2 ...
INTEGER,
INTENT(in)
:: n3 ...
INTEGER,
INTENT(in)
:: nd1 ...
INTEGER,
INTENT(in)
:: nd2 ...
INTEGER,
INTENT(in)
:: nd3 ...
INTEGER,
INTENT(in)
:: md1 ...
INTEGER,
INTENT(in)
:: md2 ...
INTEGER,
INTENT(in)
:: md3 ...
INTEGER,
INTENT(in)
:: nproc ...
INTEGER,
INTENT(in)
:: iproc ...
REAL(dp),
INTENT(inout)
:: zf(md1,md3,md2/nproc) ...
REAL(dp),
INTENT(in)
:: scal ...
REAL(dp),
INTENT(in)
:: hx ...
REAL(dp),
INTENT(in)
:: hy ...
REAL(dp),
INTENT(in)
:: hz ...
INTEGER,
INTENT(in)
:: mpi_group ...

SUBROUTINEscramble_unpack(i1, j2, lot, nfft, n1, n3, md2, nproc, nd3, zw, zmpi2, cosinarr)

(Based on suitable modifications of S.Goedecker routines) Assign the correct planes to the work array zmpi2 in order to prepare for interprocessor data transposition. In the meanwhile, it unpacks the data of the HalFFT in order to prepare for multiplication with the kernel

Arguments:
INTEGER,
INTENT(in)
:: i1 Starting points of the plane and number of remaining lines
INTEGER,
INTENT(in)
:: j2 Starting points of the plane and number of remaining lines
INTEGER,
INTENT(in)
:: lot Starting points of the plane and number of remaining lines
INTEGER,
INTENT(in)
:: nfft Starting points of the plane and number of remaining lines
INTEGER,
INTENT(in)
:: n1 logical dimension of the FFT transform, reference for work arrays
INTEGER,
INTENT(in)
:: n3 logical dimension of the FFT transform, reference for work arrays
INTEGER,
INTENT(in)
:: md2 Dimensions of real grid
INTEGER,
INTENT(in)
:: nproc ...
INTEGER,
INTENT(in)
:: nd3 Dimensions of the kernel
REAL(dp),
INTENT(in)
:: zw(2,lot,n3/2) Work array (input)
REAL(dp),
INTENT(inout)
:: zmpi2(2,n1,md2/nproc,nd3) Work array for multiprocessor manipulation (output)
REAL(dp),
INTENT(in)
:: cosinarr(2,n3/2) Array of the phases needed for unpacking

SUBROUTINEs_poissonsolver(n1, n2, n3, nd1, nd2, nd3, md1, md2, md3, nproc, iproc, pot, zf, scal, mpi_group)

!HERE POT MUST BE THE KERNEL (BEWARE THE HALF DIMENSION) ****h* BigDFT/S_PoissonSolver (Based on suitable modifications of S.Goedecker routines) Applies the local FFT space Kernel to the density in Real space. Does NOT calculate the LDA exchange-correlation terms

Arguments:
INTEGER,
INTENT(in)
:: n1 logical dimension of the transform.
INTEGER,
INTENT(in)
:: n2 logical dimension of the transform.
INTEGER,
INTENT(in)
:: n3 logical dimension of the transform.
INTEGER,
INTENT(in)
:: nd1 Dimension of POT
INTEGER,
INTENT(in)
:: nd2 Dimension of POT
INTEGER,
INTENT(in)
:: nd3 Dimension of POT
INTEGER,
INTENT(in)
:: md1 Dimension of ZF
INTEGER,
INTENT(in)
:: md2 Dimension of ZF
INTEGER,
INTENT(in)
:: md3 Dimension of ZF
INTEGER,
INTENT(in)
:: nproc number of processors used as returned by MPI_COMM_SIZE
INTEGER,
INTENT(in)
:: iproc [0:nproc-1] number of processor as returned by MPI_COMM_RANK
REAL(dp),
INTENT(in)
:: pot(nd1,nd2,nd3/nproc) Kernel, only the distributed part (REAL) POT(i1,i2,i3) i1=1,nd1 , i2=1,nd2 , i3=1,nd3/nproc
REAL(dp),
INTENT(inout)
:: zf(md1,md3,md2/nproc) Density (input/output) ZF(i1,i3,i2) i1=1,md1 , i2=1,md2/nproc , i3=1,md3
REAL(dp),
INTENT(in)
:: scal factor of renormalization of the FFT in order to acheve unitarity and the correct dimension
INTEGER,
INTENT(in)
:: mpi_group ...