Changeset 7795


Ignore:
Timestamp:
2017-03-15T09:04:30+01:00 (4 years ago)
Author:
cbricaud
Message:

code cleaning and correct bug for wn computing in vvl case

Location:
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/CRS/crs.F90

    r7398 r7795  
    154154      ! Physical and dynamical ocean fields for output or passing to TOP, time-mean fields 
    155155      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE      :: tsb_crs,tsn_crs,tsa_crs,rab_crs_n 
    156       REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: un_crs, vn_crs, wn_crs, rke_crs 
     156      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: un_crs, vn_crs, wn_crs 
    157157      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: ub_crs, vb_crs 
    158158      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: hdivb_crs , hdivn_crs     
     
    296296 
    297297      ALLOCATE( ub_crs(jpi_crs,jpj_crs,jpk) , vb_crs(jpi_crs,jpj_crs,jpk) , & 
    298          &      un_crs(jpi_crs,jpj_crs,jpk) , vn_crs(jpi_crs,jpj_crs,jpk)    ,  wn_crs(jpi_crs,jpj_crs,jpk) , & 
     298         &      un_crs(jpi_crs,jpj_crs,jpk) , vn_crs(jpi_crs,jpj_crs,jpk)    ,  wn_crs(jpi_crs,jpj_crs,jpk) ,& 
    299299         &      hdivb_crs(jpi_crs,jpj_crs,jpk) , hdivn_crs(jpi_crs,jpj_crs,jpk) , & 
    300          &      rke_crs(jpi_crs,jpj_crs,jpk), rhop_crs(jpi_crs,jpj_crs,jpk)  , & 
     300         &      rhop_crs(jpi_crs,jpj_crs,jpk)  , & 
    301301         &      rb2_crs(jpi_crs,jpj_crs,jpk) ,rn2_crs(jpi_crs,jpj_crs,jpk) , & 
    302302         &      rhd_crs(jpi_crs,jpj_crs,jpk)   , rab_crs_n(jpi_crs,jpj_crs,jpk,jpts) , & 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90

    r7520 r7795  
    141141         emp_b_crs(:,:)        = emp_crs(:,:) 
    142142         rnf_b_crs(:,:)        = rnf_crs(:,:) 
    143          hdivb_crs(:,:,:)      = hdivn_crs(:,:,:) 
    144143      ELSE 
    145144         emp_b_crs(:,:    ) = 0._wp 
    146145         rnf_b_crs(:,:    ) = 0._wp 
    147          hdivb_crs(:,:,:  ) = 0._wp 
    148146      ENDIF 
    149147 
     
    157155      CALL crs_dom_ope( zs, 'VOL', 'T', tmask, zs_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 
    158156      tsb_crs(:,:,:,jp_sal) = zs_crs(:,:,:) 
    159  
    160       !  U-velocity 
    161       CALL crs_dom_ope( ub, 'SUM', 'U', umask, ub_crs, p_e12=e2u, p_e3=zfse3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 
    162  
    163       !  V-velocity 
    164       CALL crs_dom_ope( vb, 'SUM', 'V', vmask, vb_crs, p_e12=e1v, p_e3=zfse3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 
    165157 
    166158      ! n2 
     
    266258      CALL iom_put( "voce"  , vn_crs )   ! i-current  
    267259 
    268       !n2 
    269       CALL crs_dom_ope( rn2 , 'VOL', 'W', tmask, rn2_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 
     260!      !n2 
     261!      CALL crs_dom_ope( rn2 , 'VOL', 'W', tmask, rn2_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 
    270262      
    271263      !  Horizontal divergence ( following OPA_SRC/DYN/divcur.F90 )  
     
    303295      ! 
    304296      CALL iom_put( "avt", avt_crs )   !  Kz 
    305       
     297 
    306298      !2D fields 
    307       CALL crs_dom_ope( utau , 'SUM', 'U', umask, utau_crs , p_e12=e2u  , p_surf_crs=e2u_crs  , psgn=1.0 ) 
    308       CALL crs_dom_ope( vtau , 'SUM', 'V', vmask, vtau_crs , p_e12=e1v  , p_surf_crs=e1v_crs  , psgn=1.0 ) 
    309       CALL crs_dom_ope( wndm , 'SUM', 'T', tmask, wndm_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    310299      CALL crs_dom_ope( rnf  , 'MAX', 'T', tmask, rnf_crs                                     , psgn=1.0 ) 
    311300      CALL crs_dom_ope( h_rnf, 'MAX', 'T', tmask, h_rnf_crs                                   , psgn=1.0 ) 
     
    319308      CALL crs_dom_ope( emp   ,'SUM', 'T', tmask, emp_crs   , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    320309      CALL crs_dom_ope( fmmflx,'SUM', 'T', tmask, fmmflx_crs, p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    321       CALL crs_dom_ope( sfx   ,'SUM', 'T', tmask, sfx_crs   , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    322310 
    323311      CALL crs_dom_ope( fr_i  ,'SUM', 'T', tmask, fr_i_crs  , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
     
    385373      DO jk = jpkm1, 1, -1 
    386374         wn_crs(:,:,jk) = wn_crs(:,:,jk+1)*e1e2w_msk(:,:,jk+1) - (  hdivn_crs(:,:,jk)                                   & 
    387                &                          + z1_2dt * e1e2w_crs(:,:,jk) * ( e3t_a_crs(:,:,jk) - e3t_b_crs(:,:,jk) ) ) * tmask_crs(:,:,jk) 
     375               &                          + z1_2dt * e1e2w_msk(:,:,jk) * ( e3t_a_crs(:,:,jk) - e3t_b_crs(:,:,jk) ) ) * tmask_crs(:,:,jk) 
    388376         WHERE( e1e2w_msk(:,:,jk) .NE. 0._wp )  wn_crs(:,:,jk) =  wn_crs(:,:,jk) /e1e2w_msk(:,:,jk) 
    389377 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd_crs.F90

    r6772 r7795  
    144144         ! Surface value 
    145145         IF( lk_vvl ) THEN   ;   zwz(:,:, 1 ) = 0.e0                         ! volume variable 
    146          ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) !cbr * ptb(:,:,1,jn)   ! linear free surface  
     146         ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) * ptb(:,:,1,jn)   ! linear free surface  
    147147         ENDIF 
    148148         ! Interior value 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp_crs.F90

    r6772 r7795  
    149149 
    150150#endif 
     151 
    151152            DO jk = 1, jpkm1 
    152153               DO jj = 2, jpj_crs-1 
     
    154155 
    155156#if defined key_vvl 
    156                      ze3ta =  ( 1. - r_vvl ) +        r_vvl   * fse3t_a_crs(ji,jj,jk)   ! after scale factor at T-point 
    157                      ze3tn =         r_vvl   + ( 1. - r_vvl ) * fse3t_n_crs(ji,jj,jk)   ! now   scale factor at T-point 
     157                     ze3ta =  ( 1. - r_vvl ) +        r_vvl   * e3t_a_crs(ji,jj,jk)   ! after scale factor at T-point 
     158                     ze3tn =         r_vvl   + ( 1. - r_vvl ) * e3t_n_crs(ji,jj,jk)   ! now   scale factor at T-point 
    158159#else 
    159160                     ze3ta =  ( 1. - r_vvl ) +        r_vvl   * e3t_0_crs(ji,jj,jk)   ! after scale factor at T-point 
    160161                     ze3tn =         r_vvl   + ( 1. - r_vvl ) * e3t_0_crs(ji,jj,jk)   ! now   scale factor at T-point 
    161162#endif 
    162                      !cbr zwi(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk  ) / ( ze3tn * e3w_1d(jk  ) )  !cc 
    163                      !cbr zws(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk+1) / ( ze3tn * e3w_1d(jk+1) )  !cc 
     163 
    164164                     zwi(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk  ) / ( ze3tn * fse3w_max_crs(ji,jj,jk) ) 
    165165                     zws(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk+1) / ( ze3tn * fse3w_max_crs(ji,jj,jk+1) ) 
     
    209209            DO ji = 2, jpi_crs-1 
    210210#if defined key_vvl 
    211                ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b_crs(ji,jj,1) 
    212                ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t_n_crs(ji,jj,1) 
     211               ze3tb = ( 1. - r_vvl ) + r_vvl * e3t_b_crs(ji,jj,1) 
     212               ze3tn = ( 1. - r_vvl ) + r_vvl * e3t_n_crs(ji,jj,1) 
    213213#else 
    214214               ze3tb = ( 1. - r_vvl ) + r_vvl * e3t_0_crs(ji,jj,1) 
     
    223223               DO ji = 2, jpi_crs-1 
    224224#if defined key_vvl 
    225                   ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b_crs(ji,jj,jk) 
    226                   ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t_n_crs(ji,jj,jk) 
     225                  ze3tb = ( 1. - r_vvl ) + r_vvl * e3t_b_crs(ji,jj,jk) 
     226                  ze3tn = ( 1. - r_vvl ) + r_vvl * e3t_n_crs(ji,jj,jk) 
    227227#else 
    228228                  ze3tb = ( 1. - r_vvl ) + r_vvl * e3t_0_crs(ji,jj,jk) 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90

    r7521 r7795  
    147147 
    148148#if defined key_vvl  
    149    USE crs , ONLY :   e3t        =>  e3t_n_crs         !: vertical scale factors at t- 
    150    USE crs , ONLY :   e3u        =>  e3u_n_crs         !: vertical scale factors at u- 
    151    USE crs , ONLY :   e3v        =>  e3v_n_crs         !: vertical scale factors v- 
    152    USE crs , ONLY :   e3w        =>  e3w_n_crs         !: w-points (m) 
    153149   USE crs , ONLY :   e3t_b      =>  e3t_b_crs         !: vertical scale factors at t- 
    154    USE crs , ONLY :   e3u_b      =>  e3u_b_crs         !: vertical scale factors at u- 
    155    USE crs , ONLY :   e3v_b      =>  e3v_b_crs         !: vertical scale factors v- 
    156    USE crs , ONLY :   e3w_b      =>  e3w_b_crs         !: w-points (m) 
    157150   USE crs , ONLY :   e3t_n      =>  e3t_n_crs         !: vertical scale factors at t- 
    158151   USE crs , ONLY :   e3u_n      =>  e3u_n_crs         !: vertical scale factors at u- 
     
    160153   USE crs , ONLY :   e3w_n      =>  e3w_n_crs         !: w-points (m) 
    161154   USE crs , ONLY :   e3t_a      =>  e3t_a_crs         !: vertical scale factors at t- 
    162    USE crs , ONLY :   e3u_a      =>  e3u_a_crs         !: vertical scale factors at u- 
    163    USE crs , ONLY :   e3v_a      =>  e3v_a_crs         !: vertical scale factors v- 
    164    USE crs , ONLY :   e3w_a      =>  e3w_a_crs         !: w-points (m) 
    165    USE crs , ONLY :   gdept      =>  gdept_n_crs       !: depth of t-points (m) 
    166    USE crs , ONLY :   gdept_crs  =>  gdept_n_crs       !: depth of t-points (m) 
    167155   USE crs , ONLY :   gdept_n    =>  gdept_n_crs       !: depth of t-points (m) 
    168    USE crs , ONLY :   gdepw_n    =>  gdepw_n_crs       !: depth of t-points (m) 
    169    USE crs , ONLY :   e3t_max_crs => e3t_max_n_crs 
    170    USE crs , ONLY :   e3u_max_crs => e3u_max_n_crs 
    171    USE crs , ONLY :   e3v_max_crs => e3v_max_n_crs 
    172    USE crs , ONLY :   e3w_max_crs => e3w_max_n_crs 
    173156#else 
    174157   USE crs , ONLY :   e3t        =>  e3t_0_crs         !: vertical scale factors at t- 
     
    199182   USE crs , ONLY :   e3w_max_crs => e3w_max_0_crs 
    200183#endif 
    201    USE crs , ONLY :   e3t_0        =>  e3t_0_crs         !: vertical scale factors at t- 
    202    USE crs , ONLY :   e3u_0        =>  e3u_0_crs         !: vertical scale factors at t- 
    203    USE crs , ONLY :   e3v_0        =>  e3v_0_crs         !: vertical scale factors at t- 
    204    USE crs , ONLY :   e3w_0        =>  e3w_0_crs         !: vertical scale factors at t- 
    205  
    206    USE crs , ONLY     :   ff         =>  ff_crs         !: f-points (m) 
    207    USE crs , ONLY     :   gdept_0    =>  gdept_0_crs       !: depth of t-points (m) 
    208184   USE dom_oce , ONLY :   gdept_1d   =>  gdept_1d      !: depth of t-points (m) 
    209 #if defined key_zco 
    210    USE crs , ONLY :   gdept      =>  gdept_0_crs       !: depth of t-points (m) 
    211    USE crs , ONLY :   gdepw      =>  gdepw_crs       !: depth of t-points (m) 
    212 #endif 
    213185  !* masks, bathymetry * 
    214186   USE crs , ONLY :   mbkt       =>   mbkt_crs       !: vertical index of the bottom last T- ocean level 
    215    USE crs , ONLY :   mbku       =>   mbku_crs       !: vertical index of the bottom last U- ocean level 
    216    USE crs , ONLY :   mbkv       =>   mbkv_crs       !: vertical index of the bottom last V- ocean level 
    217187   USE crs , ONLY :   tmask_i    =>   tmask_i_crs    !: Interior mask at t-points 
    218188   USE crs , ONLY :   tmask      =>   tmask_crs      !: land/ocean mask at t-points 
    219    USE crs , ONLY :   umask      =>   umask_crs      !: land/ocean mask at u-points    
    220    USE crs , ONLY :   vmask      =>   vmask_crs      !: land/ocean mask at v-points  
    221    USE crs , ONLY :   fmask      =>   fmask_crs      !: land/ocean mask at f-points  
    222189 
    223190 !* ocean fields: here now and after fields * 
     
    226193   USE crs , ONLY :   wn      =>    wn_crs      !: vertical velocity (m s-1)   
    227194   USE crs , ONLY :   tsn     =>    tsn_crs     !: 4D array contaning ( tn, sn ) 
    228    USE crs , ONLY :   tsb     =>    tsb_crs     !: 4D array contaning ( tb, sb ) 
    229    USE crs , ONLY :   tsa     =>    tsa_crs     !: 4D array contaning ( ta, sa ) 
    230195   USE crs , ONLY :   rhop    =>    rhop_crs    !: potential volumic mass (kg m-3)  
    231    USE crs , ONLY :   rhd     =>    rhd_crs    !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) 
    232    USE crs , ONLY :   rn2b    =>    rb2_crs     !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) 
    233    USE crs , ONLY :   rab_n   =>    rab_crs_n     !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) 
    234196   USE crs , ONLY :   hdivn   =>    hdivn_crs   !: horizontal divergence (1/s) 
    235    USE crs , ONLY :   hdivb   =>    hdivb_crs   !: horizontal divergence (1/s) 
    236197   USE crs , ONLY :   sshb    =>    sshb_crs    !: sea surface height at t-point [m]    
    237198   USE crs , ONLY :   sshn    =>    sshn_crs    !: sea surface height at t-point [m]    
     
    239200 
    240201   !* surface fluxes * 
    241    USE crs , ONLY :   utau       =>    utau_crs       !: i-surface stress component 
    242    USE crs , ONLY :   vtau       =>    vtau_crs       !: j-surface stress component 
    243    USE crs , ONLY :   wndm       =>    wndm_crs       !: 10m wind speed  
    244202   USE crs , ONLY :   qsr        =>    qsr_crs        !: penetrative solar radiation (w m-2)   
    245203   USE crs , ONLY :   emp        =>    emp_crs        !: freshwater budget: volume flux               [Kg/m2/s] 
    246204   USE crs , ONLY :   emp_b      =>    emp_b_crs      !: freshwater budget: volume flux               [Kg/m2/s] 
    247    USE crs , ONLY :   sfx        =>    sfx_crs        !: freshwater budget: concentration/dillution   [Kg/m2/s] 
    248205   USE crs , ONLY :   fmmflx     =>    fmmflx_crs     !: freshwater budget: volume flux               [Kg/m2/s] 
    249206   USE crs , ONLY :   rnf        =>    rnf_crs        !: river runoff   [Kg/m2/s] 
     
    251208   USE crs , ONLY :   nk_rnf     =>    nk_rnf_crs     !: depth of runoff in model level 
    252209   USE crs , ONLY :   fr_i       =>    fr_i_crs       !: ice fraction (between 0 to 1) 
     210 
    253211   USE trcnam_trp , ONLY :  aht0     =>   rn_ahtrc_0        !: horizontal eddy diffusivity for tracers (m2/s) 
    254212   USE crs , ONLY :  ahtu     =>   ahtu_crs        !: lateral diffusivity coef. at u-points  
     
    258216   USE crs , ONLY :  r_fact_lap     =>  r_fact_lap_crs        !: enhanced zonal diffusivity coefficient 
    259217   USE ldftra_oce , ONLY :  rldf     =>   rldf 
     218 
    260219   USE crs , ONLY :  trc_i => trc_i_crs 
    261220   USE crs , ONLY :  trc_o => trc_o_crs 
     221 
    262222   USE crs , ONLY :   avt        =>   avt_crs         !: vert. diffusivity coef. at w-point for temp   
    263 #if defined key_zdfddm 
    264    USE crs , ONLY :   avs        =>   avs_crs         !: salinity vertical diffusivity coeff. at w-point 
    265 #endif 
    266  
    267    USE trc_oce, ONLY : nn_dttrc 
    268  
    269    USE crs , ONLY :   nmln        =>   nmln_crs        !: number of level in the mixed layer 
    270223   USE crs , ONLY :   hmld        =>   hmld_crs        !: mixing layer depth (turbocline) 
    271224   USE crs , ONLY :   hmlp        =>   hmlp_crs        !: mixed layer depth  (rho=rho0+zdcrit) (m) 
    272    USE crs , ONLY :   hmlpt       =>   hmlpt_crs       !: mixed layer depth at t-points (m) 
    273225 
    274226  !* direction of lateral diffusion * 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r7398 r7795  
    110110          fmmflx_tm(:,:)         = fmmflx_tm(:,:)         + fmmflx(:,:) 
    111111          qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
    112           wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
    113112 
    114113      ELSE                           !  It is time to substep  
     
    152151         fmmflx_temp(:,:)        = fmmflx(:,:) 
    153152         qsr_temp   (:,:)        = qsr   (:,:) 
    154          wndm_temp  (:,:)        = wndm  (:,:) 
    155153         !                                    !  Variables reset in trc_sub_ssh 
    156154#if ! defined key_crs 
    157155         rotn_temp  (:,:,:)      = rotn  (:,:,:) 
    158156# endif 
    159          hdivn_temp (:,:,:)      = hdivn (:,:,:) 
    160157#if ! defined key_crs 
    161158         rotb_temp  (:,:,:)      = rotb  (:,:,:) 
    162159# endif 
    163          hdivb_temp (:,:,:)      = hdivb (:,:,:) 
    164160         ! 
    165161         ! 2. Create averages and reassign variables 
     
    199195         fmmflx_tm(:,:)          = fmmflx_tm  (:,:)       + fmmflx(:,:) 
    200196         qsr_tm   (:,:)          = qsr_tm     (:,:)       + qsr   (:,:) 
    201          wndm_tm  (:,:)          = wndm_tm    (:,:)       + wndm  (:,:) 
    202197         ! 
    203198         sshn     (:,:)          = sshn_tm    (:,:) * r1_ndttrcp1  
     
    211206         emp_b    (:,:) = emp_b_hold (:,:) 
    212207         IF( kt == nittrc000 ) THEN 
    213             wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrc  
    214208            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrc  
    215209            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrc  
     
    227221# endif 
    228222         ELSE 
    229             wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrcp1  
    230223            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrcp1  
    231224            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrcp1  
     
    389382      emp_b (:,:)     =  emp_b_temp (:,:) 
    390383      qsr   (:,:)     =  qsr_temp   (:,:) 
    391       wndm  (:,:)     =  wndm_temp  (:,:) 
    392384# if defined key_trabbl 
    393385      IF( nn_bbl_ldf == 1 ) THEN 
     
    402394      ! 
    403395      hdivn (:,:,:)   =  hdivn_temp (:,:,:) 
    404       hdivb (:,:,:)   =  hdivb_temp (:,:,:) 
    405396#if ! defined key_crs 
    406397      rotn  (:,:,:)   =  rotn_temp  (:,:,:) 
     
    438429      fmmflx_tm  (:,:) = fmmflx(:,:) 
    439430      qsr_tm     (:,:) = qsr   (:,:) 
    440       wndm_tm    (:,:) = wndm  (:,:) 
    441431# if defined key_trabbl 
    442432      IF( nn_bbl_ldf == 1 ) THEN 
Note: See TracChangeset for help on using the changeset viewer.