Register one tag if it names a file, else leave id = 0.
Shared time-axis settings come from the group; scale/add
are per tag.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(ocean_dataovr_config_t), | intent(in) | :: | cfg | |||
| type(dataovr_entry_config_t), | intent(in) | :: | e | |||
| character(len=*), | intent(in) | :: | tag | |||
| type(ocean_data_input_t), | intent(inout) | :: | reader | |||
| type(hgrid_t), | intent(in) | :: | grid | |||
| integer, | intent(in) | :: | oor | |||
| integer, | intent(in) | :: | dn1 | |||
| integer, | intent(in) | :: | dn2 | |||
| integer, | intent(in) | :: | di0 | |||
| integer, | intent(in) | :: | dj0 | |||
| integer, | intent(out) | :: | id | |||
| integer, | intent(in), | optional | :: | nx_extra |
Face-field slab widening; forwarded to the reader. |
|
| integer, | intent(in), | optional | :: | ny_extra |
Face-field slab widening; forwarded to the reader. |
|
| integer, | intent(out), | optional | :: | ierr |
subroutine register_tag(cfg, e, tag, reader, grid, oor, dn1, dn2, di0, dj0, id, & nx_extra, ny_extra, ierr) !! Register one tag if it names a file, else leave `id = 0`. !! Shared time-axis settings come from the group; `scale`/`add` !! are per tag. type(ocean_dataovr_config_t), intent(in) :: cfg type(dataovr_entry_config_t), intent(in) :: e character(len=*), intent(in) :: tag type(ocean_data_input_t), intent(inout) :: reader type(hgrid_t), intent(in) :: grid integer, intent(in) :: oor, dn1, dn2, di0, dj0 integer, intent(out) :: id integer, intent(in), optional :: nx_extra, ny_extra !! Face-field slab widening; forwarded to the reader. integer, intent(out), optional :: ierr if (present(ierr)) ierr = OCEAN_STATUS_OK id = 0 if (len_trim(e%file) == 0) return if (len_trim(e%var) == 0) then call fail("&ocean_dataovr_nml: "//tag//"_file is set ('"//trim(e%file)// & "') but "//tag//"_var is blank — name the variable explicitly "// & "(no guessed fallbacks for forcing)", ierr, OCEAN_STATUS_ERR_SETUP) return end if call ocean_data_input_register_2d(reader, trim(e%file), trim(e%var), grid, & dn1, dn2, di0, dj0, id, & time_mode=trim(cfg%time_mode), & cycle_period=cfg%cycle_period, & t_offset=cfg%t_offset, & scale=e%scale, add_offset=e%add_offset, & oor=oor, nx_extra=nx_extra, ny_extra=ny_extra, ierr=ierr) if (present(ierr)) then if (ierr /= OCEAN_STATUS_OK) return end if call logger%info("ocean_dataovr: "//tag//" <- '"//trim(e%var)//"' in "//trim(e%file)// & " (mode "//trim(cfg%time_mode)//", id "//to_string(id)//")") end subroutine register_tag