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.
2011WP/2011Stream2/OpenBoundaries (diff) – NEMO

Changes between Version 1 and Version 2 of 2011WP/2011Stream2/OpenBoundaries


Ignore:
Timestamp:
2011-03-11T16:33:48+01:00 (13 years ago)
Author:
davestorkey
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2011WP/2011Stream2/OpenBoundaries

    v1 v2  
    1212Blah 
    1313 
    14 == High-level control and coding structure == 
     14== Summary of main features == 
     15 
     16 * The following algorithms will be included in the first implementation: 
     17   * Clamped and Flow Relaxation Scheme. (Clamped is FRS with rimwidth=1). 
     18   * Flather radiation condition on barotropic solution. 
     19   * NPO version of Orlanski radiation condition as currently included in OBC. 
     20     Plan to code ''implicit'' time-stepping for greater stability and to avoid 
     21     OBC restarts. May also code normal, and fully 2D Orlanski condition. 
     22   * "Mercator-style" barotropic boundary conditions. 
     23   * Tidal harmonic forcing (included in Flather boundary condition). 
     24 
     25 * There will be two ways of specifying the boundary geometry: 
     26   a. Using obc_par.h90 to define straight-line segments. One will be able to 
     27      define more than one segment for each of east, west, south, north  
     28      boundaries. 
     29   b. Reading in the list of points from the data file as is now done in BDY. 
     30    
     31 * The low-level code will use the BDY-style specification of the boundary 
     32   geometry (an unstructured list of gridpoints). If obc_par.h90 is used then 
     33   this will be converted to BDY-style arrays in the initialisation.    
     34 
     35 * The read of external boundary data will be handled by fldread.F90 as is done 
     36   for the SBC fields. This is clean and flexible. In the future this will 
     37   permit online interpolation of boundary data. 
     38    
     39 * It will be possible to define more than one open boundary set. This will 
     40   allow different boundary conditions to be applied on different boundaries. 
     41    
     42    
     43== Control and coding structure == 
    1544The namelist for the new module would look like this: 
    1645 
    1746{{{ 
    1847!----------------------------------------------------------------------- 
    19 &namobc        !  unstructured open boundaries               ("key_obc") 
    20 !----------------------------------------------------------------------- 
    21    cn_mask     =  ''                      !  name of mask file (ln_mask=T) 
    22    cn_dta      = 'obcdata1', 'obcdta2'    !  root name of data file 
    23    nn_freq     = 6         , -1           !  frequency of data in file (hours) 
    24                                           !  negative value => months 
    25    cn_type     = 'daily'   , 'yearly'     !  'yearly','monthly','daily' files 
    26    ln_clim     = .false.   , .true.       !  climatological data or not 
    27    ln_tint     = .true.    , .true.       !  time interpolation of boundary 
    28                                           !  data or not 
    29     
    30    nn_dyn         = 0, 1,   !  Choice of schemes for velocities 
    31    nn_tra         = 0, 1,   !  Choice of schemes for T and S  
     48&namobc        !  one-way open boundaries                    ("key_obc") 
     49!----------------------------------------------------------------------- 
     50   nb_obc         = 2       !  Number of open boundary sets 
     51   cn_mask        = ''      !  name of mask file (ln_mask=T) 
     52   nn_dyn         = 1, 0,   !  Choice of schemes for velocities 
     53   nn_tra         = 1, 1,   !  Choice of schemes for T and S  
    3254   nn_barotropic  = 1, 0,   !  Choice of schemes for barotropic solution 
    3355   nn_ice_lim2    = 0, 0,   !  Choice of schemes for ice (LIM2) 
     
    3557   ln_mask        = .false.,.false.,  !  boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) 
    3658   ln_tides       = .false.,.false.,  !  Apply tidal harmonic forcing with Flather condition 
    37    nn_rimwidth    =  1, 9,            !  width of the relaxation zone 
     59   nn_rimwidth    =  9, 1,            !  width of the relaxation zone 
    3860   nn_dtactl      =  1, 1,            !  = 0, bdy data are equal to the initial state 
    3961                                      !  = 1, bdy data are read in 'bdydata   .nc' files 
     
    4163                                      !  = 1, the total volume of the system is conserved 
    4264 / 
     65!----------------------------------------------------------------------- 
     66&namobc_dta     !  one-way open boundaries                   ("key_obc") 
     67!----------------------------------------------------------------------- 
     68!               !  file name          ! frequency (hours) ! variable  ! time interp. !  clim  ! 'daily'/ ! weights  ! rotation ! 
     69!               !                     !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
     70   bn_tem      = 'obcdta_grid_T'      ,        24          , 'votemper',   .true.     , .false., 'daily'  , ''       , '' 
     71   bn_sal      = 'obcdta_grid_T'      ,        24          , 'vosaline',   .true.     , .false., 'daily'  , ''       , '' 
     72   bn_uvel     = 'obcdta_grid_U'      ,        24          , 'vozocrtx',   .true.     , .false., 'daily'  , ''       , '' 
     73   bn_vvel     = 'obcdta_grid_V'      ,        24          , 'vomecrty',   .true.     , .false., 'daily'  , ''       , '' 
     74   bn_ssh      = 'obcdta_bt_grid_T'   ,         6          , 'sossheig',   .true.     , .false., 'daily'  , ''       , '' 
     75   bn_ubar     = 'obcdta_bt_grid_U'   ,         6          , 'vozocrtx',   .true.     , .false., 'daily'  , ''       , '' 
     76   bn_vbar     = 'obcdta_bt_grid_V'   ,         6          , 'vomecrty',   .true.     , .false., 'daily'  , ''       , '' 
     77 
     78   cn_dir      = './obcdta'      !  root directory for the location of the boundary data files 
     79/       
     80!----------------------------------------------------------------------- 
     81&namobc_dta     !  one-way open boundaries                   ("key_obc") 
     82!----------------------------------------------------------------------- 
     83!               !  file name          ! frequency (hours) ! variable  ! time interp. !  clim  ! 'daily'/ ! weights  ! rotation ! 
     84!               !                     !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
     85   bn_tem      = 'obcdta_clim_grid_T' ,        -1          , 'votemper',   .true.     , .true., 'yearly'  , ''       , '' 
     86   bn_sal      = 'obcdta_clim_grid_T' ,        -1          , 'vosaline',   .true.     , .true., 'yearly'  , ''       , '' 
     87 
     88   cn_dir      = './obcdta'      !  root directory for the location of the boundary data files 
     89/       
    4390}}} 
    4491 
    45 You can define several boundary streams. The example here has two streams 
    46 defined. The number of streams is defined by the '''cn_dta''' parameter which is 
    47 the filename root. For '''cn_dta'''=''bdydta1'', it will look for files called 
    48 ''bdydta1_grid_T.nc'', ''bdydta1_grid_U.nc'' etc. For each stream you select 
    49 which boundary conditions you want to apply to which fields using '''nn_dyn''', 
    50 '''nn_tra''', '''nn_barotropic''' etc. Zero means do not apply open boundary 
    51 conditions. The other numbers refer to different schemes. For example, 
    52 '''nn_tra'''=0 means don't apply open boundary conditions to T and S, 
    53 '''nn_tra'''=1 might mean apply FRS conditions, '''nn_tra'''=2 might mean apply 
    54 radiation conditions etc.  
     92It is possible to define more than one open boundary set in case you want to use 
     93different boundary conditions for different boundaries. For instance one might 
     94want to apply different algorithms on the east and west boundaries of a domain, 
     95or one might want to apply boundary conditions from an external model over part 
     96of the open boundary but climatological boundary conditions over another part of 
     97the open boundary (as in the example above).  
     98 
     99For each open boundary set you define which conditions to apply to each set of 
     100variables using '''nn_dyn''', '''nn_tra''' etc. For example: 
     101 
     102        '''nn_tra''' = 0        :       Apply no boundary condition (land 
     103                                        boundary) 
     104        '''nn_tra''' = 1        :       Clamped/relaxation boundary condition 
     105        '''nn_tra''' = 2        :       Normal radiation condition 
     106        '''nn_tra''' = 3        :       NPO radiation condition 
     107        etc. 
     108         
     109There is a separate '''&namobc_dta''' namelist for each boundary set, which 
     110defines the input data files using the '''FLD''' structure from fldread.F90. 
     111(This will allow for online interpolation of boundary conditions in the future). 
    55112 
    56113For each set of variables there is a module which applies the boundary