get integer or real scalar (depends on optional argument) abort if variable does not exist. USE var_exists for checking
| Type | Intent | Optional | 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) |
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