ADAS Subroutine xxdtes
subroutine xxdtes( cstrg , leiss , lstan , nvlce )
c
c-----------------------------------------------------------------------
c
c ****************** fortran77 subroutine: xxdtes *********************
c
c purpose: Detects if the configuration string from a specific ion
c level list line is of eissner form , standard form or
c neither.
C
C If neither, the subroutine checks to see if it is a
c bundle (* in the string) or based on a parent ([..] in
c the string). If the string is of Eissner or standard
c form, the n-shell and l-shell of the outermost
c (valence) electron is returned.
c
c A version of this routine with a more extended return of
c parameters and bale to handle very long configuration
c strings is available as 'g5dtes.for'.
c
c calling programs: general use
c
c subroutine:
c
c input : (c*(*)) cstrg = configuration character string
c output: (l*4) leiss = .true. => eissner form
c .false. => not eissner form
c output: (l*4) lstan = .true. => standard form
c .false. => not standard form
c output: (i*4) nvlce = outer electron n-shell if recognisable
c
c (l*4) lbndl = .true. => bundled form ('*' found)
c .false. => not bundled form
c (l*4) lprnt = .true. => parent form ('[...]' found)
c .false. => not parent form
c (c*19) cstr_top = leading part of config. string in Eissner
c format (no leading blank, trailing blanks)
c (c*(*)) cstr_tail= trailing part of config. string in Eissner
c format (no leading blank, trailing blanks)
c (i*4) lvlce = outer electron l-shell if recognisable
c
c (i*4) i = general use
c (i*4) iabt = return code (see specific function)
c 0 => ok
c 1 => fault detected
c (i*4) icfsel = 1 => standard form out, standard form in
c 2 => eissner form out, standard form in
c 3 => standard form out, eissner form in
c 4 => eissner form out, eissner form in
c (i*4) ishel = shell counter
c (i*4) ip = parity of configuration
c (i*4) maxn = n_shell sum for configuration
c (i*4) nshel = number of shells identified ffrom string
c (i*4) ndword = maximum number of words in string
c (i*4) nfirst = first word to be extracted from string
c (i*4) nwords = number of words in string
c (i*4) nela() = number of electrons in each shell
c (i*4) ifirst()= position of first char. of word in string
c (i*4) ilast() = position of last char. of word in string
c
c (c*1) cdelim = separators for words in string
c (c*19) cstrgo = general use string
c (c*19) strg = standard form configuration string
c (c*19) strge = eissner form configuration string
c (c*1) cheisa()= eissner character for orbitals
c (c*2) chstda()= standard orbital spec. for each shell
c (c*2) cnela() = chars. for no. of equiv. elec. in shell
c (eissner form case)
c (c*1) chqa() = index to hexadecimal conversions
c (c*1) chra() = char. for no. of. equiv. elec. in shell
c (standard form case)
c
c routines:
c routine source brief description
c -------------------------------------------------------------
c i4fctn adas converts character string to integer
c i4ngrp adas returns n quantum number in the
c eissner single hexadecimal character form
c i4pgrp adas returns parity of orbital given the
c eissner single hexadecimal character form
c i4schr adas returns numerical value for number of
c equivalent electrons given as hex> char.
c cstgrp adas returns term of orbital given in the
c eissner single hexadecimal character form
c ceigrp adas returns eissner code for orbital
c xxword adas finds number of words in a string
c xxcmps adas compare standard config. strings
c
c
c
c author: h. p. summers, university of strathclyde
c ja8.08
c tel. 0141-553-4196
c
c date: 19/02/03
c
C VERSION: 1.1 DATE: 19-1-96
C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC)
C - PUT UNDER S.C.C.S. CONTROL
C
C VERSION: 1.2 DATE: 14-10-96
C MODIFIED: WILLIAM OSBORN (TESSELLA SUPPORT SERVICES PLC)
C - ADDED CHANGES DATED 01/10/96 ABOVE
C
C VERSION: 1.3 DATE: 28-08-97
C MODIFIED: HUGH SUMMERS
C - ADDED CHANGES TO CHECK 'G' STATES
C
C VERSION: 1.4 DATE: 19/02/03
C MODIFIED: HUGH SUMMERS
C - Rewrite based on g5dtes.for
C
C VERSION: 1.5 DATE: 28/09/2004
C MODIFIED: Martin O'Mullane
C - Incorrect redirection when checking the Eissner pattern.
C The if statement block checking ir jumped out of the
C current sub-block to the end of the previous sub-block
C rather than to the end of its own sub-block.
C
C VERSION: 1.6 DATE: 17/05/2007
C MODIFIED: Allan Whiteford
C - Updated comments as part of subroutine documentation
C procedure.
C
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
CHARACTER*(*) CSTRG
INTEGER NVLCE
LOGICAL LEISS, LSTAN