TABLE OF CONTENTS
ABINIT/testsusmat [ Functions ]
NAME
testsusmat
FUNCTION
test wether a new susceptibility matrix and/or a new dielectric matrix must be computed and return the logical result
COPYRIGHT
Copyright (C) 1998-2017 ABINIT group (DCA,XG,MT) This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt . For the initials of contributors, see ~abinit/doc/developers/contributors.txt .
INPUTS
dielop : option for the computation of the dielectric matrix dtset : istep : number of the current SCF cycle
OUTPUT
compute : * if dielop >= 1 and istep == 1 => TRUE * if dielop >= 2 and istep == dtset%dielstrt => TRUE * if (dtset%iprcel >= 140 and <=170) depends on the periodicity modulo 10 of istep and iprcel * otherwise FALSE
PARENTS
prcref,prcref_PMA,vtorho
CHILDREN
SOURCE
35 #if defined HAVE_CONFIG_H 36 #include "config.h" 37 #endif 38 39 #include "abi_common.h" 40 41 42 subroutine testsusmat(compute,dielop,dielstrt,dtset,istep) 43 44 use m_profiling_abi 45 46 use defs_basis 47 use defs_abitypes 48 49 !This section has been created automatically by the script Abilint (TD). 50 !Do not modify the following lines by hand. 51 #undef ABI_FUNC 52 #define ABI_FUNC 'testsusmat' 53 !End of the abilint section 54 55 implicit none 56 57 !Arguments------------------------------- 58 !scalars 59 integer,intent(in) :: dielop,dielstrt,istep 60 logical,intent(out) :: compute 61 type(dataset_type),intent(in) :: dtset 62 63 !Local variables ------------------------- 64 65 ! ********************************************************************* 66 67 compute=.FALSE. 68 if((dtset%iprcel >= 140).and.(dtset%iprcel<=170)) then 69 if(modulo(dtset%iprcel,10).ne.0) then 70 compute=(modulo(istep,modulo(dtset%iprcel,10))==0) 71 else 72 compute=(modulo(istep,10)==0) 73 end if 74 end if 75 if (istep==1 .and. dielop>=2) compute=.TRUE. 76 if (istep==dielstrt .and. dielop>=1) compute=.TRUE. 77 !DEBUG 78 !if (compute) then 79 !write(std_err,*) 'testsusmat : TRUE' 80 !else 81 !write(std_err,*) 'testsusmat : FALSE',dielop,dielstrt,istep,dtset%iprcel,modulo(istep,10),& 82 !&modulo(dtset%iprcel,10),modulo(dtset%iprcel,modulo(dtset%iprcel,10)) 83 !end if 84 !ENDDEBUG 85 end subroutine testsusmat 86 87 88 89 !if( (istep==1 .and. dielop>=2) .or. & 90 !& (istep==dielstrt .and. dielop>=1) .or. & 91 !& computesusmat )then 92 93 !if((iprcel >= 140) .and. (iprcel <= 170)) then 94 !if(modulo(iprcel,10).ne.0) then 95 !computediel=(modulo(istep,10)==modulo(iprcel,modulo(iprcel,10))) 96 !else 97 !computediel=(modulo(istep,10)==0) 98 !end if 99 !end if 100 ! 101 !if( (istep==1 .and. dielop>=2) & 102 !& .or. (istep==dielstrt .and. dielop>=1) & 103 !& .or. computediel )then