ncfile_get_scalar Subroutine

public subroutine ncfile_get_scalar(sf, varname_in, intout, realout)

get integer or real scalar (depends on optional argument) abort if variable does not exist. USE var_exists for checking

Type Bound

t_ncfile

Arguments

Type IntentOptional Attributes Name
class(t_ncfile), intent(inout) :: sf

self

character(len=*), intent(in) :: varname_in

name of the variable (can include "/" for groups)

integer, intent(out), optional :: intout

choose for integer out

real(kind=wp), intent(out), optional :: realout

choose for real(wp) out (double)


Calls

proc~~ncfile_get_scalar~~CallsGraph proc~ncfile_get_scalar t_ncfile%ncfile_get_scalar nf90_get_var nf90_get_var proc~ncfile_get_scalar->nf90_get_var nf90_inq_varid nf90_inq_varid proc~ncfile_get_scalar->nf90_inq_varid proc~mpi_check_single_access mpi_check_single_access proc~ncfile_get_scalar->proc~mpi_check_single_access proc~ncfile_enter_groups t_ncfile%ncfile_enter_groups proc~ncfile_get_scalar->proc~ncfile_enter_groups proc~ncfile_handle_error t_ncfile%ncfile_handle_error proc~ncfile_get_scalar->proc~ncfile_handle_error proc~ncfile_enter_groups->proc~mpi_check_single_access nf90_inq_ncid nf90_inq_ncid proc~ncfile_enter_groups->nf90_inq_ncid proc~ncfile_openfile t_ncfile%ncfile_openfile proc~ncfile_enter_groups->proc~ncfile_openfile proc~ncfile_handle_error->proc~mpi_check_single_access nf90_strerror nf90_strerror proc~ncfile_handle_error->nf90_strerror proc~ncfile_openfile->proc~mpi_check_single_access proc~ncfile_openfile->proc~ncfile_handle_error nf90_create nf90_create proc~ncfile_openfile->nf90_create nf90_open nf90_open proc~ncfile_openfile->nf90_open

Called by

proc~~ncfile_get_scalar~~CalledByGraph proc~ncfile_get_scalar t_ncfile%ncfile_get_scalar proc~readnetcdf ReadNETCDF proc~readnetcdf->proc~ncfile_get_scalar proc~readnetcdf~2 ReadNETCDF proc~readnetcdf~2->proc~ncfile_get_scalar proc~bff_init t_boundaryFromFile%bff_init proc~bff_init->proc~readnetcdf~2 proc~hmap_axisnb_init_params hmap_axisNB_init_params proc~hmap_axisnb_init_params->proc~readnetcdf interface~t_hmap_axisnb t_hmap_axisNB interface~t_hmap_axisnb->proc~hmap_axisnb_init_params proc~hmap_axisnb_init hmap_axisNB_init interface~t_hmap_axisnb->proc~hmap_axisnb_init proc~boundaryfromfile_new boundaryFromFile_new proc~boundaryfromfile_new->proc~bff_init proc~hmap_axisnb_init->proc~hmap_axisnb_init_params

Source Code

  SUBROUTINE ncfile_get_scalar( sf,varname_in,intout,realout)
    ! MODULES
    IMPLICIT NONE
    !-------------------------------------------------------------------------------------------------------------------------------
    ! INPUT VARIABLES
    CHARACTER(LEN=*),INTENT(IN) :: varname_in !! name of the variable (can include "/" for groups)
    !-------------------------------------------------------------------------------------------------------------------------------
    ! OUTPUT VARIABLES
    CLASS(t_ncfile),INTENT(INOUT)        :: sf !! self
    INTEGER ,INTENT(OUT),OPTIONAL        :: intout   !! choose for integer out
    REAL(wp),INTENT(OUT),OPTIONAL        :: realout  !! choose for real(wp) out (double)
    !-------------------------------------------------------------------------------------------------------------------------------
    ! LOCAL VARIABLES
    CHARACTER(LEN=255) :: varname
    INTEGER :: grpid,varid
    LOGICAL :: exists
    !===============================================================================================================================
    CALL mpi_check_single_access()
    CALL sf%enter_groups(varname_in,grpid,varname,exists)
#if NETCDF
    IF(.NOT.exists) CALL sf%handle_error("finding group in '"//TRIM(varname_in)//"'")
    sf%ioError = nf90_INQ_VARID(grpid, TRIM(varname), varid)
    CALL sf%handle_error("finding scalar variable '"//TRIM(varname_in)//"'")
    IF(PRESENT(intout))THEN
      sf%ioError = nf90_GET_VAR(grpid, varid, intout)
      CALL sf%handle_error("reading scalar variable '"//TRIM(varname_in)//"'")
      WRITE(UNIT_stdOut,'(6X,A,A30,A,I8)')'read netCDF scalar ','"'//TRIM(varname_in)//'"',' :: ',intout
    ELSEIF(PRESENT(realout))THEN
      sf%ioError = nf90_GET_VAR(grpid, varid, realout)
      CALL sf%handle_error("reading scalar variable '"//TRIM(varname_in)//"'")
      WRITE(UNIT_stdOut,'(6X,A,A30,A,E21.11)')'read netCDF scalar ','"'//TRIM(varname_in)//'"',' :: ',realout
    END IF
#endif /*NETCDF*/
  END SUBROUTINE ncfile_get_scalar