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 4160 for branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H – NEMO

Ignore:
Timestamp:
2013-11-07T09:49:45+01:00 (10 years ago)
Author:
cbricaud
Message:

correction for dev_r3856_MERCATOR3_QSRMEAN24H

Location:
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r3858 r4160  
    6464   !! wndm is used onmpute surface gases exchanges in ice-free ocean or leads 
    6565   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wndm              !: wind speed module at T-point (=|U10m-Uoce|)  [m/s] 
    66    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsr               !: sea heat flux:     solar                     [W/m2] 
     66   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:),TARGET ::   qsr               !: sea heat flux:     solar                     [W/m2] 
    6767   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:),TARGET ::   qsr_mean          !: daily mean sea heat flux: solar              [W/m2] 
    6868   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qns    , qns_b    !: sea heat flux: non solar                     [W/m2] 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90

    r3443 r4160  
    8989 
    9090      !                                          ! surface irradiance 
    91       zpar0m (:,:)   = qsr   (:,:) * 0.43        ! ------------------ 
     91      zpar0m (:,:)   = qsr_top(:,:) * 0.43        ! ------------------ 
    9292      zpar100(:,:)   = zpar0m(:,:) * 0.01 
    9393      zparr  (:,:,1) = zpar0m(:,:) * 0.5 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r3475 r4160  
    7272      INTEGER  ::   irgb 
    7373      REAL(wp) ::   zchl, zxsi0r 
     74      REAL(wp) ::   zmin,zmax 
    7475      REAL(wp) ::   zc0 , zc1 , zc2, zc3, z1_dep 
    7576      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdepmoy, zetmp, zetmp1, zetmp2 
     
    111112      !                                        !* Photosynthetically Available Radiation (PAR) 
    112113      !                                        !  -------------------------------------- 
     114 
    113115      IF( ln_varpar ) THEN 
    114          ze1(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
    115          ze2(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
    116          ze3(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
     116         ze1(:,:,1) = par_varsw(:,:) * qsr_top(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
     117         ze2(:,:,1) = par_varsw(:,:) * qsr_top(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
     118         ze3(:,:,1) = par_varsw(:,:) * qsr_top(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
    117119      ELSE 
    118          ze1(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
    119          ze2(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
    120          ze3(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
     120         ze1(:,:,1) = xparsw         * qsr_top(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
     121         ze2(:,:,1) = xparsw         * qsr_top(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
     122         ze3(:,:,1) = xparsw         * qsr_top(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
    121123      ENDIF 
    122124 
     
    157159         zxsi0r = 1.e0 / rn_si0 
    158160         ! 
    159          ze0(:,:,1) = rn_abs * qsr(:,:) 
     161         ze0(:,:,1) = rn_abs * qsr_top(:,:) 
    160162         !                                                    ! surface value : separation in R-G-B + near surface 
    161163         IF( ln_varpar ) THEN 
    162             ze0(:,:,1) = ( 1. - 3. * par_varsw(:,:) ) * qsr(:,:) 
    163             ze1(:,:,1) = par_varsw(:,:)               * qsr(:,:)          
    164             ze2(:,:,1) = par_varsw(:,:)               * qsr(:,:) 
    165             ze3(:,:,1) = par_varsw(:,:)               * qsr(:,:) 
     164            ze0(:,:,1) = ( 1. - 3. * par_varsw(:,:) ) * qsr_top(:,:) 
     165            ze1(:,:,1) = par_varsw(:,:)               * qsr_top(:,:)          
     166            ze2(:,:,1) = par_varsw(:,:)               * qsr_top(:,:) 
     167            ze3(:,:,1) = par_varsw(:,:)               * qsr_top(:,:) 
    166168         ELSE 
    167             ze0(:,:,1) = ( 1. - 3. * xparsw )  * qsr(:,:) 
    168             ze1(:,:,1) = xparsw                * qsr(:,:)          
    169             ze2(:,:,1) = xparsw                * qsr(:,:) 
    170             ze3(:,:,1) = xparsw                * qsr(:,:) 
     169            ze0(:,:,1) = ( 1. - 3. * xparsw )  * qsr_top(:,:) 
     170            ze1(:,:,1) = xparsw                * qsr_top(:,:)          
     171            ze2(:,:,1) = xparsw                * qsr_top(:,:) 
     172            ze3(:,:,1) = xparsw                * qsr_top(:,:) 
    171173         ENDIF 
    172          etot3(:,:,1) =  qsr(:,:) * tmask(:,:,1) 
     174         etot3(:,:,1) =  qsr_top(:,:) * tmask(:,:,1) 
    173175         ! 
    174176         ! 
     
    202204         DO jj = 1, jpj 
    203205           DO ji = 1, jpi 
    204               IF( etot(ji,jj,jk) >= 0.0043 * qsr(ji,jj) )  THEN 
     206              IF( etot(ji,jj,jk) >= 0.0043 * qsr_top(ji,jj) )  THEN 
    205207                 neln(ji,jj) = jk+1                    ! Euphotic level : 1rst T-level strictly below Euphotic layer 
    206208                 !                                     ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90

    r3858 r4160  
    9696   USE sbc_oce , ONLY :   vtau       =>    vtau       !: j-surface stress component 
    9797   USE sbc_oce , ONLY :   wndm       =>    wndm       !: 10m wind speed  
    98    USE sbc_oce , ONLY :   qsr        =>    qsr        !: penetrative solar radiation (w m-2)   
    99    USE sbc_oce , ONLY :   qsr_mean                    !: penetrative solar radiation (w m-2)   
    10098   USE sbc_oce , ONLY :   emp        =>    emp        !: freshwater budget: volume flux               [Kg/m2/s] 
    10199   USE sbc_oce , ONLY :   emp_b      =>    emp_b      !: freshwater budget: volume flux               [Kg/m2/s] 
     
    150148# endif 
    151149 
     150   REAL(wp),DIMENSION(:,:),POINTER :: qsr_top 
     151 
     152CONTAINS 
     153 
     154   INTEGER FUNCTION oce_trc_alloc() 
     155      !!---------------------------------------------------------------------- 
     156      !!                  ***  trc_oce_alloc  *** 
     157      !!---------------------------------------------------------------------- 
     158      !!---------------------------------------------------------------------- 
     159      INTEGER ::   ierr(1)        ! Local variables 
     160      !!---------------------------------------------------------------------- 
     161      ierr(:) = 0 
     162      ALLOCATE( qsr_top(jpi,jpj), STAT=ierr(1) ) 
     163      oce_trc_alloc  = MAXVAL( ierr ) 
     164      ! 
     165      IF( oce_trc_alloc /= 0 )   CALL ctl_warn('oce_trc_alloc: failed to allocate qsr_top array') 
     166 
     167   END FUNCTION oce_trc_alloc 
     168 
    152169#else 
    153170   !!---------------------------------------------------------------------- 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r3858 r4160  
    3131   USE trcsub          ! variables to substep passive tracers 
    3232   USE lib_mpp         ! distribued memory computing library 
     33   USE sbc_oce, ONLY : qsr_mean 
     34   USE sbc_oce, ONLY : qsr 
    3335  
    3436   IMPLICIT NONE 
     
    8183         IF( ierr  > 0 )   CALL ctl_warn('trc_ini: allocation of arrays qsr_mean failed') 
    8284 
     85         qsr_top => qsr_mean 
     86 
     87      ELSE 
     88 
     89         qsr_top => qsr 
     90 
    8391      ENDIF 
    8492 
     
    210218      ierr =        trc_adv_alloc()          ! Start of TOP-related alloc routines... 
    211219      ierr = ierr + trc_alloc    () 
     220      ierr = ierr + oce_trc_alloc() 
    212221      ierr = ierr + trc_nxt_alloc() 
    213222      ierr = ierr + trc_zdf_alloc() 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r3858 r4160  
    6666      ENDIF 
    6767      !     
    68       IF( ln_dm2dc .AND. lk_pisces )THEN 
    69          qsr(:,:) = qsr_mean(:,:) 
    70       ENDIF 
    71       !     
    7268      IF( nn_dttrc /= 1 )   CALL trc_sub_stp( kt )  ! averaging physical variables for sub-stepping 
    7369      !     
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r3680 r4160  
    2727   USE divcur          ! hor. divergence and curl      (div & cur routines) 
    2828   USE sbcrnf, ONLY: h_rnf, nk_rnf   ! River runoff  
    29    USE sbc_oce         ! surface boundary condition: ocean 
    3029   USE bdy_oce 
    3130#if defined key_obc 
     
    125124          emp_tm   (:,:)         = emp_tm   (:,:)         + emp   (:,:)  
    126125          sfx_tm   (:,:)         = sfx_tm   (:,:)         + sfx   (:,:) 
    127           qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
     126          qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr_top(:,:) 
    128127          wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
    129128          ! 
     
    213212         emp_b_temp (:,:)        = emp_b (:,:) 
    214213         sfx_temp   (:,:)        = sfx   (:,:) 
    215          qsr_temp   (:,:)        = qsr   (:,:) 
     214         qsr_temp   (:,:)        = qsr_top   (:,:) 
    216215         wndm_temp  (:,:)        = wndm  (:,:) 
    217216#if defined key_traldf_c3d 
     
    317316         emp_tm   (:,:)          = emp_tm     (:,:)       + emp   (:,:)  
    318317         sfx_tm   (:,:)          = sfx_tm     (:,:)       + sfx   (:,:) 
    319          qsr_tm   (:,:)          = qsr_tm     (:,:)       + qsr  (:,:) 
     318         qsr_tm   (:,:)          = qsr_tm     (:,:)       + qsr_top (:,:) 
    320319         wndm_tm  (:,:)          = wndm_tm    (:,:)       + wndm  (:,:) 
    321320         ! 
     
    333332         IF( kt == nittrc000 ) THEN 
    334333            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrc  
    335             qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrc  
     334            qsr_top   (:,:)          = qsr_tm     (:,:) * r1_ndttrc  
    336335            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrc  
    337336            sfx   (:,:)          = sfx_tm     (:,:) * r1_ndttrc  
     
    349348         ELSE 
    350349            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrcp1  
    351             qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrcp1  
     350            qsr_top   (:,:)          = qsr_tm     (:,:) * r1_ndttrcp1  
    352351            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrcp1  
    353352            sfx   (:,:)          = sfx_tm     (:,:) * r1_ndttrcp1  
     
    502501         CALL lbc_lnk( emp_b (:,:)         , 'T', 1. )  
    503502         CALL lbc_lnk( sfx   (:,:)         , 'T', 1. )  
    504          CALL lbc_lnk( qsr   (:,:)         , 'T', 1. )  
     503         CALL lbc_lnk( qsr_top   (:,:)         , 'T', 1. )  
    505504         CALL lbc_lnk( wndm  (:,:)         , 'T', 1. )  
    506505# if defined key_trabbl 
     
    710709      sfx   (:,:)     =  sfx_temp   (:,:) 
    711710      emp_b (:,:)     =  emp_b_temp (:,:) 
    712       qsr   (:,:)     =  qsr_temp   (:,:) 
     711      qsr_top   (:,:)     =  qsr_temp   (:,:) 
    713712      wndm  (:,:)     =  wndm_temp  (:,:) 
    714713# if defined key_trabbl 
     
    828827      emp_tm     (:,:) = emp   (:,:) 
    829828      sfx_tm     (:,:) = sfx   (:,:) 
    830       qsr_tm     (:,:) = qsr   (:,:) 
     829      qsr_tm     (:,:) = qsr_top   (:,:) 
    831830      wndm_tm    (:,:) = wndm  (:,:) 
    832831# if defined key_trabbl 
Note: See TracChangeset for help on using the changeset viewer.