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