ADAS Subroutine xxrptn
subroutine xxrptn( iunit , ndstack,
& ndptnl , ndptn , ndptnc ,
& nptnl , nptn , nptnc ,
& iptnla , iptna , iptnca ,
& lresol , lptn ,
& cstrg ,
& ncptn_stack , cptn_stack
& )
c-----------------------------------------------------------------------
c
c ****************** fortran77 subroutine: xxprtn *********************
c
c Purpose: To read and analyse a partition block in a datafile header
c
c Calling program: adas416
c
c Notes: (1) Partition levels, partitions and partition components are
c labelled starting at 0 (but see (2)).
c (2) Partition level 0 labels the resolved root partition level
c partition level 1 labels the unresolved root partition
c level.
c (3) For an unresolved (standard) file, the partitions are each
c ionisation stage from the neutral to the bare nucleus and
c they are labelled by the ion charge. Each partition has
c just the one component.
c (4) Distinguish the indexing (starting at 1) from the label
c (starting at 0) .
c
c Subroutine:
c
c input : (i*4) iunit = unit to which input file is allocated
c input : (i*4) ndstack = maximum no. of text lines in partition block
c
c input : (i*4) ndptnl = maximum level of partitions
c input : (i*4) ndptn = maximum no. of partitions in one level
c input : (i*4) ndptnc = maximum no. of components in a partition
c input : (l*4) lresol = .true. => resolved root partition
c = .false. => standard root partition
c
c output: (i*4) nptnl = number of partition levels in block
c output: (i*4) nptn() = number of partitions in partition level
c 1st dim: partition level
c output: (i*4) nptnc(,) = number of components in partition
c 1st dim: partition level
c 2nd dim: member partition in partition level
c output: (i*4) iptnla() = partition level label (0=resolved root,1=
c unresolved root)
c 1st dim: partition level index
c output: (i*4) iptna(,) = partition member label (labelling starts at 0)
c 1st dim: partition level index
c 2nd dim: member partition index in partition
c level
c output: (i*4) iptnca(,,)= component label (labelling starts at 0)
c 1st dim: partition level index
c 2nd dim: member partition index in partition
c level
c 3rd dim: component index of member partition
c output: (l*4) lptn = .true. => partition block present
c = .false. => partition block not present
c output: (c*80) cstrg = string marking end of partition block
c output: (i*4) ncptn_stack= number of text lines in partition block
c output: (c*80) cptn_stack()=text lines of partition block
c 1st dim: text line pointer
c
c
c Routines:
c Routine Source Brief description
c -------------------------------------------------------------
c I4UNIT ADAS Fetch unit number for output of messages
c XXSLEN ADAS Find non-blank characters in string
c XXWORD ADAS Extract position of number in buffer
c
c Author: H. P. Summers, university of strathclyde
c JA7.08
c tel. 0141-548-4196
c
c Date: 25/08/05
c
c Version: 1.1 Date: 25/08/2005
c Modified: Hugh Summers
c - First edition.
c
c Version: 1.2 Date: 28/02/2008
c Modified: Adam Foster
c - Increased length of strg to 1024
c
c Version: 1.3 Date: 28/02/2008
c Modified: Allan Whiteford
c - Added comments for Adam's change
c - Fixed capitalisation of comments section.
c
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
CHARACTER*80 CPTN_STACK(NDSTACK), CSTRG
INTEGER IPTNA(NDPTNL,NDPTN)
INTEGER IPTNCA(NDPTNL,NDPTN,NDPTNC)
INTEGER IPTNLA(NDPTNL), IUNIT
INTEGER NCPTN_STACK, NDPTN, NDPTNC, NDPTNL
INTEGER NDSTACK, NPTN(NDPTNL)
INTEGER NPTNC(NDPTNL,NDPTN), NPTNL
LOGICAL LPTN, LRESOL