New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
2019WP/ENHANCE-12_SimonM-Tides (diff) – NEMO

Changes between Version 5 and Version 6 of 2019WP/ENHANCE-12_SimonM-Tides


Ignore:
Timestamp:
2019-02-22T14:33:54+01:00 (5 years ago)
Author:
smueller
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2019WP/ENHANCE-12_SimonM-Tides

    v5 v6  
    55The PI is responsible to closely follow the progress of the action, and especially to contact NEMO project manager if the delay on preview (or review) are longer than the 2 weeks expected. 
    66 
    7 [[PageOutline(2, , inline)]] 
     7[[PageOutline(2-3, , inline)]] 
    88 
    99== Summary 
     
    1717== Preview  
    1818 
    19 === 1. Current implementation of tidal forcing 
     19=== Current implementation of tidal forcing 
    2020 
    2121The current implementation of tide-related functionality is distributed across a number of files and there are intertwined dependencies across the tide-related modules. The current implementation of tidal forcing (tidal potential and forcing at open boundaries) comprises five modules (in separate files): 
    2222 
    23  * module {{{sbctide}}} (source:/NEMO/trunk/src/OCE/SBC/sbctide.F90), 
    24  * module {{{tideini}}} (source:/NEMO/trunk/src/OCE/SBC/tideini.F90), 
    25  * module {{{tide_mod}}} (source:/NEMO/trunk/src/OCE/SBC/tide_mod.F90), 
    26  * module {{{updtide}}} (source:/NEMO/trunk/src/OCE/SBC/updtide.F90), and 
    27  * module {{{bdytides}}} (source:/NEMO/trunk/src/OCE/BDY/bdytides.F90). 
     23 * module `sbctide` (source:/NEMO/trunk/src/OCE/SBC/sbctide.F90), 
     24 * module `tideini` (source:/NEMO/trunk/src/OCE/SBC/tideini.F90), 
     25 * module `tide_mod` (source:/NEMO/trunk/src/OCE/SBC/tide_mod.F90), 
     26 * module `updtide` (source:/NEMO/trunk/src/OCE/SBC/updtide.F90), and 
     27 * module `bdytides` (source:/NEMO/trunk/src/OCE/BDY/bdytides.F90). 
    2828 
    29 In addition, the parameters for the current set of selectable tidal constituents are supplied via an include file (source:/NEMO/trunk/src/OCE/SBC/tide.h90). Further, the computation of the surface pressure gradient (source:/NEMO/trunk/src/OCE/DYN/dynspg.F90 and source:NEMO/trunk/src/OCE/DYN/dynspg_ts.F90) with activated tidal potential as well as the harmonic analysis (module {{{diaharm}}}, source:/NEMO/trunk/src/OCE/DIA/diaharm.F90) call subroutines and access variables of the modules listed above. 
     29In addition, the parameters for the current set of selectable tidal constituents are supplied via an include file (source:/NEMO/trunk/src/OCE/SBC/tide.h90). Further, the computation of the surface pressure gradient (source:/NEMO/trunk/src/OCE/DYN/dynspg.F90 and source:NEMO/trunk/src/OCE/DYN/dynspg_ts.F90) with activated tidal potential as well as the harmonic analysis (module `diaharm`, source:/NEMO/trunk/src/OCE/DIA/diaharm.F90) call subroutines and access variables of the modules listed above. 
    3030 
    31 === 2. Proposed addition of an alternative set of tidal component parameters 
     31=== Proposed addition of an alternative set of tidal component parameters 
    3232 
    3333The proposed revision of the tidal-forcing functionality of NEMO allows for the possibility to apply tidal boundary conditions that are derived from the [https://www.aviso.altimetry.fr/en/data/products/auxiliary-products/global-tide-fes.html FES2014 version of the Global Tide FES data product], which provides tide elevations, currents and loadings for 34 tidal components (https://www.aviso.altimetry.fr/en/data/products/auxiliary-products/global-tide-fes.html). It includes the addition of an alternative tidal-component parameter set that extends the currently available set of tidal components (19 components; source:/NEMO/trunk/src/OCE/SBC/tide.h90) to correspond to the full range of components available in the FES2014 data product. 
     
    3939For reproducibility of the current tidal forcing, a new namelist parameter, `ln_tide_var`, is proposed to permit the combined selection of tidal parameter set and variant of tide-potential computation; the proposed default is the revised parameter set and the inclusion of long-periodic tides in the tide-potential computation. 
    4040 
    41 === 3. Proposed combination of tide-related functionality into one module in a new source-code subdirectory {{{OCE/TDE}}} 
     41=== Proposed combination of tide-related functionality into one module in a new source-code subdirectory `OCE/TDE` 
    4242 
    4343The basis of the proposed simplified and clarified tidal-forcing implementation is: 
    4444 
    45 * the relocation of module {{{tide_mod}}} (source:/NEMO/trunk/src/OCE/SBC/tide_mod.F90) from the {{{SBC}}} subdirectory to a newly created {{{TDE}}} subdirectory; 
     45* the relocation of module `tide_mod` (source:/NEMO/trunk/src/OCE/SBC/tide_mod.F90) from the `SBC` subdirectory to a newly created `TDE` subdirectory; 
    4646 
    47 * the merging of most of the current tide-related functionality from modules {{{sbctide}}}, {{{tideini}}}, and {{{updtide}}} into module {{{tide_mod}}}; and 
     47* the merging of most of the current tide-related functionality from modules `sbctide`, `tideini`, and `updtide` into module `tide_mod`; and 
    4848 
    49 * the provision of an appropriate public interface in module {{{tide_mod}}} for access to module subroutines and data as required by other modules ({{{sbctide}}}, {{{dynspg}}}, {{{dynspg_ts}}}, {{{bdytides}}}, {{{diaharm}}}). 
     49* the provision of an appropriate public interface in module `tide_mod` for access to module subroutines and data as required by other modules (`sbctide`, `dynspg`, `dynspg_ts`, `bdytides`, `diaharm`). 
    5050 
    5151Further, specific proposed modifications of the tide-related code include: 
    5252 
    53  a. the addition of a new namelist parameter {{{rn_love_number}}} with a default value of 0.7 that replaces the hard-coded Love-number coefficient in subroutine {{{tide_init_potential}}} (currently in module {{{sbctide}}}); 
     53 a. the addition of a new namelist parameter `rn_love_number` with a default value of 0.7 that replaces the hard-coded Love-number coefficient in subroutine `tide_init_potential` (currently in module `sbctide`); 
    5454 
    55  b. the renaming of the current namelist parameters that violate the namelist parameter naming convention (renaming of parameters {{{rndttideramp}}} and {{{clname}}} to {{{rn_tide_ramp_dt}}} and {{{sn_tide_cnames}}}, respectively); 
     55 b. the renaming of the current namelist parameters that violate the namelist parameter naming convention (renaming of parameters `rndttideramp` and `clname` to `rn_tide_ramp_dt` and `sn_tide_cnames`, respectively); 
    5656 
    57  c. the replacement of the array {{{Wave}}} that contains parameters for all available tidal components by an array ({{{tide_components}}}) that is returned by a new reentrant initialisation subroutine ({{{tide_init_components}}}) and only contains the parameters for the selected components, thereby enabling the reading in of alternative tidal parameter databases with differing numbers of components (see part 2 above), simplifying the implementation (the subsetting of the database using an array of selected indices, {{{ntide}}}, would no longer be required), and making it possible to reuse the initialisation subroutine (e.g., it can be used when a subroutine of module {{{diaharm}}} requests a list of harmonics parameters for a specific subset of tidal components, see item 2e below); 
     57 c. the replacement of the array `Wave` that contains parameters for all available tidal components by an array (`tide_components`) that is returned by a new reentrant initialisation subroutine (`tide_init_components`) and only contains the parameters for the selected components, thereby enabling the reading in of alternative tidal parameter databases with differing numbers of components, simplifying the implementation (the subsetting of the database using an array of selected indices, `ntide`, would no longer be required), and making it possible to reuse the initialisation subroutine (e.g., it can be used when a subroutine of module `diaharm` requests a list of harmonics parameters for a specific subset of tidal components, see item e below); 
    5858 
    59  d. the simplification of the internal representation of amplitudes, frequencies, and phases of the selected tidal components in the new public array {{{tide_harmonics}}} (for internal use as well as for external access of tidal harmonics information by module {{{bdytides}}}) that contains variables of a new type {{{tide_harmonic}}}, 
     59 d. the simplification of the internal representation of amplitudes, frequencies, and phases of the selected tidal components in the new public array `tide_harmonics` (for internal use as well as for external access of tidal harmonics information by module `bdytides`) that contains variables of a new type `tide_harmonic`, 
    6060 
    6161{{{#!f 
     
    6969}}} 
    7070 
    71  and which replaces the arrays {{{omega_tide}}}, {{{v0tide}}}, {{{utide}}}, {{{ftide}}} (and additionally stores the names of the components; this feature would be used by subroutine {{{tide_harmo}}}, see item 2e, and module {{{bdytides}}}, see item 2i); 
     71 and which replaces the arrays `omega_tide`, `v0tide`, `utide`, `ftide` (and additionally stores the names of the components; this feature would be used by subroutine `tide_harmo`, see item e, and module `bdytides`, see item i); 
    7272 
    73  e. the extension of subroutine {{{tide_harmo}}} of module {{{tide_mod}}} so that it optionally accepts an array of tidal-component names and, if called with such a list of names, returns a pointer to an array of elements of type {{{tide_harmonic}}} that have been filled with the tidal harmonic parameters for the respective components (this proposed development would make use of developments 2c and 2d, and take into account modification 2g); 
     73 e. the extension of subroutine `tide_harmo` of module `tide_mod` so that it optionally accepts an array of tidal-component names and, if called with such a list of names, returns a pointer to an array of elements of type `tide_harmonic` that have been filled with the tidal harmonic parameters for the respective components (this proposed development would make use of developments described in items c and d, and take into account the modification described in item g); 
    7474 
    75  f. the simplified daily synchronisation of the temporal tidal-forcing update in subroutine {{{sbc_tide}}} (module {{{sbctide}}}) using a single call to a new subroutine {{{tide_update}}} of module {{{tide_mod}}} (this proposed subroutine would include calls to subroutines {{{tide_harmo}}} and {{{tide_init_potential}}} and the output of tide-related information); 
     75 f. the simplified daily synchronisation of the temporal tidal-forcing update in subroutine `sbc_tide` (module `sbctide`) using a single call to a new subroutine `tide_update` of module `tide_mod` (this proposed subroutine would include calls to subroutines `tide_harmo` and `tide_init_potential` and the output of tide-related information); 
    7676 
    77  g. the replacement of the use of variable {{{nset_day}}} by the value of an argument (passed via subroutine {{{tide_harmo}}}) in subroutine {{{astronomic_angle}}} (module {{{tide_mod}}}), in order to remove the dangerous temporary modification of {{{nday_sec}}} in module {{{sbcmod}}}; 
     77 g. the replacement of the use of variable `nset_day` by the value of an argument (passed via subroutine `tide_harmo`) in subroutine `astronomic_angle` (module `tide_mod`), in order to remove the dangerous temporary modification of `nday_sec` in module `sbcmod`; 
    7878 
    79  h. the modification of subroutine {{{upd_tide}}}, called in the computation of the surface pressure graident, so that instead of {{{kt}}} and {{{kt_tide}}} only the time between midnight and the current (sub)timestep is required as argument (this makes the setting of {{{kt_tide}}} in module {{{sbctide}}} unnecessary); and 
     79 h. the modification of subroutine `upd_tide`, called in the computation of the surface pressure gradient, so that instead of `kt` and `kt_tide` only the time between midnight and the current (sub)timestep is required as argument (this makes the setting of `kt_tide` in module `sbctide` unnecessary); and 
    8080 
    81  i. in module {{{bdytide}}}, the replacement of references to variables {{{Wave}}}, {{{ftide}}}, {{{omega}}}, {{{utide}}}, and {{{v0tide}}} by references to components of variable {{{tide_harmonics}}}. 
     81 i. in module `bdytide`, the replacement of references to variables `Wave`, `ftide`, `omega`, `utide`, and `v0tide` by references to components of variable `tide_harmonics`. 
     82 
     83=== Previewer's comments 
    8284 
    8385== Tests