ncfile_put_scalar Subroutine

public subroutine ncfile_put_scalar(sf, varname_in, def_put_mode, int_in, real_in)

define and put a scalar value to the netCDF file

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

integer, intent(in) :: def_put_mode

1:"def" or 2:"put" mode

integer, intent(in), optional :: int_in

scalar integer input

real(kind=wp), intent(in), optional :: real_in

scalar double input


Calls

proc~~ncfile_put_scalar~~CallsGraph proc~ncfile_put_scalar t_ncfile%ncfile_put_scalar proc~mpi_check_single_access mpi_check_single_access proc~ncfile_put_scalar->proc~mpi_check_single_access

Source Code

  SUBROUTINE ncfile_put_scalar(sf,varname_in,def_put_mode,int_in,real_in)
    ! MODULES
    IMPLICIT NONE
    !-------------------------------------------------------------------------------------------------------------------------------
    ! INPUT VARIABLES
    CHARACTER(LEN=*),INTENT(IN) :: varname_in  !! name of the variable
    INTEGER,INTENT(IN) :: def_put_mode  !! 1:"def" or 2:"put" mode
    INTEGER,INTENT(IN),OPTIONAL :: int_in      !! scalar integer input
    REAL(wp),INTENT(IN),OPTIONAL :: real_in      !! scalar double input
    !-------------------------------------------------------------------------------------------------------------------------------
    ! OUTPUT VARIABLES
    CLASS(t_ncfile),INTENT(INOUT):: sf    !! self
    ! LOCAL VARIABLES
    INTEGER    :: varid
    !===============================================================================================================================
    CALL mpi_check_single_access()
#if NETCDF
    IF(PRESENT(int_in))THEN
      SELECT CASE(def_put_mode)
      CASE(1) !def
        sf%ioError = nf90_def_var(sf%nc_id, varname_in,NF90_INT,varid)
        CALL sf%handle_error("define scalar integer '"//TRIM(varname_in)//"'")
      CASE(2) !put
        sf%ioError = nf90_INQ_VARID(sf%nc_id, TRIM(varname_in), varid)
        CALL sf%handle_error("find varid of real array'"//TRIM(varname_in)//"'")
        sf%ioError = nf90_put_var(sf%nc_id, varid,int_in)
        CALL sf%handle_error("write scalar integer '"//TRIM(varname_in)//"'")
      END SELECT
    END IF
    IF(PRESENT(real_in))THEN
      SELECT CASE(def_put_mode)
      CASE(1) !def
        sf%ioError = nf90_def_var(sf%nc_id, varname_in,NF90_DOUBLE,varid)
        CALL sf%handle_error("define scalar real '"//TRIM(varname_in)//"'")
      CASE(2) !put
        sf%ioError = nf90_INQ_VARID(sf%nc_id, TRIM(varname_in), varid)
        CALL sf%handle_error("find varid of real array'"//TRIM(varname_in)//"'")
        sf%ioError = nf90_put_var(sf%nc_id, varid,real_in)
        CALL sf%handle_error("write scalar real '"//TRIM(varname_in)//"'")
      END SELECT
    END IF
#else
  CALL abort(__STAMP__,&
      "cannot write scalar, BUILD_NETCDF=OFF")
#endif /*NETCDF*/
  END SUBROUTINE ncfile_put_scalar