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 6 and Version 7 of 2011WP/2011Stream2/OpenBoundaries


Ignore:
Timestamp:
2011-03-29T10:53:03+02:00 (13 years ago)
Author:
davestorkey
Comment:

--

Legend:

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

    v6 v7  
    4949!----------------------------------------------------------------------- 
    5050   nb_obc         = 2       !  Number of open boundary sets 
     51   ln_read        = .false.,.true. 
    5152   cn_mask        = ''      !  name of mask file (ln_mask=T) 
    5253   nn_dyn         = 1, 0,   !  Choice of schemes for velocities 
     
    232233   END SUBROUTINE 
    233234}}} 
     235 
     236== Boundary geometry and initialisation == 
     237The internal code of the new module will use 1D unstructured arrays to specify the boundary as is currently done in BDY. For the T-points along the boundary these are '''nbit''', '''nbjt''' and '''nbrt''', which specify the (i,j) coordinates of each point and the discrete distance from the boundary. Each boundary set can be initialised using straight-line segments in '''obc_par.F90''' (ln_read=.false.) or read in from a '''coordinates_bdy.nc''' file (ln_read=.true.). If the boundary coordinates are read in from '''obc_par.F90''' then the '''nbi''', '''nbj''', '''nbr''' arrays will be generated internally (and if necessary a '''coordinates_bdy.nc''' file could be written out).  
     238 
     239The '''obc_par.F90''' file will be the easiest way to define rectangular boundaries. More than one segment can be specified for each of the north, east, south and west boundaries as follows. Where there are more than one boundary set, the '''jpieob'''-type arrays are specified as 1D arrays and the '''nobcsege'''-type arrays are used to split the numbers between the different boundary sets.  
     240{{{ 
     241   MODULE obc_par 
     242 
     243   INTEGER, PARAMETER ::     & !: ! Number of open boundary segments 
     244      nobcsege = 2, 0  
     245   INTEGER, PARAMETER, DIMENSION(nobcsege) ::     &  !: 
     246      ! First column: Med Sea; Second: Baltic 
     247      jpieob = (/ 1037 , jpiglo-2 /), & !: i-localization of the East open boundary 
     248      jpjedt = (/ 473  ,   1476   /), & !: j-starting indice of the East open boundary 
     249      jpjeft = (/ 855  ,   1548   /)    !: j-ending   indice of the East open boundary 
     250   !! * WEST open boundary 
     251   INTEGER, PARAMETER ::     &  !: ! Number of open boundary segments 
     252      nobcsegw = 1, 0 
     253   INTEGER, PARAMETER, DIMENSION(nobcsegw) ::     & 
     254      jpiwob = (/  2 /), &       !: i-localization of the West open boundary 
     255      jpjwdt = (/  2 /), &       !: j-starting indice of the West open boundary 
     256      jpjwft = (/1875/)       !: j-ending   indice of the West open boundary 
     257   ... 
     258}}} 
     259For unstructured boundaries, the easiest method will be to generate them offline and read in the boundary definition from the coordinates_bdy.nc file, which looks like this:  
     260{{{ 
     261netcdf coordinates_bdy { 
     262dimensions: 
     263        xbT = 8485 ; 
     264        xbU = 8436 ; 
     265        xbV = 8455 ; 
     266        xbF = 8062 ; 
     267        yb = 1 ; 
     268variables: 
     269        int nbit(yb, xbT) ; 
     270        int nbiu(yb, xbU) ; 
     271        int nbiv(yb, xbV) ; 
     272        int nbif(yb, xbF) ; 
     273        int nbjt(yb, xbT) ; 
     274        int nbju(yb, xbU) ; 
     275        int nbjv(yb, xbV) ; 
     276        int nbjf(yb, xbF) ; 
     277        int nbrt(yb, xbT) ; 
     278        int nbru(yb, xbU) ; 
     279        int nbrv(yb, xbV) ; 
     280        int nbrf(yb, xbF) ; 
     281        float glamt(yb, xbT) ; 
     282                glamt:units = "degrees_east" ; 
     283        float glamu(yb, xbU) ; 
     284                glamu:units = "degrees_east" ; 
     285        float glamv(yb, xbV) ; 
     286                glamv:units = "degrees_east" ; 
     287        float glamf(yb, xbF) ; 
     288                glamf:units = "degrees_east" ; 
     289}}} 
     290 
     291 
     292 
    234293