TABLE OF CONTENTS


ABINIT/defs_rectypes [ Modules ]

[ Top ] [ Modules ]

NAME

 defs_rectypes

FUNCTION

 This module contains definitions of all structured datatype for recursion

COPYRIGHT

 Copyright (C) 2001-2024 ABINIT group (MM)
 This file is distributed under the terms of the
 GNU General Public License, see ~abinit/COPYING
 or http://www.gnu.org/copyleft/gpl.txt .

SOURCE

17 #if defined HAVE_CONFIG_H
18 #include "config.h"
19 #endif
20 
21 #include "abi_common.h"
22 
23 
24 module defs_rectypes
25 
26  use defs_basis
27  use m_abicore
28  use defs_abitypes,  only : MPI_type
29  use m_pawfgr, only : pawfgr_type
30 
31  implicit none

defs_rectypes/ recparall_type [ Types ]

[ Top ] [ defs_rectypes ] [ Types ]

NAME

 recparall_type

FUNCTION

 This structured datatype for distribution of work in recursion

SOURCE

136  type,public :: recparall_type
137 
138   !--Variables for parallelization in recursion
139   integer :: min_pt
140   integer :: max_pt
141   integer :: ntranche
142   integer :: npt !--Number of points to calculate for a proc
143 
144 ! Integer arrays
145   integer,allocatable ::  displs(:) !--For mpi
146   integer,allocatable ::  vcount(:)
147 
148 ! Structured datatypes
149   type(vec_int)        :: pt0    !--Initial point to calculate
150   type(vec_int)        :: pt1    !--Final point to calculate
151 
152  end type recparall_type
153 
154 !Structures

defs_rectypes/metricrec_type [ Types ]

[ Top ] [ defs_rectypes ] [ Types ]

NAME

 metricrec_type

FUNCTION

 This structured datatype used in recursion_type containing
 information concerning the infenitesimal metrics

SOURCE

60  type,public :: metricrec_type
61 !  Real scalars
62   real(dp)  :: ucvol     !--Infinitesimal volume
63 ! Integer arrays
64   integer,allocatable  :: gcart(:,:)
65 ! Real (real(dp)) arrays
66   real(dp)  :: tr(3)     !--Trace of the metrics: (grid step)
67   real(dp)  :: rmet(3,3) !--Infinitesimal metrics in recursion
68 
69  end type metricrec_type

defs_rectypes/nlpsprec_type [ Types ]

[ Top ] [ defs_rectypes ] [ Types ]

NAME

 nlpsprec_type

FUNCTION

 This structured datatype used in recursion_type containing
 information concerning psp

SOURCE

 85  type,public :: nlpsprec_type! Integer scalars
 86 
 87   integer :: lmnmax
 88   ! in recursion, it contains the max counting-index for lmn, it
 89   ! corresponds to the ubound of the second index of indlmn
 90 
 91   integer :: intlen !nl_ngfft is the maximum, on all psps, of the
 92   ! interaction length of non-local potential (in grid step).
 93 
 94   integer :: npsp  ! Number of types of pseudopotentials
 95 
 96   logical :: nlpsp !calculate the non-localc pspeudo part in recursion
 97 
 98 ! Integer arrays
 99   integer,allocatable :: pspinfo(:,:) !--for any typat:  (momang,typat)=nproj
100   integer,allocatable :: indlmn(:,:,:)
101   ! indlmn(6,lmnmax,ntypat)
102   ! For each type of psp,
103   ! array giving l,m,n,lm,ln,spin for i=lmn (if useylm=1)
104 
105 
106 ! Real (real(dp)) arrays
107   real(dp),allocatable :: radii(:,:)   !--Local radii of nl psp
108                                   !  part radii(l+1,psp)
109 
110   real(dp),allocatable :: projec(:,:,:)         !--p(r,lmn,typat), is the
111   !product of Y_lm(r)*nlproj_ln(r) calculated on the grid for any psps.
112 
113   real(dp),allocatable :: mat_exp_psp_nl(:,:,:,:) !--Matrix of exponential
114                                                 !  of non-local psp
115                                                 ! mat_exp_psp_nl(nproj,nproj,l+1,psp)
116 
117   real(dp),allocatable :: eival(:,:,:) !--Matrix of exponential(eigenvalues)
118   real(dp),allocatable :: eivec(:,:,:,:) !--Matrix of exponential(eigenvectors)
119 
120  end type nlpsprec_type

