define and put a scalar value to the netCDF file
| Type | Intent | Optional | 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 |
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