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 4236 – NEMO

Changeset 4236


Ignore:
Timestamp:
2013-11-18T17:00:37+01:00 (10 years ago)
Author:
cbricaud
Message:

add missing lines and change usage of qsr in biochemistery model stategy

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

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r4024 r4236  
    288288         CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb)     , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) 
    289289         IF( ltrcdm2dc_ice ) & 
    290            & CALL tab_2d_1d_2( nbpb, qsr_ice_mean_1d (1:nbpb)     , qsr_ice_mean(:,:,1) , jpi, jpj, npb(1:nbpb)  
     290         & CALL tab_2d_1d_2( nbpb, qsr_ice_mean_1d (1:nbpb), qsr_ice_mean(:,:,1), jpi, jpj, npb(1:nbpb) ) 
    291291         CALL tab_2d_1d_2( nbpb, fr1_i0_1d  (1:nbpb)     , fr1_i0         , jpi, jpj, npb(1:nbpb) ) 
    292292         CALL tab_2d_1d_2( nbpb, fr2_i0_1d  (1:nbpb)     , fr2_i0         , jpi, jpj, npb(1:nbpb) ) 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90

    r4024 r4236  
    9999      !!---------------------------------------------------------------------- 
    100100      USE lib_mpp        ! MPP library 
    101       INTEGER :: ierr(4) 
     101      INTEGER :: ierr(5) 
    102102      !!---------------------------------------------------------------------- 
    103103      ! 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/ICB/icb_oce.F90

    r3614 r4236  
    168168      ! 
    169169      icb_alloc = 0 
    170       ALLOCATE( berg_grid                      ,                                               & 
     170      ALLOCATE( & !cbr berg_grid                      ,                                               & 
    171171         &      berg_grid%calving    (jpi,jpj) , berg_grid%calving_hflx (jpi,jpj)          ,   & 
    172172         &      berg_grid%stored_heat(jpi,jpj) , berg_grid%floating_melt(jpi,jpj)          ,   & 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90

    r3625 r4236  
    1919# if defined key_lim2 
    2020   USE par_ice_2        ! LIM-2 parameters 
     21   USE ice_2 
    2122# endif 
    2223# if defined key_cice  
     
    5556 
    5657#if defined key_lim3 || defined key_lim2  
    57    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qns_ice   !: non solar heat flux over ice                  [W/m2] 
    58    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qsr_ice   !: solar heat flux over ice                      [W/m2] 
    59    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qla_ice   !: latent flux over ice                          [W/m2] 
    60    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   dqla_ice  !: latent sensibility over ice                 [W/m2/K] 
    61    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   dqns_ice  !: non solar heat flux over ice (LW+SEN+LA)    [W/m2/K] 
    62    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tn_ice    !: ice surface temperature                          [K] 
    63    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   alb_ice   !: albedo of ice 
     58   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qns_ice       !: non solar heat flux over ice                  [W/m2] 
     59   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qsr_ice       !: solar heat flux over ice                      [W/m2] 
     60   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qsr_ice_mean  !: dauly mean solar heat flux over ice       [W/m2] 
     61   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qla_ice       !: latent flux over ice                          [W/m2] 
     62   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   dqla_ice      !: latent sensibility over ice                 [W/m2/K] 
     63   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   dqns_ice      !: non solar heat flux over ice (LW+SEN+LA)    [W/m2/K] 
     64   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tn_ice        !: ice surface temperature                          [K] 
     65   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   alb_ice       !: albedo of ice 
    6466 
    6567   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   utau_ice  !: atmos-ice u-stress. VP: I-pt ; EVP: U,V-pts   [N/m2] 
     
    109111      !!                     ***  FUNCTION sbc_ice_alloc  *** 
    110112      !!---------------------------------------------------------------------- 
     113      INTEGER :: ierr(2) 
     114      !!---------------------------------------------------------------------- 
     115      ierr(:) = 0 
     116 
    111117#if defined key_lim3 || defined key_lim2 
    112118      ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) ,     & 
     
    117123         &      fr1_i0  (jpi,jpj)     , fr2_i0  (jpi,jpj)     ,     & 
    118124#if defined key_lim3 
    119          &      emp_ice(jpi,jpj)      , tatm_ice(jpi,jpj)     , STAT= sbc_ice_alloc ) 
     125         &      emp_ice(jpi,jpj)      , tatm_ice(jpi,jpj)     , STAT= ierr(1) ) 
    120126#else 
    121          &      emp_ice(jpi,jpj)                              , STAT= sbc_ice_alloc ) 
     127         &      emp_ice(jpi,jpj)                              , STAT= ierr(1) ) 
    122128#endif 
    123129#elif defined key_cice 
     
    126132                wndj_ice(jpi,jpj)     , nfrzmlt(jpi,jpj)      , ss_iou(jpi,jpj)       , & 
    127133                ss_iov(jpi,jpj)       , fr_iu(jpi,jpj)        , fr_iv(jpi,jpj)        , & 
    128                 a_i(jpi,jpj,ncat)     , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat), STAT= sbc_ice_alloc ) 
     134                a_i(jpi,jpj,ncat)     , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat), STAT= ierr(1) ) 
    129135#endif 
    130136         ! 
     137#if defined key_lim2 
     138      IF( ltrcdm2dc_ice )THEN 
     139         ALLOCATE( qsr_ice_mean (jpi,jpj,jpl), STAT=ierr(2) ) 
     140      ENDIF 
     141#endif 
     142         ! 
     143      sbc_ice_alloc = MAXVAL( ierr ) 
    131144      IF( lk_mpp            )   CALL mpp_sum ( sbc_ice_alloc ) 
    132145      IF( sbc_ice_alloc > 0 )   CALL ctl_warn('sbc_ice_alloc: allocation of arrays failed') 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r4160 r4236  
    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(:,:),TARGET ::   qsr               !: sea heat flux:     solar                     [W/m2] 
    67    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:),TARGET ::   qsr_mean          !: daily mean sea heat flux: solar              [W/m2] 
     66   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsr               !: sea heat flux:     solar                     [W/m2] 
     67   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   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] 
    6969   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsr_tot           !: total     solar heat flux (over sea and ice) [W/m2] 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90

    r4160 r4236  
    8989 
    9090      !                                          ! surface irradiance 
    91       zpar0m (:,:)   = qsr_top(:,:) * 0.43        ! ------------------ 
     91      zpar0m (:,:)   = qsr(:,:) * 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

    r4160 r4236  
    114114 
    115115      IF( ln_varpar ) THEN 
    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) ) 
     116         ze1(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
     117         ze2(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
     118         ze3(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
    119119      ELSE 
    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) ) 
     120         ze1(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
     121         ze2(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
     122         ze3(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
    123123      ENDIF 
    124124 
     
    159159         zxsi0r = 1.e0 / rn_si0 
    160160         ! 
    161          ze0(:,:,1) = rn_abs * qsr_top(:,:) 
     161         ze0(:,:,1) = rn_abs * qsr(:,:) 
    162162         !                                                    ! surface value : separation in R-G-B + near surface 
    163163         IF( ln_varpar ) THEN 
    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(:,:) 
     164            ze0(:,:,1) = ( 1. - 3. * par_varsw(:,:) ) * qsr(:,:) 
     165            ze1(:,:,1) = par_varsw(:,:)               * qsr(:,:)          
     166            ze2(:,:,1) = par_varsw(:,:)               * qsr(:,:) 
     167            ze3(:,:,1) = par_varsw(:,:)               * qsr(:,:) 
    168168         ELSE 
    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(:,:) 
     169            ze0(:,:,1) = ( 1. - 3. * xparsw )  * qsr(:,:) 
     170            ze1(:,:,1) = xparsw                * qsr(:,:)          
     171            ze2(:,:,1) = xparsw                * qsr(:,:) 
     172            ze3(:,:,1) = xparsw                * qsr(:,:) 
    173173         ENDIF 
    174          etot3(:,:,1) =  qsr_top(:,:) * tmask(:,:,1) 
     174         etot3(:,:,1) =  qsr(:,:) * tmask(:,:,1) 
    175175         ! 
    176176         ! 
     
    204204         DO jj = 1, jpj 
    205205           DO ji = 1, jpi 
    206               IF( etot(ji,jj,jk) >= 0.0043 * qsr_top(ji,jj) )  THEN 
     206              IF( etot(ji,jj,jk) >= 0.0043 * qsr(ji,jj) )  THEN 
    207207                 neln(ji,jj) = jk+1                    ! Euphotic level : 1rst T-level strictly below Euphotic layer 
    208208                 !                                     ! 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

    r4160 r4236  
    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) 
    9899   USE sbc_oce , ONLY :   emp        =>    emp        !: freshwater budget: volume flux               [Kg/m2/s] 
    99100   USE sbc_oce , ONLY :   emp_b      =>    emp_b      !: freshwater budget: volume flux               [Kg/m2/s] 
     
    148149# endif 
    149150 
    150    REAL(wp),DIMENSION(:,:),POINTER :: qsr_top 
    151  
    152 CONTAINS 
    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 
     151   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsr_tmp  !: save qsr with diurnal cycle during TOP/PISCES  
     152                                                                     !: timestep                [W/m2] 
    168153 
    169154#else 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r4160 r4236  
    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 
     33   USE sbc_oce 
    3534  
    3635   IMPLICIT NONE 
     
    7877         ltrcdm2dc     = .TRUE. 
    7978         ltrcdm2dc_ice = .TRUE. 
    80          ALLOCATE( qsr_mean(jpi,jpj) , STAT = ierr ) 
     79         ALLOCATE( qsr_mean(jpi,jpj) , qsr_tmp(jpi,jpj) , STAT = ierr ) 
    8180 
    8281         IF( lk_mpp    )   CALL mpp_sum ( ierr ) 
    8382         IF( ierr  > 0 )   CALL ctl_warn('trc_ini: allocation of arrays qsr_mean failed') 
    84  
    85          qsr_top => qsr_mean 
    86  
    87       ELSE 
    88  
    89          qsr_top => qsr 
    9083 
    9184      ENDIF 
     
    218211      ierr =        trc_adv_alloc()          ! Start of TOP-related alloc routines... 
    219212      ierr = ierr + trc_alloc    () 
    220       ierr = ierr + oce_trc_alloc() 
    221213      ierr = ierr + trc_nxt_alloc() 
    222214      ierr = ierr + trc_zdf_alloc() 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r4160 r4236  
    1111   !!---------------------------------------------------------------------- 
    1212   USE oce_trc          ! ocean dynamics and active tracers variables 
     13   USE sbc_oce 
    1314   USE trc 
    1415   USE trctrp           ! passive tracers transport 
     
    6667      ENDIF 
    6768      !     
     69      !cbr 
     70      IF( ln_dm2dc .AND. lk_pisces )THEN 
     71         qsr_tmp = qsr 
     72         qsr     = qsr_mean     
     73      ENDIF 
     74      !     
    6875      IF( nn_dttrc /= 1 )   CALL trc_sub_stp( kt )  ! averaging physical variables for sub-stepping 
    6976      !     
     
    9299      ENDIF 
    93100      ! 
     101      !cbr 
     102      IF( ln_dm2dc .AND. lk_pisces )THEN 
     103         qsr = qsr_tmp 
     104      ENDIF 
     105      ! 
    94106      ztrai = 0._wp                                                   !  content of all tracers 
    95107      DO jn = 1, jptra 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r4160 r4236  
    124124          emp_tm   (:,:)         = emp_tm   (:,:)         + emp   (:,:)  
    125125          sfx_tm   (:,:)         = sfx_tm   (:,:)         + sfx   (:,:) 
    126           qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr_top(:,:) 
     126          qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
    127127          wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
    128128          ! 
     
    212212         emp_b_temp (:,:)        = emp_b (:,:) 
    213213         sfx_temp   (:,:)        = sfx   (:,:) 
    214          qsr_temp   (:,:)        = qsr_top   (:,:) 
     214         qsr_temp   (:,:)        = qsr   (:,:) 
    215215         wndm_temp  (:,:)        = wndm  (:,:) 
    216216#if defined key_traldf_c3d 
     
    316316         emp_tm   (:,:)          = emp_tm     (:,:)       + emp   (:,:)  
    317317         sfx_tm   (:,:)          = sfx_tm     (:,:)       + sfx   (:,:) 
    318          qsr_tm   (:,:)          = qsr_tm     (:,:)       + qsr_top (:,:) 
     318         qsr_tm   (:,:)          = qsr_tm     (:,:)       + qsr  (:,:) 
    319319         wndm_tm  (:,:)          = wndm_tm    (:,:)       + wndm  (:,:) 
    320320         ! 
     
    332332         IF( kt == nittrc000 ) THEN 
    333333            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrc  
    334             qsr_top   (:,:)          = qsr_tm     (:,:) * r1_ndttrc  
     334            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrc  
    335335            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrc  
    336336            sfx   (:,:)          = sfx_tm     (:,:) * r1_ndttrc  
     
    348348         ELSE 
    349349            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrcp1  
    350             qsr_top   (:,:)          = qsr_tm     (:,:) * r1_ndttrcp1  
     350            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrcp1  
    351351            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrcp1  
    352352            sfx   (:,:)          = sfx_tm     (:,:) * r1_ndttrcp1  
     
    501501         CALL lbc_lnk( emp_b (:,:)         , 'T', 1. )  
    502502         CALL lbc_lnk( sfx   (:,:)         , 'T', 1. )  
    503          CALL lbc_lnk( qsr_top   (:,:)         , 'T', 1. )  
     503         CALL lbc_lnk( qsr   (:,:)         , 'T', 1. )  
    504504         CALL lbc_lnk( wndm  (:,:)         , 'T', 1. )  
    505505# if defined key_trabbl 
     
    709709      sfx   (:,:)     =  sfx_temp   (:,:) 
    710710      emp_b (:,:)     =  emp_b_temp (:,:) 
    711       qsr_top   (:,:)     =  qsr_temp   (:,:) 
     711      qsr   (:,:)     =  qsr_temp   (:,:) 
    712712      wndm  (:,:)     =  wndm_temp  (:,:) 
    713713# if defined key_trabbl 
     
    827827      emp_tm     (:,:) = emp   (:,:) 
    828828      sfx_tm     (:,:) = sfx   (:,:) 
    829       qsr_tm     (:,:) = qsr_top   (:,:) 
     829      qsr_tm     (:,:) = qsr   (:,:) 
    830830      wndm_tm    (:,:) = wndm  (:,:) 
    831831# if defined key_trabbl 
Note: See TracChangeset for help on using the changeset viewer.