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 7351 for branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90 – NEMO

Ignore:
Timestamp:
2016-11-28T17:04:10+01:00 (7 years ago)
Author:
emanuelaclementi
Message:

ticket #1805 step 3: /2016/dev_INGV_UKMO_2016 aligned to the trunk at revision 7161

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90

    r5930 r7351  
    3636   PUBLIC   bdy_dyn    ! routine called in dyn_nxt 
    3737 
    38 #  include "domzgr_substitute.h90" 
    3938   !!---------------------------------------------------------------------- 
    4039   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     
    5150      !! 
    5251      !!---------------------------------------------------------------------- 
    53       !! 
    54       INTEGER, INTENT( in )           :: kt               ! Main time step counter 
    55       LOGICAL, INTENT( in ), OPTIONAL :: dyn3d_only       ! T => only update baroclinic velocities 
    56       !! 
    57       INTEGER               :: jk,ii,ij,ib_bdy,ib,igrd     ! Loop counter 
    58       LOGICAL               :: ll_dyn2d, ll_dyn3d, ll_orlanski 
    59       !! 
     52      INTEGER, INTENT(in)           ::   kt           ! Main time step counter 
     53      LOGICAL, INTENT(in), OPTIONAL ::   dyn3d_only   ! T => only update baroclinic velocities 
     54      ! 
     55      INTEGER ::   jk, ii, ij, ib_bdy, ib, igrd     ! Loop counter 
     56      LOGICAL ::   ll_dyn2d, ll_dyn3d, ll_orlanski 
    6057      REAL(wp), POINTER, DIMENSION(:,:) :: pua2d, pva2d     ! after barotropic velocities 
    61  
    62       IF( nn_timing == 1 ) CALL timing_start('bdy_dyn') 
    63  
     58      !!---------------------------------------------------------------------- 
     59      ! 
     60      IF( nn_timing == 1 )   CALL timing_start('bdy_dyn') 
     61      ! 
    6462      ll_dyn2d = .true. 
    6563      ll_dyn3d = .true. 
    66  
     64      ! 
    6765      IF( PRESENT(dyn3d_only) ) THEN 
    68          IF( dyn3d_only ) ll_dyn2d = .false. 
     66         IF( dyn3d_only )   ll_dyn2d = .false. 
    6967      ENDIF 
    70  
     68      ! 
    7169      ll_orlanski = .false. 
    7270      DO ib_bdy = 1, nb_bdy 
    73          IF ( cn_dyn2d(ib_bdy) == 'orlanski' .or. cn_dyn2d(ib_bdy) == 'orlanski_npo' & 
    74      &   .or. cn_dyn3d(ib_bdy) == 'orlanski' .or. cn_dyn3d(ib_bdy) == 'orlanski_npo') ll_orlanski = .true. 
    75       ENDDO 
     71         IF ( cn_dyn2d(ib_bdy) == 'orlanski' .OR. cn_dyn2d(ib_bdy) == 'orlanski_npo' & 
     72     &   .OR. cn_dyn3d(ib_bdy) == 'orlanski' .OR. cn_dyn3d(ib_bdy) == 'orlanski_npo')  ll_orlanski = .true. 
     73      END DO 
    7674 
    7775      !------------------------------------------------------- 
     
    7977      !------------------------------------------------------- 
    8078 
    81       CALL wrk_alloc(jpi,jpj,pua2d,pva2d)  
     79      CALL wrk_alloc( jpi,jpj,   pua2d, pva2d )  
    8280 
    8381      !------------------------------------------------------- 
     
    8583      !------------------------------------------------------- 
    8684 
    87       ! "After" velocities:  
     85      !                          ! "After" velocities:  
     86      pua2d(:,:) = 0._wp 
     87      pva2d(:,:) = 0._wp      
     88      DO jk = 1, jpkm1 
     89         pua2d(:,:) = pua2d(:,:) + e3u_a(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
     90         pva2d(:,:) = pva2d(:,:) + e3v_a(:,:,jk) * va(:,:,jk) * vmask(:,:,jk) 
     91      END DO 
     92      pua2d(:,:) = pua2d(:,:) * r1_hu_a(:,:) 
     93      pva2d(:,:) = pva2d(:,:) * r1_hv_a(:,:) 
    8894 
    89       pua2d(:,:) = 0.e0 
    90       pva2d(:,:) = 0.e0       
    91       DO jk = 1, jpkm1 
    92          pua2d(:,:) = pua2d(:,:) + fse3u_a(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
    93          pva2d(:,:) = pva2d(:,:) + fse3v_a(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
     95      DO jk = 1 , jpkm1 
     96         ua(:,:,jk) = ( ua(:,:,jk) - pua2d(:,:) ) * umask(:,:,jk) 
     97         va(:,:,jk) = ( va(:,:,jk) - pva2d(:,:) ) * vmask(:,:,jk) 
    9498      END DO 
    9599 
    96       pua2d(:,:) = pua2d(:,:) * hur_a(:,:) 
    97       pva2d(:,:) = pva2d(:,:) * hvr_a(:,:) 
    98100 
    99       DO jk = 1 , jpkm1 
    100          ua(:,:,jk) = (ua(:,:,jk) - pua2d(:,:)) * umask(:,:,jk) 
    101          va(:,:,jk) = (va(:,:,jk) - pva2d(:,:)) * vmask(:,:,jk) 
    102       END DO 
    103  
    104       ! "Before" velocities (required for Orlanski condition):  
    105  
    106       IF ( ll_orlanski ) THEN           
     101      IF( ll_orlanski ) THEN     ! "Before" velocities (Orlanski condition only)  
    107102         DO jk = 1 , jpkm1 
    108             ub(:,:,jk) = (ub(:,:,jk) - ub_b(:,:)) * umask(:,:,jk) 
    109             vb(:,:,jk) = (vb(:,:,jk) - vb_b(:,:)) * vmask(:,:,jk) 
     103            ub(:,:,jk) = ( ub(:,:,jk) - ub_b(:,:) ) * umask(:,:,jk) 
     104            vb(:,:,jk) = ( vb(:,:,jk) - vb_b(:,:) ) * vmask(:,:,jk) 
    110105         END DO 
    111       END IF 
     106      ENDIF 
    112107 
    113108      !------------------------------------------------------- 
     
    116111      !------------------------------------------------------- 
    117112 
    118       IF( ll_dyn2d ) CALL bdy_dyn2d( kt, pua2d, pva2d, ub_b, vb_b, hur_a(:,:), hvr_a(:,:), ssha ) 
     113      IF( ll_dyn2d )   CALL bdy_dyn2d( kt, pua2d, pva2d, ub_b, vb_b, r1_hu_a(:,:), r1_hv_a(:,:), ssha ) 
    119114 
    120       IF( ll_dyn3d ) CALL bdy_dyn3d( kt ) 
     115      IF( ll_dyn3d )   CALL bdy_dyn3d( kt ) 
    121116 
    122117      !------------------------------------------------------- 
    123118      ! Recombine velocities 
    124119      !------------------------------------------------------- 
    125  
     120      ! 
    126121      DO jk = 1 , jpkm1 
    127122         ua(:,:,jk) = ( ua(:,:,jk) + pua2d(:,:) ) * umask(:,:,jk) 
    128123         va(:,:,jk) = ( va(:,:,jk) + pva2d(:,:) ) * vmask(:,:,jk) 
    129124      END DO 
    130  
     125      ! 
    131126      IF ( ll_orlanski ) THEN 
    132127         DO jk = 1 , jpkm1 
     
    135130         END DO 
    136131      END IF 
    137  
    138       CALL wrk_dealloc(jpi,jpj,pua2d,pva2d)  
    139  
    140       IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn') 
    141  
     132      ! 
     133      CALL wrk_dealloc( jpi,jpj,  pua2d, pva2d )  
     134      ! 
     135      IF( nn_timing == 1 )   CALL timing_stop('bdy_dyn') 
     136      ! 
    142137   END SUBROUTINE bdy_dyn 
    143138 
Note: See TracChangeset for help on using the changeset viewer.