TABLE OF CONTENTS


ABINIT/chkint_le [ Functions ]

[ Top ] [ Functions ]

NAME

 chkint_le

FUNCTION

 Checks the value of an input integer variable, 
 expected to be lower than some value, and
 write a sophisticated error message when it is erroneous.
 A few conditions might have been checked before calling chkint_le,
 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_le.
 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
 minmax_value=see the description of minmax_flag
 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

CHILDREN

      chkint_prt

SOURCE

 53 #if defined HAVE_CONFIG_H
 54 #include "config.h"
 55 #endif
 56 
 57 #include "abi_common.h"
 58 
 59 subroutine chkint_le(advice_change_cond,cond_number,cond_string,cond_values,&
 60 &  ierr,input_name,input_value,&
 61 &  minmax_value,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_le'
 70  use interfaces_57_iovars, except_this_one => chkint_le
 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
 78  integer,intent(in) :: minmax_value,unit
 79  integer,intent(inout) :: ierr
 80  character(len=*),intent(in) :: input_name
 81 !arrays
 82  integer,intent(in) :: cond_values(4)
 83  character(len=*),intent(inout) :: cond_string(4)
 84 
 85 !Local variables-------------------------------
 86 !scalars
 87  integer :: list_number,minmax_flag,ok
 88  integer, allocatable :: list_values(:)
 89 
 90 !******************************************************************
 91 
 92 !Checks the allowed values
 93  ok=0
 94  minmax_flag=-1
 95  if(input_value<=minmax_value)ok=1
 96 !write(std_out,*)' chkint_le : input_value,minmax_value=',input_value,minmax_value
 97 
 98  list_number=1
 99  ABI_ALLOCATE(list_values,(1))
100  list_values=minmax_value
101 
102 !If there is something wrong, compose the message, and print it
103  if(ok==0)then
104    call chkint_prt(advice_change_cond,cond_number,cond_string,cond_values,&
105 &   ierr,input_name,input_value,&
106 &   list_number,list_values,minmax_flag,minmax_value,unit)
107  end if
108 
109  ABI_DEALLOCATE(list_values)
110 
111 ! reset all cond_strings
112  cond_string(:)='#####'
113 
114 end subroutine chkint_le