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 10251 for branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA – NEMO

Ignore:
Timestamp:
2018-10-29T15:20:26+01:00 (6 years ago)
Author:
kingr
Message:

Rolled back to r10247 - i.e., undid merge of pkg br and 3.6_stable br

Location:
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90

    r10249 r10251  
    2222   !!             -   ! 2013-04  (F. Roquet, G. Madec)  add eos_rab, change bn2 computation and reorganize the module 
    2323   !!             -   ! 2014-09  (F. Roquet)  add TEOS-10, S-EOS, and modify EOS-80 
    24    !!             -   ! 2015-06  (P.A. Bouttier) eos_fzp functions changed to subroutines for AGRIF 
    2524   !!---------------------------------------------------------------------- 
    2625 
     
    992991 
    993992 
    994    SUBROUTINE  eos_fzp_2d( psal, ptf, pdep ) 
     993   FUNCTION eos_fzp_2d( psal, pdep ) RESULT( ptf ) 
    995994      !!---------------------------------------------------------------------- 
    996995      !!                 ***  ROUTINE eos_fzp  *** 
     
    10061005      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   )           ::   psal   ! salinity   [psu] 
    10071006      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ), OPTIONAL ::   pdep   ! depth      [m] 
    1008       REAL(wp), DIMENSION(jpi,jpj), INTENT(out  )           ::   ptf    ! freezing temperature [Celcius] 
     1007      REAL(wp), DIMENSION(jpi,jpj)                          ::   ptf   ! freezing temperature [Celcius] 
    10091008      ! 
    10101009      INTEGER  ::   ji, jj   ! dummy loop indices 
     
    10391038         nstop = nstop + 1 
    10401039         ! 
    1041       END SELECT       
    1042       ! 
    1043   END SUBROUTINE eos_fzp_2d 
    1044  
    1045   SUBROUTINE eos_fzp_0d( psal, ptf, pdep ) 
     1040      END SELECT 
     1041      ! 
     1042   END FUNCTION eos_fzp_2d 
     1043 
     1044  FUNCTION eos_fzp_0d( psal, pdep ) RESULT( ptf ) 
    10461045      !!---------------------------------------------------------------------- 
    10471046      !!                 ***  ROUTINE eos_fzp  *** 
     
    10551054      !! Reference  :   UNESCO tech. papers in the marine science no. 28. 1978 
    10561055      !!---------------------------------------------------------------------- 
    1057       REAL(wp), INTENT(in )           ::   psal         ! salinity   [psu] 
    1058       REAL(wp), INTENT(in ), OPTIONAL ::   pdep         ! depth      [m] 
    1059       REAL(wp), INTENT(out)           ::   ptf          ! freezing temperature [Celcius] 
     1056      REAL(wp), INTENT(in)           ::   psal   ! salinity   [psu] 
     1057      REAL(wp), INTENT(in), OPTIONAL ::   pdep   ! depth      [m] 
     1058      REAL(wp)                       ::   ptf   ! freezing temperature [Celcius] 
    10601059      ! 
    10611060      REAL(wp) :: zs   ! local scalars 
     
    10871086      END SELECT 
    10881087      ! 
    1089    END SUBROUTINE eos_fzp_0d 
     1088   END FUNCTION eos_fzp_0d 
    10901089 
    10911090 
     
    12411240      IF(lwm) WRITE( numond, nameos ) 
    12421241      ! 
    1243       rau0        = 1020._wp                 !: volumic mass of reference     [kg/m3] 
    1244 !     rau0        = 1026._wp                 !: volumic mass of reference     [kg/m3] 
     1242      rau0        = 1026._wp                 !: volumic mass of reference     [kg/m3] 
    12451243      rcp         = 3991.86795711963_wp      !: heat capacity     [J/K] 
    12461244      ! 
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90

    r10248 r10251  
    173173         END DO  
    174174      END DO  
    175       CALL eos_fzp( tsn(:,:,1,jp_sal), zfzp(:,:), zpres(:,:) ) 
     175      zfzp(:,:) = eos_fzp( tsn(:,:,1,jp_sal), zpres(:,:) ) 
    176176      DO jk = 1, jpk 
    177177         DO jj = 1, jpj 
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90

    r10248 r10251  
    212212      CHARACTER(len=3) ::   cdtype 
    213213      REAL, DIMENSION(:,:,:) ::   pun, pvn, pwn 
    214       WRITE(*,*) 'tra_adv_eiv: You should not have seen this print! error?', & 
    215           &  kt, cdtype, pun(1,1,1), pvn(1,1,1), pwn(1,1,1) 
     214      WRITE(*,*) 'tra_adv_eiv: You should not have seen this print! error?', kt, cdtype, pun(1,1,1), pvn(1,1,1), pwn(1,1,1) 
    216215   END SUBROUTINE tra_adv_eiv 
    217216#endif 
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r10249 r10251  
    100100         IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 
    101101      ENDIF 
    102 ! slwa unless you use l_trdtra too, the above switches off trend calculations for l_trdtrc 
    103          l_trd = .FALSE. 
    104          IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 
    105 !slwa 
    106102      ! 
    107103      IF( l_trd )  THEN 
     
    330326      CALL wrk_alloc( jpi, jpj, zwx_sav, zwy_sav ) 
    331327      CALL wrk_alloc( jpi, jpj, jpk, zwi, zwz , zhdiv, zwz_sav, zwzts ) 
    332       CALL wrk_alloc( jpi, jpj, jpk, kjpt+1, ztrs ) 
     328      CALL wrk_alloc( jpi, jpj, jpk, 3, ztrs ) 
    333329      ! 
    334330      IF( kt == kit000 )  THEN 
     
    568564      ! 
    569565                   CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwz, zhdiv, zwz_sav, zwzts ) 
    570                    CALL wrk_dealloc( jpi, jpj, jpk, kjpt+1, ztrs ) 
     566                   CALL wrk_dealloc( jpi, jpj, jpk, 3, ztrs ) 
    571567                   CALL wrk_dealloc( jpi, jpj, zwx_sav, zwy_sav ) 
    572568      IF( l_trd )  CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r10249 r10251  
    2828   USE sbc_oce         ! surface boundary condition: ocean 
    2929   USE sbcrnf          ! river runoffs 
    30    USE sbcisf          ! ice shelf melting/freezing 
    3130   USE zdf_oce         ! ocean vertical mixing 
    3231   USE domvvl          ! variable volume 
     
    4746   USE timing          ! Timing 
    4847#if defined key_agrif 
     48   USE agrif_opa_update 
    4949   USE agrif_opa_interp 
    5050#endif 
     
    5858 
    5959   REAL(wp) ::   rbcp   ! Brown & Campana parameters for semi-implicit hpg 
    60    INTEGER  ::   warn_1, warn_2   ! indicators for warning statement 
    6160 
    6261   !! * Substitutions 
     
    9493      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    9594      !! 
    96       INTEGER  ::   jk, jn, ji, jj     ! dummy loop indices 
    97       REAL(wp) ::   zfact, zfreeze     ! local scalars 
     95      INTEGER  ::   jk, jn    ! dummy loop indices 
     96      REAL(wp) ::   zfact     ! local scalars 
    9897      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
    9998      !!---------------------------------------------------------------------- 
     
    111110      ! Update after tracer on domain lateral boundaries 
    112111      !  
     112      CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1._wp )      ! local domain boundaries  (T-point, unchanged sign) 
     113      CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1._wp ) 
     114      ! 
     115#if defined key_bdy  
     116      IF( lk_bdy )   CALL bdy_tra( kt )  ! BDY open boundaries 
     117#endif 
    113118#if defined key_agrif 
    114119      CALL Agrif_tra                     ! AGRIF zoom boundaries 
    115 #endif 
    116       ! 
    117       CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1._wp )      ! local domain boundaries  (T-point, unchanged sign) 
    118       CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1._wp ) 
    119       ! 
    120 #if defined key_bdy  
    121       IF( lk_bdy )   CALL bdy_tra( kt )  ! BDY open boundaries 
    122120#endif 
    123121  
     
    126124      ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dtra(:) = 2._wp* rdttra(:)      ! at nit000 or nit000+1 (Leapfrog) 
    127125      ENDIF 
    128  
    129 #if ( ! defined key_lim3 && ! defined key_lim2 && ! key_cice ) 
    130       IF ( kt == nit000 ) warn_1=0 
    131       warn_2=0 
    132       DO jk = 1, jpkm1 
    133          DO jj = 1, jpj 
    134             DO ji = 1, jpi 
    135                IF ( tsa(ji,jj,jk,jp_tem) .lt. 0.0 ) THEN 
    136                   ! calculate freezing point 
    137                   zfreeze = ( -0.0575_wp + 1.710523E-3 * Sqrt(Abs(tsn(ji,jj,jk,jp_sal)))   &  
    138                             - 2.154996E-4 * tsn(ji,jj,jk,jp_sal) ) * tsn(ji,jj,jk,jp_sal) - 7.53E-4 * ( 10.0_wp + fsdept(ji,jj,jk) ) 
    139                   IF ( tsa(ji,jj,jk,jp_tem) .lt. zfreeze ) THEN 
    140                      tsa(ji,jj,jk,jp_tem)=zfreeze 
    141                      warn_2=1 
    142                   ENDIF 
    143                ENDIF 
    144             END DO 
    145          END DO 
    146       END DO 
    147       CALL mpp_max(warn_1) 
    148       CALL mpp_max(warn_2) 
    149       IF ( (warn_1 == 0) .and. (warn_2 /= 0) ) THEN 
    150          IF(lwp) THEN 
    151             CALL ctl_warn( ' Temperatures dropping below freezing point, ', & 
    152                       &    ' being forced to freezing point, no longer conservative' )  
    153          ENDIF 
    154          warn_1=1 
    155       ENDIF 
    156 #endif 
    157126 
    158127      ! trends computation initialisation 
     
    179148         ELSE                 ;   CALL tra_nxt_fix( kt, nit000,         'TRA', tsb, tsn, tsa, jpts )  ! fixed    volume level  
    180149         ENDIF 
    181       ENDIF      
    182       ! 
    183      ! trends computation 
     150      ENDIF  
     151      ! 
     152#if defined key_agrif 
     153      ! Update tracer at AGRIF zoom boundaries 
     154      IF( .NOT.Agrif_Root() )    CALL Agrif_Update_Tra( kt )      ! children only 
     155#endif       
     156      ! 
     157      ! trends computation 
    184158      IF( l_trdtra ) THEN      ! trend of the Asselin filter (tb filtered - tb)/dt      
    185159         DO jk = 1, jpkm1 
     
    305279 
    306280      !!      
    307       LOGICAL  ::   ll_tra_hpg, ll_traqsr, ll_rnf, ll_isf   ! local logical 
     281      LOGICAL  ::   ll_tra_hpg, ll_traqsr, ll_rnf   ! local logical 
    308282      INTEGER  ::   ji, jj, jk, jn              ! dummy loop indices 
    309283      REAL(wp) ::   zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d    ! local scalar 
     
    321295         ll_traqsr  = ln_traqsr        ! active  tracers case  and  solar penetration 
    322296         ll_rnf     = ln_rnf           ! active  tracers case  and  river runoffs 
    323          IF (nn_isf .GE. 1) THEN  
    324             ll_isf = .TRUE.            ! active  tracers case  and  ice shelf melting/freezing 
    325          ELSE 
    326             ll_isf = .FALSE. 
    327          END IF 
    328297      ELSE                           
    329298         ll_tra_hpg = .FALSE.          ! passive tracers case or NO semi-implicit hpg 
    330299         ll_traqsr  = .FALSE.          ! active  tracers case and NO solar penetration 
    331300         ll_rnf     = .FALSE.          ! passive tracers or NO river runoffs 
    332          ll_isf     = .FALSE.          ! passive tracers or NO ice shelf melting/freezing 
    333301      ENDIF 
    334302      ! 
     
    353321                  ztc_f  = ztc_n  + atfp * ztc_d 
    354322                  ! 
    355                   IF( jk == mikt(ji,jj) ) THEN           ! first level  
    356                      ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj)    - emp(ji,jj)   )  & 
    357                             &                   - (rnf_b(ji,jj)    - rnf(ji,jj)   )  & 
    358                             &                   + (fwfisf_b(ji,jj) - fwfisf(ji,jj))  ) 
     323                  IF( jk == 1 ) THEN           ! first level  
     324                     ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj) + rnf(ji,jj) - rnf_b(ji,jj) ) 
    359325                     ztc_f  = ztc_f  - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 
    360326                  ENDIF 
    361327 
    362                   ! solar penetration (temperature only) 
    363                   IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr )                            &  
     328                  IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr )   &     ! solar penetration (temperature only) 
    364329                     &     ztc_f  = ztc_f  - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) )  
    365330 
    366                   ! river runoff 
    367                   IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) )                                          & 
     331                  IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) )   &            ! river runoffs 
    368332                     &     ztc_f  = ztc_f  - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) &  
    369333                     &                              * fse3t_n(ji,jj,jk) / h_rnf(ji,jj) 
    370  
    371                   ! ice shelf 
    372                   IF( ll_isf ) THEN 
    373                      ! level fully include in the Losch_2008 ice shelf boundary layer 
    374                      IF ( jk >= misfkt(ji,jj) .AND. jk < misfkb(ji,jj) )                          & 
    375                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    376                                &                 * fse3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) 
    377                      ! level partially include in Losch_2008 ice shelf boundary layer  
    378                      IF ( jk == misfkb(ji,jj) )                                                   & 
    379                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    380                                &                 * fse3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) * ralpha(ji,jj) 
    381                   END IF 
    382334 
    383335                  ze3t_f = 1.e0 / ze3t_f 
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r10249 r10251  
    4646   LOGICAL , PUBLIC ::   ln_qsr_ice   !: light penetration for ice-model LIM3 (clem) 
    4747   INTEGER , PUBLIC ::   nn_chldta    !: use Chlorophyll data (=1) or not (=0) 
    48    INTEGER , PUBLIC ::   nn_kd490dta  !: use kd490dta data (=1) or not (=0) 
    4948   REAL(wp), PUBLIC ::   rn_abs       !: fraction absorbed in the very near surface (RGB & 2 bands) 
    5049   REAL(wp), PUBLIC ::   rn_si0       !: very near surface depth of extinction      (RGB & 2 bands) 
     
    5554   REAL(wp) ::   xsi1r                           !: inverse of rn_si1 
    5655   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_chl   ! structure of input Chl (file informations, fields read) 
    57    TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_kd490 ! structure of input kd490 (file informations, fields read) 
    5856   INTEGER, PUBLIC ::   nksr              ! levels below which the light cannot penetrate ( depth larger than 391 m) 
    5957   REAL(wp), DIMENSION(3,61) ::   rkrgb   !: tabulated attenuation coefficients for RGB absorption 
     
    308306            ! 
    309307         ENDIF 
    310 ! slwa 
    311          IF( nn_kd490dta == 1 ) THEN                      !  use KD490 data read in   ! 
    312             !                                             ! ------------------------- ! 
    313                nksr = jpk - 1 
    314                ! 
    315                CALL fld_read( kt, 1, sf_kd490 )     ! Read kd490 data and provide it at the current time step 
    316                ! 
    317                zcoef  = ( 1. - rn_abs ) 
    318                ze0(:,:,1) = rn_abs  * qsr(:,:) 
    319                ze1(:,:,1) = zcoef * qsr(:,:) 
    320                zea(:,:,1) =         qsr(:,:) 
    321                ! 
    322                DO jk = 2, nksr+1 
    323 !CDIR NOVERRCHK 
    324                   DO jj = 1, jpj 
    325 !CDIR NOVERRCHK    
    326                      DO ji = 1, jpi 
    327                         zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * xsi0r     ) 
    328                         zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * sf_kd490(1)%fnow(ji,jj,1) ) 
    329                         ze0(ji,jj,jk) = zc0 
    330                         ze1(ji,jj,jk) = zc1 
    331                         zea(ji,jj,jk) = ( zc0 + zc1 ) * tmask(ji,jj,jk) 
    332                      END DO 
    333                   END DO 
    334                END DO 
    335                ! clem: store attenuation coefficient of the first ocean level 
    336                IF ( ln_qsr_ice ) THEN 
    337                   DO jj = 1, jpj 
    338                      DO ji = 1, jpi 
    339                         zzc0 = rn_abs * EXP( - fse3t(ji,jj,1) * xsi0r     ) 
    340                         zzc1 = zcoef  * EXP( - fse3t(ji,jj,1) * sf_kd490(1)%fnow(ji,jj,1) ) 
    341                         fraqsr_1lev(ji,jj) = 1.0 - ( zzc0 + zzc1 ) * tmask(ji,jj,2)  
    342                      END DO 
    343                   END DO 
    344                ENDIF 
    345                ! 
    346                DO jk = 1, nksr                                        ! compute and add qsr trend to ta 
    347                   qsr_hc(:,:,jk) = r1_rau0_rcp * ( zea(:,:,jk) - zea(:,:,jk+1) ) 
    348                END DO 
    349                zea(:,:,nksr+1:jpk) = 0.e0     !  
    350                CALL iom_put( 'qsr3d', zea )   ! Shortwave Radiation 3D distribution 
    351                ! 
    352         ENDIF   ! use KD490 data 
    353 !slwa 
    354308         ! 
    355309         !                                        Add to the general trend 
     
    420374      CHARACTER(len=100) ::   cn_dir   ! Root directory for location of ssr files 
    421375      TYPE(FLD_N)        ::   sn_chl   ! informations about the chlorofyl field to be read 
    422       TYPE(FLD_N)        ::   sn_kd490 ! informations about the kd490 field to be read 
    423       !! 
    424       NAMELIST/namtra_qsr/  sn_chl, sn_kd490, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice,  & 
    425          &                  nn_chldta, rn_abs, rn_si0, rn_si1, nn_kd490dta 
     376      !! 
     377      NAMELIST/namtra_qsr/  sn_chl, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice,  & 
     378         &                  nn_chldta, rn_abs, rn_si0, rn_si1 
    426379      !!---------------------------------------------------------------------- 
    427380 
     
    456409         WRITE(numout,*) '      RGB & 2 bands: shortess depth of extinction  rn_si0 = ', rn_si0 
    457410         WRITE(numout,*) '      2 bands: longest depth of extinction         rn_si1 = ', rn_si1 
    458          WRITE(numout,*) '      read in KD490 data                       nn_kd490dta  = ', nn_kd490dta 
    459411      ENDIF 
    460412 
     
    470422         IF( ln_qsr_2bd  )   ioptio = ioptio + 1 
    471423         IF( ln_qsr_bio  )   ioptio = ioptio + 1 
    472          IF( nn_kd490dta == 1 )   ioptio = ioptio + 1 
    473424         ! 
    474425         IF( ioptio /= 1 ) & 
     
    480431         IF( ln_qsr_2bd                      )   nqsr =  3 
    481432         IF( ln_qsr_bio                      )   nqsr =  4 
    482          IF( nn_kd490dta == 1                )   nqsr =  5 
    483433         ! 
    484434         IF(lwp) THEN                   ! Print the choice 
     
    488438            IF( nqsr ==  3 )   WRITE(numout,*) '         2 bands light penetration' 
    489439            IF( nqsr ==  4 )   WRITE(numout,*) '         bio-model light penetration' 
    490             IF( nqsr ==  5 )   WRITE(numout,*) '         KD490 light penetration' 
    491440         ENDIF 
    492441         ! 
     
    498447         xsi0r = 1.e0 / rn_si0 
    499448         xsi1r = 1.e0 / rn_si1 
    500          IF( nn_kd490dta == 1 ) THEN           !* KD490 data : set sf_kd490 structure 
    501             IF(lwp) WRITE(numout,*) 
    502             IF(lwp) WRITE(numout,*) '        KD490 read in a file' 
    503             ALLOCATE( sf_kd490(1), STAT=ierror ) 
    504             IF( ierror > 0 ) THEN 
    505                CALL ctl_stop( 'tra_qsr_init: unable to allocate sf_kd490 structure' )   ;   RETURN 
    506             ENDIF 
    507             ALLOCATE( sf_kd490(1)%fnow(jpi,jpj,1)   ) 
    508             IF( sn_kd490%ln_tint )ALLOCATE( sf_kd490(1)%fdta(jpi,jpj,1,2) ) 
    509             !                                        ! fill sf_kd490 with sn_kd490 and control print 
    510             CALL fld_fill( sf_kd490, (/ sn_kd490 /), cn_dir, 'tra_qsr_init',   & 
    511                &                                         'Solar penetration function of read KD490', 'namtra_qsr' ) 
    512449         !                                ! ---------------------------------- ! 
    513          ELSEIF( ln_qsr_rgb ) THEN            !  Red-Green-Blue light penetration  ! 
     450         IF( ln_qsr_rgb ) THEN            !  Red-Green-Blue light penetration  ! 
    514451            !                             ! ---------------------------------- ! 
    515452            ! 
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r10249 r10251  
    2525   USE trd_oce         ! trends: ocean variables 
    2626   USE trdtra          ! trends manager: tracers  
    27    USE tradwl          ! solar radiation penetration (downwell method) 
    2827   ! 
    2928   USE in_out_manager  ! I/O manager 
     
    3433   USE timing          ! Timing 
    3534   USE eosbn2 
    36 #if defined key_asminc    
    37    USE asminc          ! Assimilation increment 
    38 #endif 
    3935 
    4036   IMPLICIT NONE 
     
    124120      REAL(wp) ::   zfact, z1_e3t, zdep 
    125121      REAL(wp) ::   zalpha, zhk 
     122      REAL(wp) ::  zt_frz, zpress 
    126123      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
    127124      !!---------------------------------------------------------------------- 
     
    142139 
    143140!!gm      IF( .NOT.ln_traqsr )   qsr(:,:) = 0.e0   ! no solar radiation penetration 
    144       IF( .NOT.ln_traqsr .and. .NOT.ln_tradwl ) THEN     ! no solar radiation penetration 
     141      IF( .NOT.ln_traqsr ) THEN     ! no solar radiation penetration 
    145142         qns(:,:) = qns(:,:) + qsr(:,:)      ! total heat flux in qns 
    146143         qsr(:,:) = 0.e0                     ! qsr set to zero 
     
    235232               DO jk = ikt, ikb - 1 
    236233               ! compute tfreez for the temperature correction (we add water at freezing temperature) 
     234!                  zpress = grav*rau0*fsdept(ji,jj,jk)*1.e-04 
     235                  zt_frz = -1.9 !eos_fzp( tsn(ji,jj,jk,jp_sal), zpress ) 
    237236               ! compute trend 
    238237                  tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem)                                          & 
    239                      &           + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem)) * r1_hisf_tbl(ji,jj) 
     238                     &           + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem)          & 
     239                     &               - rdivisf * (fwfisf(ji,jj) + fwfisf_b(ji,jj)) * zt_frz * r1_rau0) & 
     240                     &           * r1_hisf_tbl(ji,jj) 
    240241                  tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal)                                          & 
    241242                     &           + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) 
     
    244245               ! level partially include in ice shelf boundary layer  
    245246               ! compute tfreez for the temperature correction (we add water at freezing temperature) 
     247!               zpress = grav*rau0*fsdept(ji,jj,ikb)*1.e-04 
     248               zt_frz = -1.9 !eos_fzp( tsn(ji,jj,ikb,jp_sal), zpress ) 
    246249               ! compute trend 
    247250               tsa(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem)                                           & 
    248                   &              + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem)) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) 
     251                  &              + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem)          & 
     252                  &                  - rdivisf * (fwfisf(ji,jj) + fwfisf_b(ji,jj)) * zt_frz * r1_rau0) &  
     253                  &              * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) 
    249254               tsa(ji,jj,ikb,jp_sal) = tsa(ji,jj,ikb,jp_sal)                                           & 
    250255                  &              + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj)  
     
    282287         END DO   
    283288      ENDIF 
    284  
    285 #if defined key_asminc 
    286 ! WARNING: THIS MAY WELL NOT BE REQUIRED - WE DON'T WANT TO CHANGE T&S BUT THIS MAY COMPENSATE ANOTHER TERM... 
    287 ! Rate of change in e3t for each level is ssh_iau*e3t_0/ht_0 
    288 ! Contribution to tsa should be rate of change in level / per m of ocean? (hence the division by fse3t_n) 
    289       IF( ln_sshinc ) THEN         ! input of heat and salt due to assimilation 
    290          DO jj = 2, jpj  
    291             DO ji = fs_2, fs_jpim1 
    292                zdep = ssh_iau(ji,jj) / ( ht_0(ji,jj) + 1.0 - ssmask(ji, jj) ) 
    293                DO jk = 1, jpkm1 
    294                   tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem)   & 
    295                                         &            + tsn(ji,jj,jk,jp_tem) * zdep * ( e3t_0(ji,jj,jk) / fse3t_n(ji,jj,jk) ) 
    296                   tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal)   & 
    297                                         &            + tsn(ji,jj,jk,jp_sal) * zdep * ( e3t_0(ji,jj,jk) / fse3t_n(ji,jj,jk) ) 
    298                END DO 
    299             END DO   
    300          END DO   
    301       ENDIF 
    302 #endif 
    303289  
    304290      IF( l_trdtra )   THEN                      ! send trends for further diagnostics 
Note: See TracChangeset for help on using the changeset viewer.