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 for branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90 – NEMO

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

First sketch of Orlanski implementation (untested).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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) 
Note: See TracChangeset for help on using the changeset viewer.