defs_rectypes/recGPU_type [ Types ]

[ Top ] [ defs_rectypes ] [ Types ]

NAME

 recGPU_type

FUNCTION

 This structured datatype for recursion with GPU

SOURCE

167  type,public :: recGPU_type
168 
169   integer :: nptrec !--number of points for recursion on GPUon
170   !any devices (supposing that all devices are the same type)
171 
172   integer,pointer :: map(:)  !--The map of devices GPU with respect to
173   !                       cpu (-1 if there are not gpu)
174 
175   ! Structured datatypes
176   type(recparall_type) :: par    !--For distribution of work on procs
177 
178  end type recGPU_type
179 
180 !Structures

defs_rectypes/recursion_type [ Types ]

[ Top ] [ defs_rectypes ] [ Types ]

NAME

 recursion_type

FUNCTION

 This structured datatype contains some variable used in the recursion

SOURCE

193  type,public :: recursion_type
194 
195 ! WARNING : if you modify this datatype, please check whether there might be creation/destruction/copy routines,
196 ! declared in another part of ABINIT, that might need to take into account your modification.
197 
198 ! Integer scalar
199 
200 
201   integer :: quitrec !--To quit by recursion
202 
203   integer :: min_nrec !--Minimal number of recursions
204 
205   integer :: nfftrec !--Recursion nfft
206 
207   integer :: ngpu !--total number of GPUs
208 
209   integer :: gpudevice !--it corresponds to the GPU-device setted for this proc
210   !if negative: no GPU-device is associated
211 
212   integer :: load      !--if egual to 0 (default), load on proc-gpu is
213   !homogeneous and %par is egual to %GPU%par (or %GPU is not affected)
214   !otherwise load=1
215   integer :: tp        !--topology of the machine:
216   !0: 1 cpu;
217   !1: n cpu;
218   !2: 1 cpu 1 gpu;
219   !3: n cpu n gpu
220   !4: n cpu > m gpu;
221   !5: n cpu < m gpu (not implemented)
222 
223   logical :: debug     !--Debugging variable
224   logical :: tronc     !--True if troncation (ngfftrec/=ngfft) is used
225 
226 
227 ! Integer arrays
228   integer :: ngfftrec(18) !--Recursion ngfft
229 ! Real (real(dp)) scalar
230   real(dp) :: efermi
231 
232   real(dp),allocatable :: ZT_p(:,:)  !--Is the Fourier transform of the
233                                       !  green kernel
234 
235 ! Structured datatypes
236   type(recparall_type)   :: par    !--For distribution of work on procs
237   type(pawfgr_type)      :: pawfgr !--For double grid system
238   type(MPI_type),pointer :: mpi    !--For recursion mpi
239   type(nlpsprec_type)    :: nl     !--For nlpsp
240   type(metricrec_type)   :: inf    !--For metrics
241 #ifdef HAVE_GPU_CUDA
242   type(recGPU_type)      :: GPU  !--information concerning cuda
243 #endif
244  end type recursion_type
245 
246 end module defs_rectypes

defs_rectypes/vec_int [ Types ]

[ Top ] [ defs_rectypes ] [ Types ]

NAME

 vec_int

FUNCTION

 This structured datatype contains 3d vector of indexes

SOURCE

43  type,public :: vec_int
44   integer  :: x,y,z
45  end type vec_int