123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- module m_read_CLS_TSLA_grid
- ! Reads the CLS SST NetCDF dimensions
- integer, parameter, private :: STRLEN = 512
- contains
- subroutine read_CLS_TSLA_grid(filename,gr)
- !use mod_dimensions
- use mod_grid
- use netcdf
- use nfw_mod
- implicit none
- character(len=80), intent(in) :: filename
- type(grid), intent(out) :: gr
- character(len=80) :: fname
- logical :: ex
- !dimension ids
- integer :: data_ID,cycl_ID
- ! Array dimensions
- integer :: nb,cycl
- integer :: ncid,fcount
- character(STRLEN) :: Fpath
- character(STRLEN) :: ftemplate
- print *, 'read_CLS_TSLA_grid():'
- gr = default_grid
- gr%nx=0
- Fpath='./'
- ! Open file
- do fcount=1,7 !2 satellite Envissat,J2
- select case(fcount)
- case(1)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_en*.nc'
- case(2)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_j1*.nc'
- case(3)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_j2*.nc'
- case(4)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_e1*.nc'
- case(5)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_e2*.nc'
- case(6)
- ftemplate = trim(fpath)//'sla_'//trim(filename)//'_tp*.nc'
- case(7)
- ftemplate = trim(fpath)//'sla_'//trim(filename)//'_g2*.nc'
- end select
- call fname_fromtemplate(ftemplate, fname)
- inquire(file=trim(fname),exist=ex)
- if(ex) then
- call nfw_open(fname, nf_nowrite, ncid)
- print *, ' found "', trim(fname), '"...'
- ! Get dimension id in netcdf file ...
- call nfw_inq_dimid(fname, ncid, 'Data', data_ID)
- call nfw_inq_dimid(fname, ncid, 'Cycles', cycl_ID)
- ! Get dimension length from id
- call nfw_inq_dimlen(fname, ncid, data_ID, nb)
- call nfw_inq_dimlen(fname, ncid, cycl_ID, cycl)
- call nfw_close(fname, ncid)
- gr%nx=gr%nx+nb*cycl
- gr%ny=1
- gr%x0=0
- gr%y0=0
- gr%dx=0.1
- gr%dy=0.1
- gr%reg = .false.
- gr%order = 1
- gr%ux = 'm'
- gr%uy = 'm'
- gr%set = .true.
- endif
- enddo
- end subroutine read_CLS_TSLA_grid
- subroutine read_MYO_TSLA_grid(filename,gr)
- !use mod_dimensions
- use mod_grid
- use netcdf
- use nfw_mod
- implicit none
- character(len=80), intent(in) :: filename
- type(grid), intent(out) :: gr
- character(len=80) :: fname
- logical :: ex
- !dimension ids
- integer :: time_ID
- ! Array dimensions
- integer :: nb
- integer :: ncid,fcount
- character(STRLEN) :: Fpath
- character(STRLEN) :: ftemplate
- print *, 'read_MYO_TSLA_grid():'
- gr = default_grid
- gr%nx=0
- Fpath='./'
- ! Open file
- do fcount=1,9 !2 satellite Envissat,J2
- select case(fcount)
- case(1)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_en*.nc'
- case(2)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_j1*.nc'
- case(3)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_j2*.nc'
- case(4)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_e1*.nc'
- case(5)
- ftemplate=trim(Fpath)//'sla_'//trim(filename)//'_e2*.nc'
- case(6)
- ftemplate = trim(fpath)//'sla_'//trim(filename)//'_tp*.nc'
- case(7)
- ftemplate = trim(fpath)//'sla_'//trim(filename)//'_g2*.nc'
- case(8)
- ftemplate = trim(fpath)//'sla_'//trim(filename)//'_c2*.nc'
- case(9)
- ftemplate = trim(fpath)//'sla_'//trim(filename)//'_al*.nc'
- end select
- call fname_fromtemplate(ftemplate, fname)
- inquire(file=trim(fname),exist=ex)
- if(ex) then
- call nfw_open(fname, nf_nowrite, ncid)
- print *, ' found "', trim(fname), '"...'
- ! Get dimension id in netcdf file ...
- call nfw_inq_dimid(fname, ncid, 'time', time_ID)
- ! Get dimension length from id
- call nfw_inq_dimlen(fname, ncid, time_ID, nb)
- call nfw_close(fname, ncid)
- gr%nx=gr%nx+nb
- gr%ny=1
- gr%x0=0
- gr%y0=0
- gr%dx=0.1
- gr%dy=0.1
- gr%reg = .false.
- gr%order = 1
- gr%ux = 'm'
- gr%uy = 'm'
- gr%set = .true.
- endif
- enddo
- end subroutine read_MYO_TSLA_grid
-
-
- subroutine fname_fromtemplate(ftemplate, fname)
- character(*), intent(in) :: ftemplate
- character(*), intent(inout) :: fname
- character(STRLEN) :: command ! (there may be a limit of 80 on some systems)
- integer :: ios
- command = 'ls '//trim(ftemplate)//' 2> /dev/null > tsla_files.txt'
- call system(trim(command));
- open(10, file = 'tsla_files.txt')
- read(10, fmt = '(a)', iostat = ios) fname
- close(10)
- if (ios /= 0) then
- fname = ""
- end if
- end subroutine fname_fromtemplate
- end module m_read_CLS_TSLA_grid
|