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 1975 for branches/DEV_r1837_MLF/NEMO/OPA_SRC/TRA/trasbc.F90 – NEMO

Ignore:
Timestamp:
2010-06-28T19:22:14+02:00 (14 years ago)
Author:
mlelod
Message:

ticket: #663 MLF: first part

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1837_MLF/NEMO/OPA_SRC/TRA/trasbc.F90

    r1870 r1975  
    104104      INTEGER, INTENT(in) ::   kt     ! ocean time-step index 
    105105      !! 
    106       INTEGER  ::   ji, jj                   ! dummy loop indices 
    107       REAL(wp) ::   zta, zsa, zsrau, zse3t   ! temporary scalars 
     106      INTEGER  ::   ji, jj            ! dummy loop indices 
     107      REAL(wp) ::   zsrau, zse3t      ! temporary scalars 
    108108      !!---------------------------------------------------------------------- 
    109109 
     
    129129         qsr(:,:) = 0.e0                     ! qsr set to zero 
    130130         IF( kt == nit000 ) THEN             ! idem on before field at nit000 
    131             qns_b(:,:) = qns_b(:,:) + qsr_b(:,:)   
    132131            qsr_b(:,:) = 0.e0                      
    133132         ENDIF 
    134133      ENDIF 
    135  
    136       ! Concentration dillution effect on (t,s) 
    137 !!      DO jj = 2, jpj 
    138 !!         DO ji = fs_2, fs_jpim1   ! vector opt. 
    139 !!#if ! defined key_zco 
    140 !!            zse3t = 1. / fse3t(ji,jj,1) 
    141 !!#endif 
    142 !!            IF( lk_vvl) THEN 
    143 !!               zta = ro0cpr * qns(ji,jj) * zse3t &                   ! temperature : heat flux 
    144 !!                &    - emp(ji,jj) * zsrau * tn(ji,jj,1)  * zse3t     ! & cooling/heating effet of EMP flux 
    145 !!               zsa = 0.e0                                            ! No salinity concent./dilut. effect 
    146 !!            ELSE 
    147 !!               zta = ro0cpr * qns(ji,jj) * zse3t     ! temperature : heat flux 
    148 !!               zsa = emps(ji,jj) * zsrau * sn(ji,jj,1)   * zse3t     ! salinity :  concent./dilut. effect 
    149 !!            ENDIF 
    150 !!            ta(ji,jj,1) = ta(ji,jj,1) + zta                          ! add the trend to the general tracer trend 
    151 !!            sa(ji,jj,1) = sa(ji,jj,1) + zsa 
    152 !!         END DO 
    153 !!      END DO 
    154134 
    155135      !                             ! ---------------------- ! 
    156136      IF( lk_vvl ) THEN             !  Variable Volume case  ! 
    157137         !                          ! ---------------------- ! 
    158          DO jj = 2, jpj 
    159             DO ji = fs_2, fs_jpim1   ! vector opt. 
    160                zse3t = 0.5 / fse3t(ji,jj,1) 
    161                !                           ! temperature: heat flux + cooling/heating effet of EMP flux 
    162                ta(ji,jj,1) = ta(ji,jj,1) + (  ro0cpr * ( qns(ji,jj) + qns_b(ji,jj) )                &  
    163                   &                         - zsrau  * ( emp(ji,jj) + emp_b(ji,jj) ) * tn(ji,jj,1)  ) * zse3t 
    164                !                           ! salinity: salt flux 
    165                sa(ji,jj,1) = sa(ji,jj,1) + ( emps(ji,jj) + emps_b(ji,jj) ) * zse3t 
    166  
    167 !!gm BUG : in key_vvl emps must be modified to only include the salt flux due to with sea-ice freezing/melting 
    168 !!gm       otherwise this flux will be missing  ==> modification required in limsbc,  limsbc_2 and CICE interface. 
    169  
    170             END DO 
    171          END DO 
     138!!gm BUG : in key_vvl emps must be modified to only include the salt flux due to sea-ice freezing/melting 
     139!!gm       otherwise this flux will be missing  ==> modification required in limsbc,  limsbc_2 and CICE interface.s 
     140         IF ( neuler == 0 .AND. kt == nit000 ) THEN 
     141            DO jj = 2, jpj 
     142               DO ji = fs_2, fs_jpim1   ! vector opt. 
     143                  ! temperature : heat flux + cooling/heating effet of EMP flux 
     144                  sbc_trd_hc_n(ji,jj) = ro0cpr * qns(ji,jj) - zsrau * emp(ji,jj) * tn(ji,jj,1) 
     145#if ! defined key_zco 
     146                  zse3t = 1. / fse3t(ji,jj,1) 
     147#endif 
     148                  ta(ji,jj,1) = ta(ji,jj,1) + zse3t * sbc_trd_hc_n(ji,jj) 
     149                END DO 
     150            END DO 
     151         ELSE 
     152            DO jj = 2, jpj 
     153               DO ji = fs_2, fs_jpim1   ! vector opt. 
     154                  ! temperature : heat flux + cooling/heating effet of EMP flux 
     155                  sbc_trd_hc_n(ji,jj) = ro0cpr * qns(ji,jj) - zsrau * emp(ji,jj) * tn(ji,jj,1) 
     156#if ! defined key_zco 
     157                  zse3t = 1. / fse3t(ji,jj,1) 
     158#endif 
     159                  ta(ji,jj,1) = ta(ji,jj,1) + 0.5 * ( sbc_trd_hc_b(ji,jj) + sbc_trd_hc_n(ji,jj) ) * zse3t 
     160               END DO 
     161            END DO 
     162         ENDIF 
    172163         !                          ! ---------------------- ! 
    173164      ELSE                          !  Constant Volume case  ! 
    174165         !                          ! ---------------------- ! 
    175          DO jj = 2, jpj 
    176             DO ji = fs_2, fs_jpim1   ! vector opt. 
    177                zse3t = 0.5 / fse3t(ji,jj,1) 
    178                !                           ! temperature: heat flux  
    179                ta(ji,jj,1) = ta(ji,jj,1) + ro0cpr * ( qns (ji,jj) + qns_b (ji,jj) )               * zse3t  
    180                !                           ! salinity: salt flux + concent./dilut. effect (both in emps) 
    181                sa(ji,jj,1) = sa(ji,jj,1) + zsrau  * ( emps(ji,jj) + emps_b(ji,jj) ) * sn(ji,jj,1) * zse3t 
    182             END DO 
    183          END DO 
     166         IF ( neuler == 0 .AND. kt == nit000 ) THEN 
     167            DO jj = 2, jpj 
     168               DO ji = fs_2, fs_jpim1   ! vector opt. 
     169                  ! temperature : heat flux 
     170                  sbc_trd_hc_n(ji,jj) = ro0cpr * qns(ji,jj) 
     171                  ! salinity    : salt flux + concent./dilut. effect (both in emps) 
     172                  sbc_trd_sc_n(ji,jj) = zsrau * emps(ji,jj) * sn(ji,jj,1) 
     173#if ! defined key_zco 
     174                  zse3t = 1. / fse3t(ji,jj,1) 
     175#endif 
     176                  ta(ji,jj,1) = ta(ji,jj,1) + sbc_trd_hc_n(ji,jj) * zse3t 
     177                  sa(ji,jj,1) = sa(ji,jj,1) + sbc_trd_sc_n(ji,jj) * zse3t 
     178               END DO 
     179            END DO 
     180         ELSE 
     181            DO jj = 2, jpj 
     182               DO ji = fs_2, fs_jpim1   ! vector opt. 
     183                  ! temperature : heat flux 
     184                  sbc_trd_hc_n(ji,jj) = ro0cpr * qns(ji,jj) 
     185                  ! salinity    : salt flux + concent./dilut. effect (both in emps) 
     186                  sbc_trd_sc_n(ji,jj) = zsrau * emps(ji,jj) * sn(ji,jj,1) 
     187#if ! defined key_zco 
     188                  zse3t = 1. / fse3t(ji,jj,1) 
     189#endif 
     190                  ! temperature : heat flux 
     191                  ta(ji,jj,1) = ta(ji,jj,1) + 0.5 * ( sbc_trd_hc_b(ji,jj) + sbc_trd_hc_n(ji,jj) ) * zse3t  
     192                  sa(ji,jj,1) = sa(ji,jj,1) + 0.5 * ( sbc_trd_sc_b(ji,jj) + sbc_trd_sc_n(ji,jj) ) * zse3t 
     193               END DO 
     194            END DO 
     195         ENDIF 
    184196         ! 
    185197      ENDIF 
    186198 
    187       IF( l_trdtra ) THEN        ! save the sbc trends for diagnostic 
     199      IF( l_trdtra ) THEN           ! save the sbc trends for diagnostic 
    188200         ztrdt(:,:,:) = ta(:,:,:) - ztrdt(:,:,:) 
    189201         ztrds(:,:,:) = sa(:,:,:) - ztrds(:,:,:) 
    190202         CALL trd_mod(ztrdt, ztrds, jptra_trd_nsr, 'TRA', kt) 
    191203      ENDIF 
    192       !                          ! control print 
     204      !                             ! control print 
    193205      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ta, clinfo1=' sbc  - Ta: ', mask1=tmask,   & 
    194206         &                       tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
Note: See TracChangeset for help on using the changeset viewer.