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.
Changeset 3900 – NEMO

Changeset 3900


Ignore:
Timestamp:
2013-05-03T11:51:52+02:00 (11 years ago)
Author:
davestorkey
Message:

First sketch of Orlanski implementation (untested).

Location:
branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r3651 r3900  
    2929      REAL   , POINTER, DIMENSION(:,:)   ::  nbw 
    3030      REAL   , POINTER, DIMENSION(:,:)   ::  nbd 
    31       REAL   , POINTER, DIMENSION(:)     ::  flagu 
    32       REAL   , POINTER, DIMENSION(:)     ::  flagv 
     31      REAL   , POINTER, DIMENSION(:,:)   ::  nbdout 
     32      REAL   , POINTER, DIMENSION(:,:)   ::  flagu 
     33      REAL   , POINTER, DIMENSION(:,:)   ::  flagv 
    3334   END TYPE OBC_INDEX 
    3435 
     
    6364   INTEGER                    ::   nn_volctl                !: = 0 the total volume will have the variability of the surface Flux E-P  
    6465   !                                                        !  = 1 the volume will be constant during all the integration. 
    65    INTEGER, DIMENSION(jp_bdy) ::   nn_dyn2d                 ! Choice of boundary condition for barotropic variables (U,V,SSH) 
    66    INTEGER, DIMENSION(jp_bdy) ::   nn_dyn2d_dta           !: = 0 use the initial state as bdy dta ;  
     66   CHARACTER(len=20), DIMENSION(jp_bdy) ::   cn_dyn2d       ! Choice of boundary condition for barotropic variables (U,V,SSH) 
     67   INTEGER, DIMENSION(jp_bdy)           ::   nn_dyn2d_dta   !: = 0 use the initial state as bdy dta ;  
    6768                                                            !: = 1 read it in a NetCDF file 
    6869                                                            !: = 2 read tidal harmonic forcing from a NetCDF file 
    6970                                                            !: = 3 read external data AND tidal harmonic forcing from NetCDF files 
    70    INTEGER, DIMENSION(jp_bdy) ::   nn_dyn3d                 ! Choice of boundary condition for baroclinic velocities  
    71    INTEGER, DIMENSION(jp_bdy) ::   nn_dyn3d_dta           !: = 0 use the initial state as bdy dta ;  
     71   CHARACTER(len=20), DIMENSION(jp_bdy) ::   cn_dyn3d       ! Choice of boundary condition for baroclinic velocities  
     72   INTEGER, DIMENSION(jp_bdy)           ::   nn_dyn3d_dta   !: = 0 use the initial state as bdy dta ;  
    7273                                                            !: = 1 read it in a NetCDF file 
    73    INTEGER, DIMENSION(jp_bdy) ::   nn_tra                   ! Choice of boundary condition for active tracers (T and S) 
    74    INTEGER, DIMENSION(jp_bdy) ::   nn_tra_dta             !: = 0 use the initial state as bdy dta ;  
     74   CHARACTER(len=20), DIMENSION(jp_bdy) ::   cn_tra         ! Choice of boundary condition for active tracers (T and S) 
     75   INTEGER, DIMENSION(jp_bdy)           ::   nn_tra_dta     !: = 0 use the initial state as bdy dta ;  
    7576                                                            !: = 1 read it in a NetCDF file 
    7677   LOGICAL, DIMENSION(jp_bdy) ::   ln_tra_dmp               !: =T Tracer damping 
    7778   LOGICAL, DIMENSION(jp_bdy) ::   ln_dyn3d_dmp             !: =T Baroclinic velocity damping 
    7879   REAL,    DIMENSION(jp_bdy) ::   rn_time_dmp              !: Damping time scale in days 
     80   REAL,    DIMENSION(jp_bdy) ::   rn_time_dmp_out          !: Damping time scale in days at radiation outflow points 
    7981 
    8082#if defined key_lim2 
    81    INTEGER, DIMENSION(jp_bdy) ::   nn_ice_lim2              ! Choice of boundary condition for sea ice variables  
    82    INTEGER, DIMENSION(jp_bdy) ::   nn_ice_lim2_dta          !: = 0 use the initial state as bdy dta ;  
    83                                                             !: = 1 read it in a NetCDF file 
     83   CHARACTER(len=20), DIMENSION(jp_bdy) ::   nn_ice_lim2      ! Choice of boundary condition for sea ice variables  
     84   INTEGER, DIMENSION(jp_bdy)           ::   nn_ice_lim2_dta  !: = 0 use the initial state as bdy dta ;  
     85                                                              !: = 1 read it in a NetCDF file 
    8486#endif 
    8587   ! 
     
    9496   REAL(wp)                                    ::   bdysurftot !: Lateral surface of unstructured open boundary 
    9597 
    96    REAL(wp), POINTER, DIMENSION(:,:)           ::   pssh       !:  
    97    REAL(wp), POINTER, DIMENSION(:,:)           ::   phur       !:  
    98    REAL(wp), POINTER, DIMENSION(:,:)           ::   phvr       !: Pointers for barotropic fields  
    99    REAL(wp), POINTER, DIMENSION(:,:)           ::   pu2d       !:  
    100    REAL(wp), POINTER, DIMENSION(:,:)           ::   pv2d       !:  
     98   REAL(wp), POINTER, DIMENSION(:,:)           ::   pssh           !:  
     99   REAL(wp), POINTER, DIMENSION(:,:)           ::   phur           !:  
     100   REAL(wp), POINTER, DIMENSION(:,:)           ::   phvr           !: Pointers for barotropic fields  
     101   REAL(wp), POINTER, DIMENSION(:,:)           ::   pub2d, pua2d   !:  
     102   REAL(wp), POINTER, DIMENSION(:,:)           ::   pvb2d, pva2d   !:  
    101103 
    102104   !!---------------------------------------------------------------------- 
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_par.F90

    r3294 r3900  
    2626   INTEGER, PUBLIC, PARAMETER ::   jpbgrd  = 3        !: Number of horizontal grid types used  (T, U, V) 
    2727 
    28    !! Flags for choice of schemes 
    29    INTEGER, PUBLIC, PARAMETER ::   jp_none         = 0        !: Flag for no open boundary condition 
    30    INTEGER, PUBLIC, PARAMETER ::   jp_frs          = 1        !: Flag for Flow Relaxation Scheme 
    31    INTEGER, PUBLIC, PARAMETER ::   jp_flather      = 2        !: Flag for Flather 
    3228#else 
    3329   !!---------------------------------------------------------------------- 
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r3851 r3900  
    108108            nblenrim => idx_bdy(ib_bdy)%nblenrim 
    109109 
    110             IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 0 ) THEN  
     110            IF( cn_dyn2d(ib_bdy) /= 'none' .and. nn_dyn2d_dta(ib_bdy) .eq. 0 ) THEN  
    111111               ilen1(:) = nblen(:) 
    112112               igrd = 1 
     
    130130            ENDIF 
    131131 
    132             IF( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN  
     132            IF( cn_dyn3d(ib_bdy) /= 'none' .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN  
    133133               ilen1(:) = nblen(:) 
    134134               igrd = 2  
     
    150150            ENDIF 
    151151 
    152             IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 0 ) THEN  
     152            IF( cn_tra(ib_bdy) /= 'none' .and. nn_tra_dta(ib_bdy) .eq. 0 ) THEN  
    153153               ilen1(:) = nblen(:) 
    154154               igrd = 1                       ! Everything is at T-points here 
     
    193193               ! Update barotropic boundary conditions only 
    194194               ! jit is optional argument for fld_read and bdytide_update 
    195                IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 
     195               IF( cn_dyn2d(ib_bdy) /= 'none' ) THEN 
    196196                  IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
    197197                     dta_bdy(ib_bdy)%ssh(:) = 0.0 
     
    199199                     dta_bdy(ib_bdy)%v2d(:) = 0.0 
    200200                  ENDIF 
    201                   IF (nn_tra(ib_bdy).ne.4) THEN 
     201                  IF (cn_tra(ib_bdy) /= 'runoff') THEN 
    202202                     IF( nn_dyn2d_dta(ib_bdy) .EQ. 1 .OR. nn_dyn2d_dta(ib_bdy) .EQ. 3 .OR.  & 
    203203                       & (ln_full_vel_array(ib_bdy) .AND. nn_dyn3d_dta(ib_bdy).eq.1) )THEN 
     
    205205                        ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 
    206206                        jend = nb_bdy_fld(ib_bdy) 
    207                         IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 
     207                        IF ( cn_tra(ib_bdy) /= 'none' .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 
    208208                        CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),  & 
    209                                      & kit=jit, kt_offset=time_offset ) 
    210                         IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 
     209                                     & jit=jit, time_offset=time_offset ) 
     210                        IF ( cn_tra(ib_bdy) /= 'none' .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 
    211211 
    212212                        ! If full velocities in boundary data then split into barotropic and baroclinic data 
     
    252252               ENDIF 
    253253            ELSE 
    254                IF (nn_tra(ib_bdy).eq.4) then      ! runoff condition 
     254               IF (cn_tra(ib_bdy) == 'runoff') then      ! runoff condition 
    255255                  jend = nb_bdy_fld(ib_bdy) 
    256256                  CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend),  & 
    257                                & map=nbmap_ptr(jstart:jend), kt_offset=time_offset ) 
     257                               & map=nbmap_ptr(jstart:jend), time_offset=time_offset ) 
    258258                  ! 
    259259                  igrd = 2                      ! zonal velocity 
     
    271271                  END DO 
    272272               ELSE 
    273                   IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
     273                  IF( cn_dyn2d(ib_bdy) /= 'none' .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
    274274                     dta_bdy(ib_bdy)%ssh(:) = 0.0 
    275275                     dta_bdy(ib_bdy)%u2d(:) = 0.0 
     
    279279                     jend = nb_bdy_fld(ib_bdy) 
    280280                     CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), & 
    281                                   & map=nbmap_ptr(jstart:jend), kt_offset=time_offset ) 
     281                                  & map=nbmap_ptr(jstart:jend), time_offset=time_offset ) 
    282282                  ENDIF 
    283283                  ! If full velocities in boundary data then split into barotropic and baroclinic data 
     
    314314                     END DO 
    315315                  ENDIF 
    316                   IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
     316                  IF( cn_dyn2d(ib_bdy) /= 'none' .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
    317317                     CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy),  & 
    318318                                        & td=tides(ib_bdy), time_offset=time_offset ) 
     
    326326      IF ( ln_apr_obc ) THEN 
    327327         DO ib_bdy = 1, nb_bdy 
    328             IF (nn_tra(ib_bdy).NE.4)THEN 
     328            IF (cn_tra(ib_bdy) /= 'runoff')THEN 
    329329               igrd = 1                      ! meridional velocity 
    330330               DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 
     
    403403      nb_bdy_fld(:) = 0 
    404404      DO ib_bdy = 1, nb_bdy          
    405          IF( nn_dyn2d(ib_bdy) .gt. 0 .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN 
     405         IF( cn_dyn2d(ib_bdy) /= 'none' .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN 
    406406            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 
    407407         ENDIF 
    408          IF( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ) THEN 
     408         IF( cn_dyn3d(ib_bdy) /= 'none' .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ) THEN 
    409409            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 
    410410         ENDIF 
    411          IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 1  ) THEN 
     411         IF( cn_tra(ib_bdy) /= 'none' .and. nn_tra_dta(ib_bdy) .eq. 1  ) THEN 
    412412            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 
    413413         ENDIF 
     
    474474            ! Only read in necessary fields for this set. 
    475475            ! Important that barotropic variables come first. 
    476             IF( nn_dyn2d(ib_bdy) .gt. 0 .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN  
    477  
    478                IF( nn_tra(ib_bdy) .ne. 4 ) THEN ! runoff condition : no ssh reading 
     476            IF( cn_dyn2d(ib_bdy) /= 'none' .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN  
     477 
     478               IF( cn_tra(ib_bdy) /= 'runoff' ) THEN ! runoff condition : no ssh reading 
    479479                  jfld = jfld + 1 
    480480                  blf_i(jfld) = bn_ssh 
     
    504504 
    505505            ! baroclinic velocities 
    506             IF( ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ) .or. & 
    507            &      ( ln_full_vel_array(ib_bdy) .and. nn_dyn2d(ib_bdy) .gt. 0 .and.  & 
     506            IF( ( cn_dyn3d(ib_bdy) /= 'none' .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ) .or. & 
     507           &      ( ln_full_vel_array(ib_bdy) .and. cn_dyn2d(ib_bdy) /= 'none' .and.  & 
    508508           &        ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) ) THEN 
    509509 
     
    525525 
    526526            ! temperature and salinity 
    527             IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 1 ) THEN 
     527            IF( cn_tra(ib_bdy) /= 'none' .and. nn_tra_dta(ib_bdy) .eq. 1 ) THEN 
    528528 
    529529               jfld = jfld + 1 
     
    611611         nblenrim => idx_bdy(ib_bdy)%nblenrim 
    612612 
    613          IF (nn_dyn2d(ib_bdy) .gt. 0) THEN 
     613         IF (cn_dyn2d(ib_bdy) /= 'none') THEN 
    614614            IF( nn_dyn2d_dta(ib_bdy) .eq. 0 .or. nn_dyn2d_dta(ib_bdy) .eq. 2 .or. ln_full_vel_array(ib_bdy) ) THEN 
    615615               ilen0(1:3) = nblen(1:3) 
     
    623623               ENDIF 
    624624            ELSE 
    625                IF( nn_dyn2d(ib_bdy) .ne. jp_frs ) THEN 
     625               IF( cn_dyn2d(ib_bdy) /= 'frs' ) THEN 
    626626                  jfld = jfld + 1 
    627627                  dta_bdy(ib_bdy)%ssh => bf(jfld)%fnow(:,1,1) 
     
    634634         ENDIF 
    635635 
    636          IF ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 
     636         IF ( cn_dyn3d(ib_bdy) /= 'none' .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 
    637637            ilen0(1:3) = nblen(1:3) 
    638638            ALLOCATE( dta_bdy(ib_bdy)%u3d(ilen0(2),jpk) ) 
    639639            ALLOCATE( dta_bdy(ib_bdy)%v3d(ilen0(3),jpk) ) 
    640640         ENDIF 
    641          IF ( ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ).or. & 
    642            &  ( ln_full_vel_array(ib_bdy) .and. nn_dyn2d(ib_bdy) .gt. 0 .and.   & 
     641         IF ( ( cn_dyn3d(ib_bdy) /= 'none' .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ).or. & 
     642           &  ( ln_full_vel_array(ib_bdy) .and. cn_dyn2d(ib_bdy) /= 'none' .and.   & 
    643643           &    ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) ) THEN 
    644644            jfld = jfld + 1 
     
    648648         ENDIF 
    649649 
    650          IF (nn_tra(ib_bdy) .gt. 0) THEN 
     650         IF (cn_tra(ib_bdy) /= 'none') THEN 
    651651            IF( nn_tra_dta(ib_bdy) .eq. 0 ) THEN 
    652652               ilen0(1:3) = nblen(1:3) 
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90

    r3294 r3900  
    7676      phur => hur 
    7777      phvr => hvr 
    78       CALL wrk_alloc(jpi,jpj,pu2d,pv2d)  
     78      CALL wrk_alloc(jpi,jpj,pua2d,pva2d)  
     79      IF ( nn_dyn2d == 3 .or. nn_dyn3d == 3 ) CALL wrk_alloc(jpi,jpj,pub2d,pvb2d)  
    7980 
    8081      !------------------------------------------------------- 
     
    8283      !------------------------------------------------------- 
    8384 
    84       pu2d(:,:) = 0.e0 
    85       pv2d(:,:) = 0.e0 
     85      ! "After" velocities:  
     86 
     87      pua2d(:,:) = 0.e0 
     88      pva2d(:,:) = 0.e0 
    8689      DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
    87           pu2d(:,:) = pu2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
    88           pv2d(:,:) = pv2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
     90          pua2d(:,:) = pua2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
     91          pva2d(:,:) = pva2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
    8992      END DO 
    90       pu2d(:,:) = pu2d(:,:) * phur(:,:) 
    91       pv2d(:,:) = pv2d(:,:) * phvr(:,:) 
     93      pua2d(:,:) = pua2d(:,:) * phur(:,:) 
     94      pva2d(:,:) = pva2d(:,:) * phvr(:,:) 
    9295      DO jk = 1 , jpkm1 
    93          ua(:,:,jk) = ua(:,:,jk) - pu2d(:,:) 
    94          va(:,:,jk) = va(:,:,jk) - pv2d(:,:) 
     96         ua(:,:,jk) = ua(:,:,jk) - pua2d(:,:) 
     97         va(:,:,jk) = va(:,:,jk) - pva2d(:,:) 
    9598      END DO 
     99 
     100      ! "Before" velocities (required for Orlanski condition):  
     101 
     102      IF ( nn_dyn2d == 3 .or. nn_dyn3d == 3 ) THEN 
     103         pub2d(:,:) = 0.e0 
     104         pvb2d(:,:) = 0.e0 
     105         DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
     106             pub2d(:,:) = pub2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ub(:,:,jk) 
     107             pvb2d(:,:) = pvb2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * vb(:,:,jk) 
     108         END DO 
     109         pub2d(:,:) = pub2d(:,:) * phur(:,:) 
     110         pvb2d(:,:) = pvb2d(:,:) * phvr(:,:) 
     111         DO jk = 1 , jpkm1 
     112            ub(:,:,jk) = ub(:,:,jk) - pub2d(:,:) 
     113            vb(:,:,jk) = vb(:,:,jk) - pvb2d(:,:) 
     114         END DO 
     115      END IF 
    96116 
    97117      !------------------------------------------------------- 
     
    109129 
    110130      DO jk = 1 , jpkm1 
    111          ua(:,:,jk) = ( ua(:,:,jk) + pu2d(:,:) ) * umask(:,:,jk) 
    112          va(:,:,jk) = ( va(:,:,jk) + pv2d(:,:) ) * vmask(:,:,jk) 
     131         ua(:,:,jk) = ( ua(:,:,jk) + pua2d(:,:) ) * umask(:,:,jk) 
     132         va(:,:,jk) = ( va(:,:,jk) + pva2d(:,:) ) * vmask(:,:,jk) 
    113133      END DO 
     134 
     135      IF ( nn_dyn2d == 3 .or. nn_dyn3d == 3 ) THEN 
     136         DO jk = 1 , jpkm1 
     137            ub(:,:,jk) = ( ub(:,:,jk) + pub2d(:,:) ) * umask(:,:,jk) 
     138            vb(:,:,jk) = ( vb(:,:,jk) + pvb2d(:,:) ) * vmask(:,:,jk) 
     139         END DO 
     140      END IF 
    114141 
    115142      CALL wrk_dealloc(jpi,jpj,pu2d,pv2d)  
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn2d.F90

    r3680 r3900  
    1818   USE dom_oce         ! ocean space and time domain 
    1919   USE bdy_oce         ! ocean open boundary conditions 
     20   USE bdylib          ! BDY library routines 
    2021   USE dynspg_oce      ! for barotropic variables 
    2122   USE phycst          ! physical constants 
     
    4849      DO ib_bdy=1, nb_bdy 
    4950 
    50          SELECT CASE( nn_dyn2d(ib_bdy) ) 
    51          CASE(jp_none) 
     51         SELECT CASE( cn_dyn2d(ib_bdy) ) 
     52         CASE('none') 
    5253            CYCLE 
    53          CASE(jp_frs) 
     54         CASE('frs') 
    5455            CALL bdy_dyn2d_frs( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy ) 
    55          CASE(jp_flather) 
     56         CASE('flather') 
    5657            CALL bdy_dyn2d_fla( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy ) 
     58         CASE('orlanski') 
     59            CALL bdy_dyn2d_orlanski( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy ) 
    5760         CASE DEFAULT 
    5861            CALL ctl_stop( 'bdy_dyn2d : unrecognised option for open boundaries for barotropic variables' ) 
     
    186189      ! 
    187190   END SUBROUTINE bdy_dyn2d_fla 
     191 
     192 
     193   SUBROUTINE bdy_dyn2d_orlanski( idx, dta, ib_bdy ) 
     194      !!---------------------------------------------------------------------- 
     195      !!                 ***  SUBROUTINE bdy_dyn2d_orlanski  *** 
     196      !!              
     197      !!              - Apply Orlanski radiation condition adaptively: 
     198      !!                  - radiation plus weak nudging at outflow points 
     199      !!                  - no radiation and strong nudging at inflow points 
     200      !!  
     201      !! 
     202      !! References:  Marchesiello, McWilliams and Shchepetkin, Ocean Modelling vol. 3 (2001)     
     203      !!---------------------------------------------------------------------- 
     204      TYPE(OBC_INDEX),              INTENT(in) ::   idx  ! OBC indices 
     205      TYPE(OBC_DATA),               INTENT(in) ::   dta  ! OBC external data 
     206      INTEGER,                      INTENT(in) ::   ib_bdy  ! BDY set index 
     207 
     208      INTEGER  ::   jb, igrd                               ! dummy loop indices 
     209      !!---------------------------------------------------------------------- 
     210 
     211      IF( nn_timing == 1 ) CALL timing_start('bdy_dyn2d_orlanski') 
     212      ! 
     213      igrd = 2      ! Orlanski bc on u-velocity;  
     214      !             
     215      CALL bdy_orlanski_2d( idx, igrd, pub2d, pua2d, dta%u2d ) 
     216 
     217      igrd = 3      ! Orlanski bc on v-velocity 
     218      !   
     219      CALL bdy_orlanski_2d( idx, igrd, pvb2d, pva2d, dta%v2d ) 
     220      ! 
     221      IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn2d_orlanski') 
     222      ! 
     223 
     224   END SUBROUTINE bdy_dyn2d_orlanski 
     225 
     226 
    188227#else 
    189228   !!---------------------------------------------------------------------- 
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn3d.F90

    r3703 r3900  
    5252      DO ib_bdy=1, nb_bdy 
    5353 
    54 !!$         IF ( using Orlanski radiation conditions ) THEN  
    55 !!$            CALL bdy_rad( kt,  bdyidx(ib_bdy) ) 
    56 !!$         ENDIF 
    57  
    58          SELECT CASE( nn_dyn3d(ib_bdy) ) 
    59          CASE(jp_none) 
     54         SELECT CASE( cn_dyn3d(ib_bdy) ) 
     55         CASE('none') 
    6056            CYCLE 
    61          CASE(jp_frs) 
     57         CASE('frs') 
    6258            CALL bdy_dyn3d_frs( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt, ib_bdy ) 
    63          CASE(2) 
     59         CASE('specified') 
    6460            CALL bdy_dyn3d_spe( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt, ib_bdy ) 
    65          CASE(3) 
     61         CASE('zero') 
    6662            CALL bdy_dyn3d_zro( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt, ib_bdy ) 
    6763         CASE DEFAULT 
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim2.F90

    r3680 r3900  
    5050      DO ib_bdy=1, nb_bdy 
    5151 
    52          SELECT CASE( nn_ice_lim2(ib_bdy) ) 
    53          CASE(jp_none) 
     52         SELECT CASE( cn_ice_lim2(ib_bdy) ) 
     53         CASE('none') 
    5454            CYCLE 
    55          CASE(jp_frs) 
     55         CASE('frs') 
    5656            CALL bdy_ice_frs( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy ) 
    5757         CASE DEFAULT 
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r3703 r3900  
    8080      INTEGER  ::   ib_bdy1, ib_bdy2, ib1, ib2             !   -       - 
    8181      INTEGER, POINTER  ::  nbi, nbj, nbr                  ! short cuts 
    82       REAL   , POINTER  ::  flagu, flagv                   !    -   - 
     82      REAL(wp), POINTER  ::  flagu, flagv                  !    -   - 
     83      REAL(wp), POINTER, DIMENSION(:,:)       ::   mask    ! pointer to 2D mask fields 
    8384      REAL(wp) ::   zefl, zwfl, znfl, zsfl                 ! local scalars 
    8485      INTEGER, DIMENSION (2)                  ::   kdimsz 
     
    9394      !! 
    9495      NAMELIST/nambdy/ nb_bdy, ln_coords_file, cn_coords_file,             & 
    95          &             ln_mask_file, cn_mask_file, nn_dyn2d, nn_dyn2d_dta, & 
    96          &             nn_dyn3d, nn_dyn3d_dta, nn_tra, nn_tra_dta,         &   
     96         &             ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta, & 
     97         &             cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta,         &   
    9798         &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp,              & 
    9899#if defined key_lim2 
    99          &             nn_ice_lim2, nn_ice_lim2_dta,                       & 
     100         &             cn_ice_lim2, nn_ice_lim2_dta,                       & 
    100101#endif 
    101102         &             ln_vol, nn_volctl, nn_rimwidth 
     
    128129      ln_mask_file      = .false. 
    129130      cn_mask_file(:)   = '' 
    130       nn_dyn2d(:)       = 0 
     131      cn_dyn2d(:)       = '' 
    131132      nn_dyn2d_dta(:)   = -1  ! uninitialised flag 
    132       nn_dyn3d(:)       = 0 
     133      cn_dyn3d(:)       = '' 
    133134      nn_dyn3d_dta(:)   = -1  ! uninitialised flag 
    134       nn_tra(:)         = 0 
     135      cn_tra(:)         = '' 
    135136      nn_tra_dta(:)     = -1  ! uninitialised flag 
    136137      ln_tra_dmp(:)     = .false. 
     
    138139      rn_time_dmp(:)    = 1. 
    139140#if defined key_lim2 
    140       nn_ice_lim2(:)    = 0 
     141      cn_ice_lim2(:)    = '' 
    141142      nn_ice_lim2_dta(:)= -1  ! uninitialised flag 
    142143#endif 
     
    172173 
    173174        IF(lwp) WRITE(numout,*) 'Boundary conditions for barotropic solution:  ' 
    174         SELECT CASE( nn_dyn2d(ib_bdy) )                   
    175           CASE(jp_none)         ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    176           CASE(jp_frs)          ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    177           CASE(jp_flather)      ;   IF(lwp) WRITE(numout,*) '      Flather radiation condition' 
    178           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_dyn2d' ) 
     175        SELECT CASE( cn_dyn2d(ib_bdy) )                   
     176          CASE('none')         ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
     177          CASE('frs')          ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
     178          CASE('flather')      ;   IF(lwp) WRITE(numout,*) '      Flather radiation condition' 
     179          CASE('orlanski')     ;   IF(lwp) WRITE(numout,*) '      NPO Orlanski radiation condition with adaptive nudging' 
     180          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_dyn2d' ) 
    179181        END SELECT 
    180         IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 
     182        IF( cn_dyn2d(ib_bdy) /= 'none' ) THEN 
    181183           SELECT CASE( nn_dyn2d_dta(ib_bdy) )                   !  
    182184              CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      initial state used for bdy data'         
     
    193195 
    194196        IF(lwp) WRITE(numout,*) 'Boundary conditions for baroclinic velocities:  ' 
    195         SELECT CASE( nn_dyn3d(ib_bdy) )                   
    196           CASE(jp_none)  ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    197           CASE(jp_frs)   ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    198           CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '      Specified value' 
    199           CASE( 3 )      ;   IF(lwp) WRITE(numout,*) '      Zero baroclinic velocities (runoff case)' 
    200           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_dyn3d' ) 
     197        SELECT CASE( cn_dyn3d(ib_bdy) )                   
     198          CASE('none')      ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
     199          CASE('frs')       ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
     200          CASE('specified') ;   IF(lwp) WRITE(numout,*) '      Specified value' 
     201          CASE('zero')      ;   IF(lwp) WRITE(numout,*) '      Zero baroclinic velocities (runoff case)' 
     202          CASE('orlanski')  ;   IF(lwp) WRITE(numout,*) '      NPO Orlanski radiation condition with adaptive nudging' 
     203          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_dyn3d' ) 
    201204        END SELECT 
    202         IF( nn_dyn3d(ib_bdy) .gt. 0 ) THEN 
     205        IF( cn_dyn3d(ib_bdy) /= 'none' ) THEN 
    203206           SELECT CASE( nn_dyn3d_dta(ib_bdy) )                   !  
    204207              CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      initial state used for bdy data'         
     
    209212 
    210213        IF ( ln_dyn3d_dmp(ib_bdy) ) THEN 
    211            IF ( nn_dyn3d(ib_bdy).EQ.0 ) THEN 
     214           IF ( cn_dyn3d(ib_bdy) == 'none' ) THEN 
    212215              IF(lwp) WRITE(numout,*) 'No open boundary condition for baroclinic velocities: ln_dyn3d_dmp is set to .false.' 
    213216              ln_dyn3d_dmp(ib_bdy)=.false. 
    214            ELSEIF ( nn_dyn3d(ib_bdy).EQ.1 ) THEN 
     217           ELSEIF ( cn_dyn3d(ib_bdy) == 'frs' ) THEN 
    215218              CALL ctl_stop( 'Use FRS OR relaxation' ) 
    216219           ELSE 
     
    225228 
    226229        IF(lwp) WRITE(numout,*) 'Boundary conditions for temperature and salinity:  ' 
    227         SELECT CASE( nn_tra(ib_bdy) )                   
    228           CASE(jp_none)  ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    229           CASE(jp_frs)   ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    230           CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '      Specified value' 
    231           CASE( 3 )      ;   IF(lwp) WRITE(numout,*) '      Neumann conditions' 
    232           CASE( 4 )      ;   IF(lwp) WRITE(numout,*) '      Runoff conditions : Neumann for T and specified to 0.1 for salinity' 
    233           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_tra' ) 
     230        SELECT CASE( cn_tra(ib_bdy) )                   
     231          CASE('none')      ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
     232          CASE('frs')       ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
     233          CASE('specified') ;   IF(lwp) WRITE(numout,*) '      Specified value' 
     234          CASE('neumann')   ;   IF(lwp) WRITE(numout,*) '      Neumann conditions' 
     235          CASE('runoff')    ;   IF(lwp) WRITE(numout,*) '      Runoff conditions : Neumann for T and specified to 0.1 for salinity' 
     236          CASE('orlanski')  ;   IF(lwp) WRITE(numout,*) '      NPO Orlanski radiation condition with adaptive nudging' 
     237          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_tra' ) 
    234238        END SELECT 
    235         IF( nn_tra(ib_bdy) .gt. 0 ) THEN 
     239        IF( cn_tra(ib_bdy) /= 'none' ) THEN 
    236240           SELECT CASE( nn_tra_dta(ib_bdy) )                   !  
    237241              CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      initial state used for bdy data'         
     
    242246 
    243247        IF ( ln_tra_dmp(ib_bdy) ) THEN 
    244            IF ( nn_tra(ib_bdy).EQ.0 ) THEN 
     248           IF ( cn_tra(ib_bdy) == 'none' ) THEN 
    245249              IF(lwp) WRITE(numout,*) 'No open boundary condition for tracers: ln_tra_dmp is set to .false.' 
    246250              ln_tra_dmp(ib_bdy)=.false. 
    247            ELSEIF ( nn_tra(ib_bdy).EQ.1 ) THEN 
     251           ELSEIF ( cn_tra(ib_bdy) == 'frs' ) THEN 
    248252              CALL ctl_stop( 'Use FRS OR relaxation' ) 
    249253           ELSE 
     
    259263#if defined key_lim2 
    260264        IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice:  ' 
    261         SELECT CASE( nn_ice_lim2(ib_bdy) )                   
    262           CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    263           CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    264           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_tra' ) 
     265        SELECT CASE( cn_ice_lim2(ib_bdy) )                   
     266          CASE('none')   ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
     267          CASE('frs')    ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
     268          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_ice_lim2' ) 
    265269        END SELECT 
    266         IF( nn_ice_lim2(ib_bdy) .gt. 0 ) THEN  
     270        IF( cn_ice_lim2(ib_bdy) /= 'none' ) THEN  
    267271           SELECT CASE( nn_ice_lim2_dta(ib_bdy) )                   !  
    268272              CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      initial state used for bdy data'         
     
    772776         ALLOCATE( idx_bdy(ib_bdy)%nbmap(ilen1,jpbgrd) ) 
    773777         ALLOCATE( idx_bdy(ib_bdy)%nbw(ilen1,jpbgrd) ) 
    774          ALLOCATE( idx_bdy(ib_bdy)%flagu(ilen1) ) 
    775          ALLOCATE( idx_bdy(ib_bdy)%flagv(ilen1) ) 
     778         ALLOCATE( idx_bdy(ib_bdy)%flagu(ilen1,jpbgrd) ) 
     779         ALLOCATE( idx_bdy(ib_bdy)%flagv(ilen1,jpbgrd) ) 
    776780 
    777781         ! Dispatch mapping indices and discrete distances on each processor 
     
    995999               idx_bdy(ib_bdy)%nbd(ib,igrd) = 1. / ( rn_time_dmp(ib_bdy) * rday ) &  
    9961000               & *(FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)))**2.   ! quadratic 
     1001               idx_bdy(ib_bdy)%nbdout(ib,igrd) = 1. / ( rn_time_dmp_out(ib_bdy) * rday ) &  
     1002               & *(FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)))**2.   ! quadratic 
    9971003            END DO 
    9981004         END DO  
     
    10531059       
    10541060      bdytmask(:,:) = tmask(:,:,1) 
     1061      bdyumask(:,:) = umask(:,:,1) 
     1062      bdyvmask(:,:) = vmask(:,:,1) 
    10551063 
    10561064      ! bdy masks and bmask are now set to zero on boundary points: 
     
    10891097      DO ib_bdy = 1, nb_bdy       ! Indices and directions of rim velocity components 
    10901098 
    1091          idx_bdy(ib_bdy)%flagu(:) = 0.e0 
    1092          idx_bdy(ib_bdy)%flagv(:) = 0.e0 
     1099         idx_bdy(ib_bdy)%flagu(:,:) = 0.e0 
     1100         idx_bdy(ib_bdy)%flagv(:,:) = 0.e0 
    10931101         icount = 0  
    10941102 
    1095          !flagu = -1 : u component is normal to the dynamical boundary but its direction is outward 
    1096          !flagu =  0 : u is tangential 
    1097          !flagu =  1 : u is normal to the boundary and is direction is inward 
     1103         ! Calculate relationship of U direction to the local orientation of the boundary 
     1104         ! flagu = -1 : u component is normal to the dynamical boundary but its direction is outward 
     1105         ! flagu =  0 : u is tangential 
     1106         ! flagu =  1 : u is normal to the boundary and is direction is inward 
    10981107   
    1099          igrd = 2      ! u-component  
    1100          DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd)   
    1101             nbi => idx_bdy(ib_bdy)%nbi(ib,igrd) 
    1102             nbj => idx_bdy(ib_bdy)%nbj(ib,igrd) 
    1103             zefl = bdytmask(nbi  ,nbj) 
    1104             zwfl = bdytmask(nbi+1,nbj) 
    1105             IF( zefl + zwfl == 2 ) THEN 
    1106                icount = icount + 1 
    1107             ELSE 
    1108                idx_bdy(ib_bdy)%flagu(ib)=-zefl+zwfl 
    1109             ENDIF 
     1108         DO igrd = 1,jpbgrd  
     1109            SELECT CASE( igrd ) 
     1110               CASE( 1 ) ; mask => umask  
     1111               CASE( 2 ) ; mask => bdytmask  
     1112               CASE( 3 ) ; mask => fmask 
     1113            END SELECT  
     1114            DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd)   
     1115               nbi => idx_bdy(ib_bdy)%nbi(ib,igrd) 
     1116               nbj => idx_bdy(ib_bdy)%nbj(ib,igrd) 
     1117               zefl = mask(nbi  ,nbj) 
     1118               zwfl = mask(nbi+1,nbj) 
     1119               IF( zefl + zwfl == 2 ) THEN 
     1120                  icount = icount + 1 
     1121               ELSE 
     1122                  idx_bdy(ib_bdy)%flagu(ib,igrd)=-zefl+zwfl 
     1123               ENDIF 
     1124            END DO 
    11101125         END DO 
    11111126 
    1112          !flagv = -1 : u component is normal to the dynamical boundary but its direction is outward 
    1113          !flagv =  0 : u is tangential 
    1114          !flagv =  1 : u is normal to the boundary and is direction is inward 
    1115  
    1116          igrd = 3      ! v-component 
    1117          DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd)   
    1118             nbi => idx_bdy(ib_bdy)%nbi(ib,igrd) 
    1119             nbj => idx_bdy(ib_bdy)%nbj(ib,igrd) 
    1120             znfl = bdytmask(nbi,nbj  ) 
    1121             zsfl = bdytmask(nbi,nbj+1) 
    1122             IF( znfl + zsfl == 2 ) THEN 
    1123                icount = icount + 1 
    1124             ELSE 
    1125                idx_bdy(ib_bdy)%flagv(ib) = -znfl + zsfl 
    1126             END IF 
     1127         ! Calculate relationship of V direction to the local orientation of the boundary 
     1128         ! flagv = -1 : u component is normal to the dynamical boundary but its direction is outward 
     1129         ! flagv =  0 : u is tangential 
     1130         ! flagv =  1 : u is normal to the boundary and is direction is inward 
     1131 
     1132         DO igrd = 1,jpbgrd  
     1133            SELECT CASE( igrd ) 
     1134               CASE( 1 ) ; mask => vmask  
     1135               CASE( 2 ) ; mask => bdytmask  
     1136               CASE( 3 ) ; mask => fmask 
     1137            END SELECT  
     1138            DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd)   
     1139               nbi => idx_bdy(ib_bdy)%nbi(ib,igrd) 
     1140               nbj => idx_bdy(ib_bdy)%nbj(ib,igrd) 
     1141               znfl = bdytmask(nbi,nbj  ) 
     1142               zsfl = bdytmask(nbi,nbj+1) 
     1143               IF( znfl + zsfl == 2 ) THEN 
     1144                  icount = icount + 1 
     1145               ELSE 
     1146                  idx_bdy(ib_bdy)%flagv(ib) = -znfl + zsfl 
     1147               END IF 
     1148            END DO 
    11271149         END DO 
    11281150 
     
    15711593      itest = 0 
    15721594 
    1573       IF (nn_dyn2d(ib1)/=nn_dyn2d(ib2)) itest = itest + 1 
    1574       IF (nn_dyn3d(ib1)/=nn_dyn3d(ib2)) itest = itest + 1 
    1575       IF (nn_tra(ib1)/=nn_tra(ib2)) itest = itest + 1 
     1595      IF (cn_dyn2d(ib1)/=cn_dyn2d(ib2)) itest = itest + 1 
     1596      IF (cn_dyn3d(ib1)/=cn_dyn3d(ib2)) itest = itest + 1 
     1597      IF (cn_tra(ib1)/=cn_tra(ib2)) itest = itest + 1 
    15761598      ! 
    15771599      IF (nn_dyn2d_dta(ib1)/=nn_dyn2d_dta(ib2)) itest = itest + 1 
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90

    r3777 r3900  
    5151      DO ib_bdy=1, nb_bdy 
    5252 
    53          SELECT CASE( nn_tra(ib_bdy) ) 
    54          CASE(jp_none) 
     53         SELECT CASE( cn_tra(ib_bdy) ) 
     54         CASE('none') 
    5555            CYCLE 
    56          CASE(jp_frs) 
     56         CASE('frs') 
    5757            CALL bdy_tra_frs( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    58          CASE(2) 
     58         CASE('specified') 
    5959            CALL bdy_tra_spe( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    60          CASE(3) 
     60         CASE('neumann') 
    6161            CALL bdy_tra_nmn( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    62          CASE(4) 
     62         CASE('runoff') 
    6363            CALL bdy_tra_rnf( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    6464         CASE DEFAULT 
Note: See TracChangeset for help on using the changeset viewer.