Changeset 8094


Ignore:
Timestamp:
2017-05-30T10:17:23+02:00 (3 years ago)
Author:
cbricaud
Message:

compute correctly before rnf, emp and e3x_b in crs space and replace MAX operator by SUM for rnf coarsening

File:
1 edited

Legend:

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

    r8092 r8094  
    9393#if defined key_vvl 
    9494  
    95  
    96       IF( kt /= nit000 )THEN 
    97          zfse3t(:,:,:) = e3t_b(:,:,:) 
    98          zfse3u(:,:,:) = e3u_b(:,:,:) 
    99          zfse3v(:,:,:) = e3v_b(:,:,:) 
    100          zfse3w(:,:,:) = e3w_b(:,:,:) 
    101  
    102          CALL crs_dom_e3( e1t, e2t, zfse3t, p_sfc_3d_crs=e1e2w_crs, cd_type='T', p_mask=tmask, p_e3_crs=e3t_b_crs, p_e3_max_crs=zs_crs) 
    103          CALL crs_dom_e3( e1t, e2t, zfse3w, p_sfc_3d_crs=e1e2w_crs, cd_type='W', p_mask=tmask, p_e3_crs=e3w_b_crs, p_e3_max_crs=zs_crs) 
    104          CALL crs_dom_e3( e1u, e2u, zfse3u, p_sfc_2d_crs=e2u_crs  , cd_type='U', p_mask=umask, p_e3_crs=e3u_b_crs, p_e3_max_crs=zs_crs) 
    105          CALL crs_dom_e3( e1v, e2v, zfse3v, p_sfc_2d_crs=e1v_crs  , cd_type='V', p_mask=vmask, p_e3_crs=e3v_b_crs, p_e3_max_crs=zs_crs) 
    106  
    107          DO jk = 1, jpk 
    108             DO ji = 1, jpi_crs 
    109                DO jj = 1, jpj_crs 
    110                   IF( e3t_b_crs(ji,jj,jk) == 0._wp ) e3t_b_crs(ji,jj,jk) = e3t_1d(jk) 
    111                   IF( e3w_b_crs(ji,jj,jk) == 0._wp ) e3w_b_crs(ji,jj,jk) = e3w_1d(jk) 
    112                   IF( e3u_b_crs(ji,jj,jk) == 0._wp ) e3u_b_crs(ji,jj,jk) = e3t_1d(jk) 
    113                   IF( e3v_b_crs(ji,jj,jk) == 0._wp ) e3v_b_crs(ji,jj,jk) = e3t_1d(jk) 
    114                ENDDO 
     95      zfse3t(:,:,:) = e3t_b(:,:,:) 
     96      zfse3u(:,:,:) = e3u_b(:,:,:) 
     97      zfse3v(:,:,:) = e3v_b(:,:,:) 
     98      zfse3w(:,:,:) = e3w_b(:,:,:) 
     99 
     100      CALL crs_dom_e3( e1t, e2t, zfse3t, p_sfc_3d_crs=e1e2w_crs, cd_type='T', p_mask=tmask, p_e3_crs=e3t_b_crs, p_e3_max_crs=zs_crs) 
     101      CALL crs_dom_e3( e1t, e2t, zfse3w, p_sfc_3d_crs=e1e2w_crs, cd_type='W', p_mask=tmask, p_e3_crs=e3w_b_crs, p_e3_max_crs=zs_crs) 
     102      CALL crs_dom_e3( e1u, e2u, zfse3u, p_sfc_2d_crs=e2u_crs  , cd_type='U', p_mask=umask, p_e3_crs=e3u_b_crs, p_e3_max_crs=zs_crs) 
     103      CALL crs_dom_e3( e1v, e2v, zfse3v, p_sfc_2d_crs=e1v_crs  , cd_type='V', p_mask=vmask, p_e3_crs=e3v_b_crs, p_e3_max_crs=zs_crs) 
     104 
     105      DO jk = 1, jpk 
     106         DO ji = 1, jpi_crs 
     107            DO jj = 1, jpj_crs 
     108               IF( e3t_b_crs(ji,jj,jk) == 0._wp ) e3t_b_crs(ji,jj,jk) = e3t_1d(jk) 
     109               IF( e3w_b_crs(ji,jj,jk) == 0._wp ) e3w_b_crs(ji,jj,jk) = e3w_1d(jk) 
     110               IF( e3u_b_crs(ji,jj,jk) == 0._wp ) e3u_b_crs(ji,jj,jk) = e3t_1d(jk) 
     111               IF( e3v_b_crs(ji,jj,jk) == 0._wp ) e3v_b_crs(ji,jj,jk) = e3t_1d(jk) 
    115112            ENDDO 
    116113         ENDDO 
    117  
    118          e3t_n_crs(:,:,:) = e3t_a_crs(:,:,:) 
    119          e3u_n_crs(:,:,:) = e3u_a_crs(:,:,:) 
    120          e3v_n_crs(:,:,:) = e3v_a_crs(:,:,:) 
    121          e3w_n_crs(:,:,:) = e3w_a_crs(:,:,:) 
    122  
    123       ENDIF 
     114      ENDDO 
     115 
     116      zfse3t(:,:,:) = e3t_n(:,:,:) 
     117      zfse3u(:,:,:) = e3u_n(:,:,:) 
     118      zfse3v(:,:,:) = e3v_n(:,:,:) 
     119      zfse3w(:,:,:) = e3w_n(:,:,:) 
     120 
     121      CALL crs_dom_e3( e1t, e2t, zfse3t, p_sfc_3d_crs=e1e2w_crs, cd_type='T', p_mask=tmask, p_e3_crs=e3t_n_crs, p_e3_max_crs=e3t_max_n_crs) 
     122      CALL crs_dom_e3( e1t, e2t, zfse3w, p_sfc_3d_crs=e1e2w_crs, cd_type='W', p_mask=tmask, p_e3_crs=e3w_n_crs, p_e3_max_crs=e3w_max_n_crs) 
     123      CALL crs_dom_e3( e1u, e2u, zfse3u, p_sfc_2d_crs=e2u_crs  , cd_type='U', p_mask=umask, p_e3_crs=e3u_n_crs, p_e3_max_crs=e3u_max_n_crs) 
     124      CALL crs_dom_e3( e1v, e2v, zfse3v, p_sfc_2d_crs=e1v_crs  , cd_type='V', p_mask=vmask, p_e3_crs=e3v_n_crs, p_e3_max_crs=e3v_max_n_crs) 
     125 
     126      DO jk = 1, jpk 
     127         DO ji = 1, jpi_crs 
     128            DO jj = 1, jpj_crs 
     129               IF( e3t_n_crs(ji,jj,jk)     == 0._wp ) e3t_n_crs(ji,jj,jk) = e3t_1d(jk) 
     130               IF( e3w_n_crs(ji,jj,jk)     == 0._wp ) e3w_n_crs(ji,jj,jk) = e3w_1d(jk) 
     131               IF( e3u_n_crs(ji,jj,jk)     == 0._wp ) e3u_n_crs(ji,jj,jk) = e3t_1d(jk) 
     132               IF( e3v_n_crs(ji,jj,jk)     == 0._wp ) e3v_n_crs(ji,jj,jk) = e3t_1d(jk) 
     133               IF( e3t_max_n_crs(ji,jj,jk) == 0._wp ) e3t_max_n_crs(ji,jj,jk) = e3t_1d(jk) 
     134               IF( e3w_max_n_crs(ji,jj,jk) == 0._wp ) e3w_max_n_crs(ji,jj,jk) = e3w_1d(jk) 
     135               IF( e3u_max_n_crs(ji,jj,jk) == 0._wp ) e3u_max_n_crs(ji,jj,jk) = e3t_1d(jk) 
     136               IF( e3v_max_n_crs(ji,jj,jk) == 0._wp ) e3v_max_n_crs(ji,jj,jk) = e3t_1d(jk) 
     137            ENDDO 
     138         ENDDO 
     139      ENDDO 
     140 
    124141#endif 
    125142      !--------------------------------------------------------------------------------------------------- 
     
    138155#endif 
    139156 
    140       IF( kt /= nit000 )THEN 
     157      IF( kt == nit000 )THEN 
     158         CALL crs_dom_ope( rnf_b ,'SUM', 'T', tmask, rnf_b_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
     159         CALL crs_dom_ope( emp_b ,'SUM', 'T', tmask, emp_b_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
     160      ELSE 
    141161         emp_b_crs(:,:)        = emp_crs(:,:) 
    142162         rnf_b_crs(:,:)        = rnf_crs(:,:) 
    143       ELSE 
    144          emp_b_crs(:,:    ) = 0._wp 
    145          rnf_b_crs(:,:    ) = 0._wp 
    146163      ENDIF 
    147164 
     
    192209      !CALL iom_put("e1e3v_msk",e1e3v_msk) 
    193210 
    194       ! vertical scale factors                                                                                  
    195       CALL crs_dom_e3( e1t, e2t, zfse3t, p_sfc_3d_crs=e1e2w_crs, cd_type='T', p_mask=tmask, p_e3_crs=zs_crs, p_e3_max_crs=e3t_max_n_crs) 
    196       CALL crs_dom_e3( e1t, e2t, zfse3w, p_sfc_3d_crs=e1e2w_crs, cd_type='W', p_mask=tmask, p_e3_crs=zs_crs, p_e3_max_crs=e3w_max_n_crs) 
    197       CALL crs_dom_e3( e1u, e2u, zfse3u, p_sfc_2d_crs=e2u_crs  , cd_type='U', p_mask=umask, p_e3_crs=zs_crs, p_e3_max_crs=e3u_max_n_crs) 
    198       CALL crs_dom_e3( e1v, e2v, zfse3v, p_sfc_2d_crs=e1v_crs  , cd_type='V', p_mask=vmask, p_e3_crs=zs_crs, p_e3_max_crs=e3v_max_n_crs) 
    199  
    200       DO jk = 1, jpk 
    201          DO ji = 1, jpi_crs 
    202             DO jj = 1, jpj_crs 
    203                IF( e3t_max_n_crs(ji,jj,jk) == 0._wp ) e3t_max_n_crs(ji,jj,jk) = e3t_1d(jk) 
    204                IF( e3w_max_n_crs(ji,jj,jk) == 0._wp ) e3w_max_n_crs(ji,jj,jk) = e3w_1d(jk) 
    205                IF( e3u_max_n_crs(ji,jj,jk) == 0._wp ) e3u_max_n_crs(ji,jj,jk) = e3t_1d(jk) 
    206                IF( e3v_max_n_crs(ji,jj,jk) == 0._wp ) e3v_max_n_crs(ji,jj,jk) = e3t_1d(jk) 
    207             ENDDO 
    208          ENDDO 
    209       ENDDO 
    210  
    211211      ! depth 
    212212      CALL crs_dom_ope( gdepw_n, 'MAX', 'T', tmask, gdept_n_crs, p_e3=zfse3t, psgn=1.0 ) 
     
    297297 
    298298      !2D fields 
    299       CALL crs_dom_ope( rnf  , 'MAX', 'T', tmask, rnf_crs                                     , psgn=1.0 ) 
     299      CALL crs_dom_ope( rnf  , 'SUM', 'T', tmask, rnf_crs  , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    300300      CALL crs_dom_ope( h_rnf, 'MAX', 'T', tmask, h_rnf_crs                                   , psgn=1.0 ) 
    301301 
Note: See TracChangeset for help on using the changeset viewer.