10 CHARACTER(LEN=1024) :: arg,infile,outfile,fileformat,configfile
11 CHARACTER(LEN=1024) :: ctemp2m=
"air_temperature_2m" 12 CHARACTER(LEN=1024) :: dimname_t
13 CHARACTER(LEN=10) :: cdtg
15 INTEGER(KIND=IKIND) :: nx,ny
18 REAL(KIND=8),
DIMENSION(:,:),
ALLOCATABLE :: t2m
19 INTEGER,
DIMENSION(:),
ALLOCATABLE :: times
20 REAL(KIND=8),
DIMENSION(:),
ALLOCATABLE :: ztimes
21 REAL(KIND=8) :: basetime,ztime
22 INTEGER :: ntimes,ierr
25 IF ((command_argument_count() /= 3 ) .AND. (command_argument_count() /= 4 ) )
THEN 26 WRITE(*,*)
"Usage: ./fimex2d_example infile outfile infile-fileformat [configfile]" 31 DO i = 1, command_argument_count()
32 CALL get_command_argument(i, arg)
40 SELECT CASE (fileformat)
41 CASE(
"felt",
"FELT",
"FLT",
"flt")
43 CASE(
"GRIB",
"grib",
"grb",
"GRB",
"GRIB2",
"grib2",
"grb2",
"GRB2")
45 CASE(
"netcdf",
"NETCDF",
"nc",
"NC")
48 WRITE(*,*)
"Invalid file format: "//fileformat
52 IF (command_argument_count() == 4 )
THEN 57 IF (( trim(fileformat) ==
"felt" ) .OR. ( trim(fileformat) ==
"grib" ))
THEN 58 IF ( configfile ==
"" )
THEN 59 WRITE(*,*)
'No config file provided, but is mandatory for '//fileformat
64 ierr=fio_in%OPEN(trim(infile),configfile,
set_filetype(fileformat))
65 IF ( ierr /= 0 )
CALL fi_error(
"Error opening "//trim(infile))
66 ierr=fio_out%OPEN(trim(outfile),
"",
set_filetype(
"netcdf",filetype_rw))
67 IF ( ierr /= 0 )
CALL fi_error(
"Error opening "//trim(outfile))
69 WRITE(*,*)
"List variables in input file "//trim(infile)
70 DO i = 1,int(fio_in%VARIABLES_SIZE())
71 WRITE(*,*)
"Found: ",i,
" ", trim(fio_in%GET_VARNAME(i))
75 CALL fi_get_dimensions(fio_in,trim(ctemp2m),nx=nx,ny=ny,ntimes=ntimes,dimname_t=dimname_t,basetime=basetime)
78 ALLOCATE(times(0:ntimes-1))
79 ALLOCATE(ztimes(0:ntimes-1))
80 WRITE(*,*)
'Listing times in file:' 81 CALL fi_read_dimension(fio_in,ntimes,trim(dimname_t),ztimes,
"seconds since 1970-01-01 00:00:00 +00:00")
91 time_loop:
DO t=0,ntimes-1
93 WRITE(cdtg,
'(I10.10)') times(t)
94 IF ( cdtg(9:10) ==
"12" )
THEN 95 IF (.NOT. found12 )
THEN 96 CALL fi_read_field(fio_in,trim(ctemp2m),nx,ny,t2m,t,cunit=
"celsius",time=ztime,verbosity=2)
107 CALL fi_error(
"Variable for 12 UTC was not found")