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-2018 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

18 #if defined HAVE_CONFIG_H
19 #include "config.h"
20 #endif
21 
22 #include "abi_common.h"
23 
24 
25 module defs_rectypes
26 
27  use defs_basis
28  use m_abicore
29  use defs_abitypes,  only : MPI_type
30  use m_pawfgr, only : pawfgr_type
31 
32  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

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

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

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

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

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

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