TABLE OF CONTENTS
ABINIT/chkvars [ Functions ]
NAME
chkvars
FUNCTION
Examines the input string, to check whether all names are allowed.
COPYRIGHT
Copyright (C) 2007-2018 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
string*(*)=string of character the string (with upper case) from the input file, to which the XYZ data is (possibly) appended
OUTPUT
PARENTS
abinit
CHILDREN
SOURCE
29 #if defined HAVE_CONFIG_H 30 #include "config.h" 31 #endif 32 33 #include "abi_common.h" 34 35 subroutine chkvars (string) 36 37 use defs_basis 38 use m_errors 39 40 use m_fstrings, only : inupper 41 42 !This section has been created automatically by the script Abilint (TD). 43 !Do not modify the following lines by hand. 44 #undef ABI_FUNC 45 #define ABI_FUNC 'chkvars' 46 use interfaces_57_iovars, except_this_one => chkvars 47 !End of the abilint section 48 49 implicit none 50 51 !Arguments ------------------------------------ 52 !scalars 53 character(len=*),intent(in) :: string 54 55 !Local variables------------------------------- 56 !scalars 57 integer,parameter :: protocol1=1 58 character(len=100) :: list_logicals,list_strings 59 character(len=10000) :: list_vars 60 61 !************************************************************************ 62 63 !Here, list all admitted variable names (max 10 per line, to fix the ideas) 64 !Note: Do not use "double quotation mark" for the string since it triggers a bug in docchk.py (abirules script) 65 !<ABINIT_VARS> 66 !A 67 list_vars= ' accuracy acell adpimd adpimd_gamma' 68 list_vars=trim(list_vars)//' algalch amu angdeg asr atvshift autoparal' 69 list_vars=trim(list_vars)//' auxc_ixc auxc_scal awtr' 70 !B 71 list_vars=trim(list_vars)//' bandpp bdberry bdeigrf bdgw berryopt berrysav berrystep bfield bmass' 72 list_vars=trim(list_vars)//' boxcenter boxcutmin brvltt builtintest' 73 list_vars=trim(list_vars)//' bs_algorithm bs_calctype bs_coulomb_term bs_coupling' 74 list_vars=trim(list_vars)//' bs_interp_kmult bs_interp_m3_width bs_interp_method bs_interp_mode bs_interp_prep' 75 list_vars=trim(list_vars)//' bs_interp_rl_nb bs_eh_cutoff bs_exchange_term bs_freq_mesh' 76 list_vars=trim(list_vars)//' bs_haydock_niter bs_haydock_tol bs_hayd_term' 77 list_vars=trim(list_vars)//' bs_loband bs_nstates' 78 list_vars=trim(list_vars)//' bxctmindg' 79 !C 80 list_vars=trim(list_vars)//' cd_customnimfrqs cd_frqim_method cd_full_grid cd_imfrqs' 81 list_vars=trim(list_vars)//' cd_halfway_freq cd_max_freq cd_subset_freq' 82 list_vars=trim(list_vars)//' charge chempot chkdilatmx chkexit chkprim' 83 list_vars=trim(list_vars)//' chksymbreak chneut cineb_start cpus cpum cpuh' 84 !D 85 list_vars=trim(list_vars)//' ddamp ddb_ngqpt ddb_shiftq delayperm densfor_pred densty dfield' 86 list_vars=trim(list_vars)//' dfpt_sciss diecut diegap dielam dielng diemac' 87 list_vars=trim(list_vars)//' diemix diemixmag diismemory dilatmx dipdip dmatpawu dmatpuopt dmatudiag' 88 list_vars=trim(list_vars)//' dmft_entropy dmft_nlambda' 89 list_vars=trim(list_vars)//' dmft_dc dmft_iter dmft_mxsf dmft_nwli dmft_nwlo' 90 list_vars=trim(list_vars)//' dmft_read_occnd dmft_rslf dmft_solv dmft_t2g' 91 list_vars=trim(list_vars)//' dmft_tolfreq dmft_tollc dmftbandi dmftbandf dmftctqmc_basis' 92 list_vars=trim(list_vars)//' dmftctqmc_check dmftctqmc_correl dmftctqmc_gmove' 93 list_vars=trim(list_vars)//' dmftctqmc_grnns dmftctqmc_meas dmftctqmc_mrka' 94 list_vars=trim(list_vars)//' dmftctqmc_mov dmftctqmc_order dmftctqmc_triqs_nleg' 95 list_vars=trim(list_vars)//' dmftcheck dmftqmc_l dmftqmc_n dmftqmc_seed dmftqmc_therm' 96 list_vars=trim(list_vars)//' dosdeltae dtion dynimage' 97 list_vars=trim(list_vars)//' d3e_pert1_atpol d3e_pert1_dir d3e_pert1_elfd d3e_pert1_phon' 98 list_vars=trim(list_vars)//' d3e_pert2_atpol d3e_pert2_dir d3e_pert2_elfd d3e_pert2_phon' 99 list_vars=trim(list_vars)//' d3e_pert3_atpol d3e_pert3_dir d3e_pert3_elfd d3e_pert3_phon' 100 !E 101 list_vars=trim(list_vars)//' ecut ecuteps ecutsigx ecutsm ecutwfn effmass_free efmas' 102 list_vars=trim(list_vars)//' efmas_bands efmas_calc_dirs efmas_deg efmas_deg_tol' 103 list_vars=trim(list_vars)//' efmas_dim efmas_dirs efmas_n_dirs efmas_ntheta' 104 list_vars=trim(list_vars)//' efield einterp elph2_imagden enunit eshift' 105 list_vars=trim(list_vars)//' esmear exchmix exchn2n3d extrapwf' 106 list_vars=trim(list_vars)//' eph_intmeth eph_extrael eph_fermie eph_fsmear eph_fsewin eph_mustar ' 107 list_vars=trim(list_vars)//' eph_ngqpt_fine eph_task eph_transport' 108 !F 109 list_vars=trim(list_vars)//' fband fermie_nest' 110 list_vars=trim(list_vars)//' fftalg fftcache fftgw' 111 list_vars=trim(list_vars)//' fockoptmix focktoldfe fockdownsampling' 112 list_vars=trim(list_vars)//' freqim_alpha freqremax freqremin freqspmax' 113 list_vars=trim(list_vars)//' freqspmin' 114 list_vars=trim(list_vars)//' friction frzfermi fxcartfactor ' 115 list_vars=trim(list_vars)//' f4of2_sla f6of2_sla' 116 !G 117 list_vars=trim(list_vars)//' ga_algor ga_fitness ga_n_rules ga_opt_percent ga_rules' 118 list_vars=trim(list_vars)//' genafm getbscoup getbseig getbsreso getcell' 119 list_vars=trim(list_vars)//' getddb getddk getdelfd getdkdk getdkde getden getgam_eig2nkq' 120 list_vars=trim(list_vars)//' gethaydock getocc getpawden getqps getscr' 121 list_vars=trim(list_vars)//' getwfkfine' 122 list_vars=trim(list_vars)//' getsuscep ' 123 list_vars=trim(list_vars)//' getvel getwfk getwfq getxcart getxred' 124 list_vars=trim(list_vars)//' get1den get1wf goprecon goprecprm' 125 list_vars=trim(list_vars)//' gpu_devices gpu_linalg_limit gwcalctyp gwcomp gwencomp gwgamma gwmem' 126 list_vars=trim(list_vars)//' gwpara gwrpacorr gw_customnfreqsp' 127 list_vars=trim(list_vars)//' gw_frqim_inzgrid gw_frqre_inzgrid gw_frqre_tangrid gw_freqsp' 128 list_vars=trim(list_vars)//' gw_invalid_freq ' 129 list_vars=trim(list_vars)//' gw_qprange gw_nqlwl gw_nstep gw_qlwl' 130 list_vars=trim(list_vars)//' gw_sctype gw_sigxcore gw_toldfeig' 131 list_vars=trim(list_vars)//' gwls_stern_kmax gwls_kmax_complement gwls_kmax_poles' 132 list_vars=trim(list_vars)//' gwls_kmax_analytic gwls_kmax_numeric' 133 list_vars=trim(list_vars)//' gwls_list_proj_freq gwls_nseeds gwls_n_proj_freq gwls_recycle' 134 list_vars=trim(list_vars)//' gwls_first_seed gwls_model_parameter gwls_npt_gauss_quad' 135 list_vars=trim(list_vars)//' gwls_diel_model gwls_print_debug gwls_band_index gwls_exchange gwls_correlation' 136 !H 137 list_vars=trim(list_vars)//' hyb_mixing hyb_mixing_sr hyb_range_dft hyb_range_fock' 138 !I 139 list_vars=trim(list_vars)//' iatcon iatfix iatfixx iatfixy iatfixz iatsph' 140 list_vars=trim(list_vars)//' iboxcut icoulomb icutcoul ieig2rf' 141 list_vars=trim(list_vars)//' imgmov inclvkb intxc iomode ionmov iqpt' 142 list_vars=trim(list_vars)//' iprcel iprcfc irandom irdbscoup' 143 list_vars=trim(list_vars)//' irdbseig irdbsreso irdddb irdddk irdden' 144 list_vars=trim(list_vars)//' irdhaydock irdpawden irdqps' 145 list_vars=trim(list_vars)//' irdscr irdsuscep irdwfk irdwfq ird1den' 146 list_vars=trim(list_vars)//' irdwfkfine' 147 list_vars=trim(list_vars)//' ird1wf iscf isecur istatimg istatr' 148 list_vars=trim(list_vars)//' istatshft istwfk ixc ixc_sigma ixcpositron ixcrot' 149 list_vars=trim(list_vars)//' irdvdw' 150 !J 151 list_vars=trim(list_vars)//' jdtset jellslab jfielddir jpawu' 152 !K 153 list_vars=trim(list_vars)//' kberry kpt kptbounds kptgw' 154 list_vars=trim(list_vars)//' kptnrm kptopt kptrlatt kptrlen kssform' 155 !L 156 list_vars=trim(list_vars)//' ldaminushalf lexexch localrdwf lpawu' 157 list_vars=trim(list_vars)//' lotf_classic lotf_nitex lotf_nneigx lotf_version' 158 !M 159 list_vars=trim(list_vars)//' max_ncpus macro_uj maxestep maxnsym mdf_epsinf mdtemp mdwall' 160 list_vars=trim(list_vars)//' magconon magcon_lambda mbpt_sciss' 161 list_vars=trim(list_vars)//' mep_mxstep mep_solver mem_test mixalch' 162 list_vars=trim(list_vars)//' mqgrid mqgriddg' 163 !N 164 list_vars=trim(list_vars)//' natcon natfix natfixx natfixy natfixz' 165 list_vars=trim(list_vars)//' natom natrd natsph natsph_extra natvshift nband nbandkss nbandhf' 166 list_vars=trim(list_vars)//' nbdblock nbdbuf nberry nconeq nc_xccc_gspace' 167 list_vars=trim(list_vars)//' nctime ndivk ndivsm ndtset neb_algo neb_spring' 168 list_vars=trim(list_vars)//' nfreqim nfreqre nfreqsp ngfft ngfftdg' 169 list_vars=trim(list_vars)//' ngkpt ngqpt nimage nkpath nkpt nkptgw nkpthf' 170 list_vars=trim(list_vars)//' nline nloc_alg nloc_mem nnos nnsclo nnsclohf' 171 list_vars=trim(list_vars)//' nobj nomegasf nomegasi nomegasrd noseinert npband' 172 list_vars=trim(list_vars)//' npfft nphf npimage npkpt nppert npsp npspinor' 173 list_vars=trim(list_vars)//' npulayit npvel npwkss' 174 list_vars=trim(list_vars)//' np_slk nqpt nqptdm nscforder nshiftk nshiftq' 175 list_vars=trim(list_vars)//' nspden nspinor nsppol nstep nsym' 176 list_vars=trim(list_vars)//' ntime ntimimage ntypalch ntypat nucdipmom nwfshist nzchempot' 177 !O 178 list_vars=trim(list_vars)//' objaat objbat objaax objbax objan objbn objarf' 179 list_vars=trim(list_vars)//' objbrf objaro objbro objatr objbtr occ' 180 list_vars=trim(list_vars)//' occopt omegasimax omegasrdmax optcell optdriver optforces' 181 list_vars=trim(list_vars)//' optnlxccc optstress orbmag ortalg' 182 !P 183 list_vars=trim(list_vars)//' paral_atom paral_kgb paral_rf pawcpxocc pawcross' 184 list_vars=trim(list_vars)//' pawecutdg pawfatbnd pawlcutd pawlmix' 185 list_vars=trim(list_vars)//' pawmixdg pawnhatxc pawnphi pawntheta pawnzlm pawoptmix pawoptosc pawovlp' 186 list_vars=trim(list_vars)//' pawprtdos pawprtvol pawprtwf pawprt_b pawprt_k pawspnorb pawstgylm' 187 list_vars=trim(list_vars)//' pawsushat pawujat pawujrad pawujv' 188 list_vars=trim(list_vars)//' pawusecp pawxcdev pimass pimd_constraint' 189 list_vars=trim(list_vars)//' pitransform ph_ndivsm ph_nqpath ph_qpath ph_ngqpt' 190 list_vars=trim(list_vars)//' ph_wstep ph_intmeth ph_smear ph_nqshift ph_qshift' 191 list_vars=trim(list_vars)//' plowan_bandi plowan_bandf plowan_compute plowan_iatom plowan_it plowan_lcalc' 192 list_vars=trim(list_vars)//' plowan_natom plowan_nbl plowan_nt plowan_projcalc plowan_realspace' 193 list_vars=trim(list_vars)//' polcen posdoppler positron posnstep posocc postoldfe postoldff ppmfrq ppmodel' 194 list_vars=trim(list_vars)//' prepanl prepgkk papiopt' 195 list_vars=trim(list_vars)//' prtatlist prtbbb prtbltztrp prtcif prtden' 196 list_vars=trim(list_vars)//' prtdensph prtdipole prtdos prtdosm prtebands prtefg prteig prtelf' 197 list_vars=trim(list_vars)//' prtfc prtfsurf prtgden prtgeo prtgsr prtgkk prtkden prtkpt prtlden' 198 list_vars=trim(list_vars)//' prtnabla prtnest prtphbands prtphdos prtphsurf prtposcar prtpot prtpsps' 199 list_vars=trim(list_vars)//' prtspcur prtstm prtsuscep prtvclmb prtvha prtvdw prtvhxc' 200 list_vars=trim(list_vars)//' prtvol prtvpsp prtvxc prtwant prtwf prtwf_full prtxml prt1dm ptcharge' 201 list_vars=trim(list_vars)//' pvelmax pw_unbal_thresh' 202 !Q 203 list_vars=trim(list_vars)//' qmass qprtrb qpt qptdm qptnrm ' 204 list_vars=trim(list_vars)//' qptopt qptrlatt quadmom' 205 !R 206 list_vars=trim(list_vars)//' random_atpos ratsph ratsph_extra rcut' 207 list_vars=trim(list_vars)//' recefermi recgratio recnpath recnrec recptrott recrcut rectesteg rectolden' 208 list_vars=trim(list_vars)//' red_dfield red_efield red_efieldbar restartxf rfasr' 209 list_vars=trim(list_vars)//' rfatpol rfddk rfdir rfelfd rfmagn rfmeth rfphon' 210 list_vars=trim(list_vars)//' rfstrs rfuser rf2_dkdk rf2_dkde rf2_pert1_dir rf2_pert2_dir rhoqpmix rprim' 211 !These input parameters are obsolete (keep them for compatibility) 212 list_vars=trim(list_vars)//' rf1atpol rf1dir rf1elfd rf1phon' 213 list_vars=trim(list_vars)//' rf2atpol rf2dir rf2elfd rf2phon' 214 list_vars=trim(list_vars)//' rf3atpol rf3dir rf3elfd rf3phon' 215 !S 216 list_vars=trim(list_vars)//' scalecart shiftk shiftq signperm' 217 list_vars=trim(list_vars)//' slabwsrad slabzbeg slabzend smdelta so_psp' 218 list_vars=trim(list_vars)//' spbroad spgaxor spgorig spgroup spgroupma spinat spinmagntarget spmeth' 219 list_vars=trim(list_vars)//' spnorbscl stmbias strfact string_algo strprecon strtarget supercell' 220 list_vars=trim(list_vars)//' symafm symchi symdynmat symmorphi symrel symsigma' 221 !T 222 list_vars=trim(list_vars)//' td_maxene td_mexcit tfkinfunc tfw_toldfe tim1rev timopt tl_nprccg tl_radius' 223 list_vars=trim(list_vars)//' tmesh tnons toldfe tolmxde toldff tolimg tolmxf tolrde tolrff tolsym' 224 list_vars=trim(list_vars)//' tolvrs tolwfr tphysel tsmear typat' 225 !U 226 list_vars=trim(list_vars)//' ucrpa ucrpa_bands ucrpa_window udtset upawu usedmatpu' 227 list_vars=trim(list_vars)//' usedmft useexexch usekden use_nonscf_gkk usepawu usepotzero' 228 list_vars=trim(list_vars)//' useria userib useric userid userie' 229 list_vars=trim(list_vars)//' userra userrb userrc userrd userre' 230 list_vars=trim(list_vars)//' usewvl usexcnhat useylm use_gemm_nonlop use_gpu_cuda use_slk' 231 !V 232 list_vars=trim(list_vars)//' vaclst vacnum vacuum vacwidth vcutgeo' 233 list_vars=trim(list_vars)//' vdw_nfrag vdw_supercell' 234 list_vars=trim(list_vars)//' vdw_tol vdw_tol_3bt vdw_typfrag vdw_xc' 235 list_vars=trim(list_vars)//' vdw_df_acutmin vdw_df_aratio vdw_df_damax' 236 list_vars=trim(list_vars)//' vdw_df_damin vdw_df_dcut vdw_df_dratio' 237 list_vars=trim(list_vars)//' vdw_df_dsoft vdw_df_gcut' 238 list_vars=trim(list_vars)//' vdw_df_ndpts vdw_df_ngpts vdw_df_nqpts' 239 list_vars=trim(list_vars)//' vdw_df_nrpts vdw_df_nsmooth vdw_df_phisoft vdw_df_qcut' 240 list_vars=trim(list_vars)//' vdw_df_qratio vdw_df_rcut vdw_df_rsoft' 241 list_vars=trim(list_vars)//' vdw_df_threshold vdw_df_tolerance' 242 list_vars=trim(list_vars)//' vdw_df_tweaks vdw_df_zab' 243 list_vars=trim(list_vars)//' vel vel_cell vis vprtrb' 244 !W 245 list_vars=trim(list_vars)//' wfmix wfoptalg wtatcon wtk wtq' 246 list_vars=trim(list_vars)//' wvl_bigdft_comp wvl_crmult wvl_frmult wvl_hgrid wvl_ngauss wvl_nprccg' 247 list_vars=trim(list_vars)//' w90iniprj w90prtunk' 248 !X 249 list_vars=trim(list_vars)//' xangst xcart xc_denpos xc_tb09_c xred xredsph_extra xyzfile' 250 !Y 251 !Z 252 list_vars=trim(list_vars)//' zcut zeemanfield znucl' 253 254 !Logical input variables 255 list_logicals=' SpinPolarized' 256 257 !String input variables 258 list_strings=' XCname wfk_task' 259 !</ABINIT_VARS> 260 261 !Extra token, also admitted : 262 !<ABINIT_UNITS> 263 list_vars=trim(list_vars)//' au Angstr Angstrom Angstroms Bohr Bohrs eV Ha' 264 list_vars=trim(list_vars)//' Hartree Hartrees K Ry Rydberg Rydbergs T Tesla' 265 !</ABINIT_UNITS> 266 267 !<ABINIT_OPERATORS> 268 list_vars=trim(list_vars)//' sqrt end' 269 !</ABINIT_OPERATORS> 270 271 !Transform to upper case 272 call inupper(list_vars) 273 call inupper(list_logicals) 274 call inupper(list_strings) 275 276 call chkvars_in_string(protocol1, list_vars, list_logicals, list_strings, string) 277 278 end subroutine chkvars
ABINIT/chkvars_in_string [ Functions ]
NAME
chkvars_in_string
FUNCTION
Analyze variable names in string. Abort if name is not recognized.
INPUTS
protocol= 0 if parser does not accept multiple datasets and +* syntax (e.g. anaddb) 1 if parser accepts multiple datasets and +* syntax (e.g. abinit) list_vars(len=*)=string with the (upper case) names of the variables (excluding logicals and chars). list_logicals(len=*)=string with the (upper case) names of the logical variables. list_strings(len=*)=string with the (upper case) names of the character variables. string(len=*)=string (with upper case) from the input file.
OUTPUT
Abort if variable name is not recognized.
PARENTS
chkvars,m_anaddb_dataset
CHILDREN
SOURCE
308 subroutine chkvars_in_string(protocol, list_vars, list_logicals, list_strings, string) 309 310 use defs_basis 311 use m_errors 312 313 !This section has been created automatically by the script Abilint (TD). 314 !Do not modify the following lines by hand. 315 #undef ABI_FUNC 316 #define ABI_FUNC 'chkvars_in_string' 317 !End of the abilint section 318 319 implicit none 320 321 !Arguments ------------------------------------ 322 !scalars 323 integer,intent(in) :: protocol 324 character(len=*),intent(in) :: string 325 character(len=*),intent(in) :: list_logicals,list_strings,list_vars 326 327 !Local variables------------------------------- 328 character,parameter :: blank=' ' 329 !scalars 330 integer :: index_blank,index_current,index_endword,index_endwordnow,index_list_vars 331 character(len=500) :: message 332 333 !************************************************************************ 334 335 index_current=1 336 do ! Infinite do-loop, to identify the presence of each potential variable names 337 338 if(len_trim(string)<=index_current)exit 339 index_blank=index(string(index_current:),blank)+index_current-1 340 341 if(index('ABCDEFGHIJKLMNOPQRSTUVWXYZ',string(index_current:index_current))/=0)then 342 343 index_endword = index_blank -1 344 if (protocol == 1) then 345 ! Skip characters like : + or the digits at the end of the word 346 ! Start from the blank that follows the end of the word 347 do index_endword=index_blank-1,index_current,-1 348 if(index('ABCDEFGHIJKLMNOPQRSTUVWXYZ',string(index_endword:index_endword))/=0)exit 349 end do 350 end if 351 !write(std_out,*)"Will analyze:", string(index_current:index_endword) 352 353 ! Find the index of the potential variable name in the list of variables 354 index_list_vars=index(list_vars,blank//string(index_current:index_endword)//blank) 355 356 ! Treat the complications due to the possibility of images 357 if (index_list_vars==0 .and. protocol==1) then 358 359 ! Treat possible LASTIMG appendix 360 if(index_endword-6>=1)then 361 if(string(index_endword-6:index_endword)=='LASTIMG')index_endword=index_endword-7 362 end if 363 364 ! Treat possible IMG appendix 365 if(index_endword-2>=1)then 366 if(string(index_endword-2:index_endword)=='IMG')index_endword=index_endword-3 367 end if 368 369 index_endwordnow=index_endword 370 371 ! Again skip characters like : + or the digits before IMG 372 ! Start from the blank that follows the end of the word 373 do index_endword=index_endwordnow,index_current,-1 374 if(index('ABCDEFGHIJKLMNOPQRSTUVWXYZ',string(index_endword:index_endword))/=0)exit 375 end do 376 377 ! Find the index of the potential variable name in the list of variables 378 index_list_vars=index(list_vars,blank//string(index_current:index_endword)//blank) 379 end if 380 381 if(index_list_vars==0)then 382 383 ! Treat possible logical input variables 384 if(index(list_logicals,blank//string(index_current:index_endword)//blank)/=0)then 385 !write(std_out,*)"Found logical variable: ",string(index_current:index_endword) 386 index_blank=index(string(index_current:),blank)+index_current-1 387 if(index(' F T ',string(index_blank:index_blank+2))==0)then 388 write(message, '(8a)' )& 389 & 'Found the token ',string(index_current:index_endword),' in the input file.',ch10,& 390 & 'This variable should be given a logical value (T or F), but the following string was found :',& 391 & string(index_blank:index_blank+2),ch10,& 392 & 'Action: check your input file. You likely misused the input variable.' 393 MSG_ERROR(message) 394 else 395 index_blank=index_blank+2 396 end if 397 ! Treat possible string input variables 398 else if(index(list_strings,blank//string(index_current:index_endword)//blank)/=0)then 399 ! Every following string is accepted 400 !write(std_out,*)"Found string variable: ",string(index_current:index_endword) 401 !write(std_out,*)"in string: ",trim(string(index_current:)) 402 index_current=index(string(index_current:),blank)+index_current 403 index_blank=index(string(index_current:),blank)+index_current-1 404 !write(std_out,*)"next:: ",string(index_current:index_endword) 405 406 ! If still not admitted, then there is a problem 407 else 408 write(message, '(7a)' )& 409 & 'Found the token ',string(index_current:index_endword),' in the input file.',ch10,& 410 & 'This name is not one of the registered input variable names (see https://www.abinit.org/doc).',ch10,& 411 & 'Action: check your input file. You likely mistyped the input variable.' 412 MSG_ERROR(message) 413 end if 414 end if 415 end if 416 417 index_current=index_blank+1 418 end do 419 420 end subroutine chkvars_in_string