TABLE OF CONTENTS


ABINIT/chkint_eq [ Functions ]

[ Top ] [ Functions ]

NAME

 chkint_eq

FUNCTION

 Checks the value of an input integer variable against a list, and
 write a sophisticated error message when the value does not appear
 A few conditions might have been checked before calling chkint,
 and these are mentioned in the error message.

 See the examples in the NOTES

COPYRIGHT

 Copyright (C) 1998-2017 ABINIT group (XG)
 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

 advice_change_cond= if 1, and if an error is detected, will
  advice to change the value of the conditions.
 cond_number= number of conditions checked before calling chkint.
 cond_string(cond_number)= name of the variables associated to the conditions.
 cond_values(cond_number)= value of the variables associated to the conditions.
 input_name=name of the input variable to be checked
 input_value=value of the input variable to be checked
 list_number=number of allowed values (maximum 40).
 list_values=list of allowed values
 unit=unit number for clean output file

OUTPUT

  (only side effect)

 SIDE EFFECT
 ierr= switch it to 1 if an error was detected. No action otherwise.

NOTES

 cond_values(cond_number) or list_values(list_number)
 must be between -99 and 999 to be printed correctly.

 for the time being, at most 3 conditions are allowed.

PARENTS

      chkinp,m_psps

CHILDREN

      chkint_prt

SOURCE

 53 #if defined HAVE_CONFIG_H
 54 #include "config.h"
 55 #endif
 56 
 57 #include "abi_common.h"
 58 
 59 
 60 subroutine chkint_eq(advice_change_cond,cond_number,cond_string,cond_values,&
 61 &  ierr,input_name,input_value,list_number,list_values,unit)
 62 
 63  use defs_basis
 64  use m_profiling_abi
 65 
 66 !This section has been created automatically by the script Abilint (TD).
 67 !Do not modify the following lines by hand.
 68 #undef ABI_FUNC
 69 #define ABI_FUNC 'chkint_eq'
 70  use interfaces_57_iovars, except_this_one => chkint_eq
 71 !End of the abilint section
 72 
 73  implicit none
 74 
 75 !Arguments ------------------------------------
 76 !scalars
 77  integer,intent(in) :: advice_change_cond,cond_number,input_value,list_number
 78  integer,intent(in) :: unit
 79  integer,intent(inout) :: ierr
 80  character(len=*),intent(in) :: input_name
 81 !arrays
 82  integer,intent(in) :: cond_values(4),list_values(list_number)
 83  character(len=*),intent(inout) :: cond_string(4)
 84 
 85 !Local variables-------------------------------
 86 !scalars
 87  integer :: ilist,minmax_flag,minmax_value,ok
 88 
 89 !******************************************************************
 90 
 91 !Checks the allowed values
 92  ok=0
 93  if(list_number>0)then
 94    do ilist=1,list_number
 95      if(input_value == list_values(ilist))ok=1
 96    end do
 97  end if
 98  minmax_flag=0
 99  minmax_value=0
100 
101 !If there is something wrong, compose the message, and print it
102  if(ok==0)then
103    call chkint_prt(advice_change_cond,cond_number,cond_string,cond_values,&
104 &   ierr,input_name,input_value,&
105 &   list_number,list_values,minmax_flag,minmax_value,unit)
106  end if
107 
108 ! reset all cond_strings
109  cond_string(:)='#####'
110 
111 end subroutine chkint_eq