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/traqsr.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/traqsr.F90

    r1870 r1975  
    4747   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_chl   ! structure of input Chl (file informations, fields read) 
    4848    
    49    INTEGER                   ::   nksr    ! levels below which the light cannot penetrate (depth larger than 391 m) 
     49   INTEGER , PUBLIC          ::   nksr    ! levels below which the light cannot penetrate (depth larger than 391 m) 
    5050   REAL(wp), DIMENSION(3,61) ::   rkrgb   ! tabulated attenuation coefficients for RGB absorption 
    5151 
     
    9797      REAL(wp) ::   zchl, zcoef, zsi0r   ! temporary scalars 
    9898      REAL(wp) ::   zc0, zc1, zc2, zc3   !    -         - 
    99       REAL(wp) ::   zqsr                 !    -         - 
    10099      REAL(wp), DIMENSION(jpi,jpj)     ::   zekb, zekg, zekr            ! 2D workspace 
    101100      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze0, ze1 , ze2, ze3, zea    ! 3D workspace 
     
    123122               DO ji = fs_2, fs_jpim1   ! vector opt. 
    124123!!gm  how to stecify the mean of time step here : TOP versus OPA time stepping strategy not obvious 
    125                   ta(ji,jj,jk) = ta(ji,jj,jk) + ro0cpr * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) / fse3t(ji,jj,jk)  
     124                  qsr_trd_hc_n(ji,jj,jk) = ro0cpr * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) 
    126125               END DO 
    127126            END DO 
     
    155154               zsi0r = 1.e0 / rn_si0 
    156155               zcoef = ( 1. - rn_abs ) / 3.e0                           ! equi-partition in R-G-B 
    157 !!gm bug !!! zqsr only a constant not an array 
    158                zqsr  = 0.5 * ( qsr_b(:,:) + qsr(:,:) )                  ! mean over 2 time steps 
    159                ze0(:,:,1) = rn_abs  * zqsr 
    160                ze1(:,:,1) = zcoef   * zqsr 
    161                ze2(:,:,1) = zcoef   * zqsr 
    162                ze3(:,:,1) = zcoef   * zqsr 
    163                zea(:,:,1) =           zqsr 
     156 
     157               ze0(:,:,1) = rn_abs  * qsr(:,:) 
     158               ze1(:,:,1) = zcoef   * qsr(:,:) 
     159               ze2(:,:,1) = zcoef   * qsr(:,:) 
     160               ze3(:,:,1) = zcoef   * qsr(:,:) 
     161               zea(:,:,1) =           qsr(:,:) 
    164162               ! 
    165163               DO jk = 2, nksr+1                                     ! deeper values 
     
    183181               ! 
    184182               DO jk = 1, nksr                                       ! compute and add qsr trend to ta 
    185                   ta(:,:,jk) = ta(:,:,jk) + ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) / fse3t(:,:,jk) 
     183                  qsr_trd_hc_n(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) 
    186184               END DO 
    187185               zea(:,:,nksr+1:jpk) = 0.e0     ! below 400m set to zero 
     
    190188            ELSE                                                 !*  Constant Chlorophyll 
    191189               DO jk = 1, nksr 
    192                   ta(:,:,jk) = ta(:,:,jk) + etot3(:,:,jk) * 0.5 * ( qsr_b(:,:) + qsr(:,:) ) 
     190                  qsr_trd_hc_n(:,:,jk) = etot3(:,:,jk) * qsr(:,:) 
    193191               END DO 
    194192            ENDIF 
     
    201199               DO jj = 2, jpjm1 
    202200                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    203                      ta(ji,jj,jk) = ta(ji,jj,jk) + etot3(ji,jj,jk) * 0.5 * ( qsr_b(:,:) + qsr(:,:) ) 
     201                     qsr_trd_hc_n(ji,jj,jk) = etot3(ji,jj,jk) * qsr(ji,jj) 
    204202                  END DO 
    205203               END DO 
     
    208206         ENDIF 
    209207         ! 
     208      ENDIF 
     209 
     210      ! Add qsr trend to ta in all cases 
     211      IF( neuler == 0 .AND. kt == nit000 ) THEN 
     212         DO jk = 1, nksr 
     213            DO jj = 2, jpjm1 
     214               DO ji = fs_2, fs_jpim1   ! vector opt. 
     215                  ta(ji,jj,jk) = ta(ji,jj,jk) + qsr_trd_hc_n(ji,jj,jk) / fse3t(ji,jj,jk) 
     216               END DO 
     217            END DO 
     218         END DO 
     219      ELSE 
     220         DO jk = 1, nksr 
     221            DO jj = 2, jpjm1 
     222               DO ji = fs_2, fs_jpim1   ! vector opt. 
     223                  ta(ji,jj,jk) = ta(ji,jj,jk) + 0.5 * ( qsr_trd_hc_b(ji,jj,jk) + qsr_trd_hc_n(ji,jj,jk) ) / fse3t(ji,jj,jk) 
     224               END DO 
     225            END DO 
     226         END DO 
    210227      ENDIF 
    211228 
     
    382399               ! 
    383400               DO jk = 1, nksr 
    384                   etot3(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) / fse3t(:,:,jk) 
     401                  etot3(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) 
    385402               END DO 
    386403               etot3(:,:,nksr+1:jpk) = 0.e0                ! below 400m set to zero 
     
    404421                     zc0 = rn_abs * EXP( -fsdepw(ji,jj,jk  )*zsi0r ) + (1.-rn_abs) * EXP( -fsdepw(ji,jj,jk  )*zsi1r ) 
    405422                     zc1 = rn_abs * EXP( -fsdepw(ji,jj,jk+1)*zsi0r ) + (1.-rn_abs) * EXP( -fsdepw(ji,jj,jk+1)*zsi1r ) 
    406                      etot3(ji,jj,jk) = ro0cpr * (  zc0 * tmask(ji,jj,jk) - zc1 * tmask(ji,jj,jk+1)  ) / fse3t(ji,jj,jk) 
     423                     etot3(ji,jj,jk) = ro0cpr * (  zc0 * tmask(ji,jj,jk) - zc1 * tmask(ji,jj,jk+1)  ) 
    407424                  END DO 
    408425               END DO 
Note: See TracChangeset for help on using the changeset viewer.