TABLE OF CONTENTS


ABINIT/chkvars [ Functions ]

[ Top ] [ 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 ]

[ Top ] [ 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