TABLE OF CONTENTS
ABINIT/chkint_le [ 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