56 REAL(sp),
POINTER :: ua_blk(:,:),va_blk(:,:),el_blk(:,:)
57 REAL(sp),
POINTER :: u_blk(:,:,:),v_blk(:,:,:)
58 REAL(sp),
POINTER :: s1_blk(:,:,:),t1_blk(:,:,:)
59 REAL(sp),
POINTER :: hyw_blk(:,:,:)
60 TYPE(time),
POINTER :: time_blk(:)
62 REAL(sp),
POINTER :: wcell_blk(:,:),wnode_blk(:,:)
117 LOGICAL,
PRIVATE :: need_init_nest = .true.
194 WRITE(unit=
ipt,nml=nml_ncnest)
196 WRITE(unit=
ipt,nml=nml_nesting)
212 CHARACTER(LEN=120) :: FNAME
217 fname =
"./"//trim(
casename)//
"_run.nml" 225 READ(unit=
nmlunit, nml=nml_nesting,iostat=ios)
228 CALL fatal_error(
"Can Not Read NameList NML_NESTING from file: "//trim(fname))
232 &
write(
ipt,*)
"Read_Name_List:NML_NESTING" 235 &
write(unit=
ipt,nml=nml_nesting)
240 READ(unit=
nmlunit, nml=nml_ncnest,iostat=ios)
243 CALL fatal_error(
"Can Not Read NameList NML_NCNEST from file: "//trim(fname))
247 &
write(
ipt,*)
"Read_Name_List: NML_NCNEST" 250 &
write(unit=
ipt,nml=nml_ncnest)
260 & (
"THE NESTING_BLOCKSIZE IS LESS THAN TWO IN THE NESTING NAME LIST")
263 & (
"THE NESTING FILE NAME IS EMPTY IN THE NAME LIST")
270 & (
"THE NCNEST_BLOCKSIZE IS LESS THAN TWO IN THE NCNEST NAME LIST")
273 & (
"THE NCNEST_NODE_FILES VARIABLE IS EMPTY IN THE NCNEST NAME LIST")
282 &
write(
ipt,*)
"Subroutine Ends: name_list_read_nest;" 288 TYPE(ncfile),
POINTER :: NCF
290 logical :: back=.true.
291 character(len=160) :: pathnfile
298 &
CALL warning(
"Nesting File does not end in .nc", &
303 CALL nc_init(ncf,pathnfile)
306 if(.not. ncf%OPEN)
then 309 filehead => add(filehead,ncf)
320 SUBROUTINE set_var(NOW,UA,VA,EL,U,V,S1,T1,HYW)
322 TYPE(time),
INTENT(IN) :: NOW
323 REAL(SP),
ALLOCATABLE,
OPTIONAL :: UA(:),VA(:),EL(:)
324 REAL(SP),
ALLOCATABLE,
OPTIONAL :: U(:,:),V(:,:),S1(:,:),T1(:,:),HYW(:,:)
329 TYPE(time),
INTENT(IN) :: NOW
330 REAL(SP),
ALLOCATABLE,
OPTIONAL :: HSC1(:),TPEAK(:),DIRDEG1(:)
345 TYPE(ncvar),
POINTER :: VAR1
346 TYPE(ncvar),
POINTER :: VAR2
347 TYPE(ncatt),
POINTER :: ATT
348 TYPE(time),
INTENT(in) :: NOW
349 INTEGER,
POINTER :: D1,D2
352 CHARACTER(len=80):: TZONE
354 test2 = is_valid_itime(var1,var2,tzone)
359 (
"CAN NOT UPDATE TIME FOR INVALID INTEGER TIME VARIABLES")
362 CALL nc_point_var(var1,d1)
364 CALL nc_point_var(var2,d2)
369 if(test==0)
call fatal_error(
"That is bad times man!")
378 TYPE(time),
INTENT(IN) :: mjd
379 INTEGER,
INTENT(OUT) ::
d, ms
383 msec = dble(mjd%MuSod) / 1000.0_dp
387 IF (abs(mjd%MJD) .GT. huge(
d))
THEN 399 TYPE(ncvar),
POINTER :: VAR
400 TYPE(time),
INTENT(in) :: NOW
401 REAL(SP),
POINTER :: Data
403 CHARACTER(len=80):: TZONE
405 test = is_valid_float_days(var,tzone)
408 call print_att_list(var)
410 (
"CAN NOT UPDATE TIME FOR INVALID FLOATING POINT TIME VARIABLE")
413 CALL nc_point_var(var,data)
422 TYPE(ncvar),
POINTER :: var
423 logical,
intent(in) :: use_mjd
424 TYPE(ncdim),
POINTER,
OPTIONAL :: dim
425 INTEGER,
OPTIONAL :: size
426 TYPE(ncatt),
POINTER :: att
427 REAL(sp),
pointer :: data_vec(:)
428 REAL(sp),
pointer :: data_scl
430 IF(
PRESENT(size))
THEN 431 ALLOCATE(data_vec(size))
433 ALLOCATE(data_vec(1))
434 data_scl =>data_vec(1)
437 IF (
PRESENT(dim))
THEN 438 var => nc_make_pvar(name=
'time', values=data_vec, dim1= dim)
439 if(
associated(var%vec_flt))
then 440 var%scl_flt => var%vec_flt(1)
442 var%scl_dbl => var%vec_dbl(1)
445 var => nc_make_pvar(name=
'time', values=data_scl)
448 att => nc_make_att(name=
'long_name',values=
'time')
452 att => nc_make_att(name=
'units',values=mjd_units)
455 att => nc_make_att(name=
'format',values=fmat)
458 att => nc_make_att(name=
'time_zone',values=
'UTC')
462 att => nc_make_att(name=
'units',values=days_units)
465 att => nc_make_att(name=
'time_zone',values=
'none')
475 TYPE(ncvar),
POINTER :: var
476 logical,
intent(in) :: use_mjd
477 TYPE(ncdim),
POINTER,
OPTIONAL :: dim
478 INTEGER,
OPTIONAL :: size
479 TYPE(ncatt),
POINTER :: att
480 INTEGER,
POINTER :: data_vec(:)
481 INTEGER,
POINTER :: data_scl
483 IF(
PRESENT(size))
THEN 484 ALLOCATE(data_vec(size))
486 ALLOCATE(data_vec(1))
487 data_scl =>data_vec(1)
491 IF (
PRESENT(dim))
THEN 492 var => nc_make_pvar(name=
'Itime', values=data_vec, dim1= dim)
493 var%SCL_INT => var%VEC_INT(1)
495 var => nc_make_pvar(name=
'Itime', values=data_scl)
499 att => nc_make_att(name=
'units',values=mjd_units)
502 att => nc_make_att(name=
'format',values=fmat)
505 att => nc_make_att(name=
'time_zone',values=
'UTC')
508 att => nc_make_att(name=
'units',values=days_units)
511 att => nc_make_att(name=
'time_zone',values=
'none')
character(len=160) ncnest_node_files
type(nest_data), dimension(:), pointer ncnest_data
character(len=80) casename
real(sp), dimension(:), allocatable, target d
subroutine archive_nest_wave
type(ncvar), pointer var_u
subroutine get_output_file_interval(STRING, INTERVAL)
real(sp), dimension(:), allocatable wnode_nest
type(ncvar) function, pointer itime_object_nest(use_mjd, DIM, size)
integer, parameter nmlunit
type(ncvar), pointer var_time2
real(sp), dimension(:,:), allocatable v_nest_l
integer, parameter dbg_scl
logical function dbg_set(vrb)
real(sp), dimension(:), allocatable ua_nest
real(sp), dimension(:,:), allocatable s1_nest_l
type(ncvar), pointer var_time1
subroutine set_var(NOW, UA, VA, EL, U, V, S1, T1, HYW)
subroutine name_list_initialize_nest
subroutine set_var_wave(NOW, HSC1, TPEAK, DIRDEG1)
type(ncvar), pointer var_v
type(ncvar), pointer var_wnode
real(sp), dimension(:,:), allocatable hyw_nest_l
character(len=80) nesting_file_name
type(ncvar), pointer var_s1
real(sp), dimension(:), allocatable wcell_nest
type(ncvar), pointer var_el
real(sp), dimension(:), allocatable va_nest
type(nest_data), pointer nesting_data
type(grid), dimension(:), pointer ncnest_grids
subroutine warning(ER1, ER2, ER3, ER4)
subroutine name_list_read_nest
type(ncvar), pointer var_va
real(sp), dimension(:,:), allocatable hyw_nest
real(sp), dimension(:), allocatable el_nest
subroutine fopen(IUNIT, INSTR, IOPT)
real(sp), dimension(:,:), allocatable u_nest_l
type(time) interval_time_ncnest
subroutine open_nesting_file
type(grid), pointer nesting_grid
real(sp), dimension(:,:), allocatable v_nest
real(sp), dimension(:), allocatable, target h_l
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(sp), dimension(:,:), allocatable s1_nest
type(ncvar), pointer var_t1
integer nesting_blocksize
real(sp), dimension(:,:), allocatable t1_nest_l
type(ncvar), pointer var_hyw
character(len=80) ncnest_out_interval
integer, parameter dbg_io
type(ncfile), pointer nesting_file
type(ncvar), pointer var_wcell
integer, parameter dbg_sbr
type(ncvar), pointer var_ua
character(len=80) nesting_type
subroutine update_float_time_nest(VAR, NOW)
subroutine name_list_print_nest
real(sp), dimension(:,:), allocatable u_nest
real(sp), dimension(:,:), allocatable, target zz1_l
real(sp), dimension(:,:), allocatable t1_nest
subroutine update_itime_nest(VAR1, VAR2, NOW)
character(len=80), dimension(:), allocatable ncnest_fnames
integer function time2ncitime_nest(MJD, D, MS)
real(sp), dimension(:,:), allocatable, target zz_l
integer, parameter dbg_log
real(sp), dimension(:), allocatable, target h1_l
type(ncvar) function, pointer float_time_object_nest(use_mjd, DIM, size)