GETINTALLOCARRAY Subroutine

public subroutine GETINTALLOCARRAY(Key, GetIntArray, nIntegers, Proposal, quiet_def_in)

Allocate and read integer array of unknown length "nIntegers" integer values named "Key" from ini file. If keyword "Key" is not found in setup file, the default values "Proposal" are used to create the array (error if "Proposal" not given). Setup file was read in before and is stored as list of character strings starting with "FirstString".

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: Key

Search for this keyword in ini file

integer, ALLOCATABLE :: GetIntArray(:)

Integer array read from setup file or initialized with default values

integer, intent(out) :: nIntegers

Number of values in array

integer, intent(in), optional :: Proposal(:)

Default values as integer array

logical, intent(in), optional :: quiet_def_in

flag to be quiet if DEFAULT is taken


Calls

proc~~getintallocarray~~CallsGraph proc~getintallocarray GETINTALLOCARRAY interface~findstr FindStr proc~getintallocarray->interface~findstr proc~converttoproposalstr ConvertToProposalStr proc~getintallocarray->proc~converttoproposalstr proc~count_sep count_sep proc~getintallocarray->proc~count_sep swrite swrite proc~getintallocarray->swrite interface~findstr->interface~findstr proc~remove_blanks remove_blanks proc~converttoproposalstr->proc~remove_blanks

Source Code

SUBROUTINE GETINTALLOCARRAY(Key,GetIntArray,nIntegers,Proposal,quiet_def_in)
! MODULES
    IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
CHARACTER(LEN=*),INTENT(IN)          :: Key          !! Search for this keyword in ini file
INTEGER         ,OPTIONAL,INTENT(IN) :: Proposal(:)  !! Default values as integer array
LOGICAL         ,OPTIONAL,INTENT(IN) :: quiet_def_in !! flag to be quiet if DEFAULT is taken
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
INTEGER,INTENT(OUT)       :: nIntegers        !! Number of values in array
INTEGER,ALLOCATABLE       :: GetIntArray(:)   !! Integer array read from setup file or initialized with default values
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
CHARACTER(LEN=MAXLEN)     :: HelpStr,ProposalStr
CHARACTER(LEN=8)          :: DefMsg
INTEGER                   :: iInteger
INTEGER                   :: ioerr
LOGICAL                   :: quiet_def
!===================================================================================================================================

IF (PRESENT(Proposal)) THEN
  CALL ConvertToProposalStr(ProposalStr,intarr=Proposal)
  CALL FindStr(Key,HelpStr,DefMsg,ProposalStr)
ELSE
  CALL FindStr(Key,HelpStr,DefMsg)
END IF
!count number of components
nIntegers=1+count_sep(helpstr,",")

IF(ALLOCATED(GetIntArray)) DEALLOCATE(GetIntArray)
ALLOCATE(GetIntArray(nIntegers))
READ(HelpStr,*,IOSTAT=ioerr)GetIntArray
IF(ioerr.NE.0)THEN
  WRITE(UNIT_stdout,*)'PROBLEM IN READIN OF LINE (integer array):'
  WRITE(UNIT_stdout,*) '"',TRIM(key),' = ',TRIM(helpStr),'"'
  CALL abort(__STAMP__,"")
END IF
quiet_def=.FALSE.
IF(PRESENT(quiet_def_in))THEN
  IF(INDEX(TRIM(DefMsg),"DEFAULT").NE.0)THEN
    quiet_def=quiet_def_in
  END IF
END IF
IF(.NOT.quiet_def) THEN
  SWRITE(UNIT_stdOut,'(a3,a30,a3,a28,i4,a4,a7,a3)',ADVANCE='NO') ' | ',TRIM(Key),' | ',&
                                                                 'Integer array of size (',nIntegers,') | ',TRIM(DefMsg),' | '
  DO iInteger=0,nIntegers-1
    IF ((iInteger.GT.0) .AND. (MOD(iInteger,8).EQ.0)) THEN
      SWRITE(UNIT_stdOut,*)
      SWRITE(UNIT_stdOut,'(a80,a3)',ADVANCE='NO')'',' | '
    END IF
    SWRITE(UNIT_stdOut,'(i5)',ADVANCE='NO')GetIntArray(iInteger+1)
  END DO
  SWRITE(UNIT_stdOut,*)
END IF !quiet_def
END SUBROUTINE GETINTALLOCARRAY