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