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 2 and Version 3 of 2019WP/ENHANCE-12_SimonM-Tides


Ignore:
Timestamp:
2019-02-11T19:30:26+01:00 (5 years ago)
Author:
smueller
Comment:

--

Legend:

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

    v2 v3  
    1717== Preview  
    1818 
    19 {{{#!box help 
    20 [[Include(wiki:Developers/DevProcess#preview_)]] 
    21 }}} 
     19=== 1. Current implementation of tidal forcing 
     20 
     21The 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): 
     22 
     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). 
     28 
     29In addition, the parameters for the currently 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. 
     30 
     31=== 2. Proposed addition of an alternative set of tidal component parameters 
     32 
     33''To be outlined.'' 
     34 
     35=== 3. Proposed combination of tide-related functionality into one module in a new source-code subdirectory {{{OCE/TDE}}} 
     36 
     37The basis of the proposed simplified and clarified tidal-forcing implementation is: 
     38 
     39* 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; 
     40 
     41* the merging of most of the current tide-related functionality from modules {{{sbctide}}}, {{{tideini}}}, and {{{updtide}}} into module {{{tide_mod}}}; and 
     42 
     43* 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}}}). 
     44 
     45Further, specific proposed modifications of the tide-related code include: 
     46 
     47 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}}}); 
     48 
     49 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); 
     50 
     51 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); 
     52 
     53 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}}}, 
     54 
     55{{{#f 
     56   TYPE, PUBLIC :: tide_harmonic 
     57      CHARACTER(LEN=4) :: name 
     58      REAL(wp) :: f 
     59      REAL(wp) :: omega 
     60      REAL(wp) :: u 
     61      REAL(wp) :: v 
     62   END TYPE tide_harmonic 
     63}}}, 
     64 
     65 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); 
     66 
     67 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); 
     68 
     69 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); 
     70 
     71 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}}}; 
     72 
     73 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 
     74 
     75 i. in module {{{bdytide}}}, the replacement of references to variables {{{Wave}}}, {{{ftide}}}, {{{omega}}}, {{{utide}}}, and {{{v0tide}}} by references to components of variable {{{tide_harmonics}}}. 
    2276 
    2377== Tests