TABLE OF CONTENTS


ABINIT/testsusmat [ Functions ]

[ Top ] [ 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