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 7207 for branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM – NEMO

Ignore:
Timestamp:
2016-11-08T14:26:53+01:00 (7 years ago)
Author:
cbricaud
Message:

commit modif for CRS; run with/without CRS

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

Legend:

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

    r7204 r7207  
    7878      REAL(wp):: z2dcrsu, z2dcrsv 
    7979      REAL(wp):: z1_2dt 
     80      REAL(wp):: zmin,zmax 
    8081      INTEGER :: i,j,ijis,ijie,ijjs,ijje 
    8182      INTEGER ::  iji,ijj 
     
    9596      CALL wrk_alloc( jpi_crs, jpj_crs, z2d_crs     ) 
    9697 
    97  
    98       IF( kt == nit000  ) THEN 
    99          tsn_crs  (:,:,:,:) = 0._wp    ! temp/sal  array, now  
    100          un_crs   (:,:,:  ) = 0._wp    ! u-velocity 
    101          vn_crs   (:,:,:  ) = 0._wp    ! v-velocity 
    102          wn_crs   (:,:,:  ) = 0._wp    ! w 
    103          avt_crs  (:,:,:  ) = 0._wp    ! avt 
    104          hdivb_crs(:,:,:  ) = 0._wp    ! hdiv 
    105          hdivn_crs(:,:,:  ) = 0._wp    ! hdiv 
    106          rke_crs  (:,:,:  ) = 0._wp    ! rke 
    107          sshn_crs (:,:    ) = 0._wp    ! ssh 
    108          utau_crs (:,:    ) = 0._wp    ! taux 
    109          vtau_crs (:,:    ) = 0._wp    ! tauy 
    110          wndm_crs (:,:    ) = 0._wp    ! wind speed 
    111          qsr_crs  (:,:    ) = 0._wp    ! qsr 
    112          emp_crs  (:,:    ) = 0._wp    ! emp 
    113          emp_b_crs(:,:    ) = 0._wp    ! emp 
    114          rnf_crs  (:,:    ) = 0._wp    ! runoff 
    115          rnf_b_crs(:,:    ) = 0._wp    ! runoff 
    116          fr_i_crs (:,:    ) = 0._wp    ! ice cover 
    117       ENDIF 
    118  
    11998      CALL iom_swap( "nemo_crs" )    ! swap on the coarse grid 
    12099 
    121100      !--------------------------------------------------------------------------------------------------- 
    122       !variables domaine au temps before : swap  
    123       !--------------------------------------------------------------------------------------------------- 
    124 #if defined key_vvl 
    125       e3t_b_crs(:,:,:) = e3t_n_crs(:,:,:) 
    126       e3u_b_crs(:,:,:) = e3u_n_crs(:,:,:) 
    127       e3v_b_crs(:,:,:) = e3v_n_crs(:,:,:) 
    128       e3w_b_crs(:,:,:) = e3w_n_crs(:,:,:) 
     101      !scale factors: swap  
     102      !--------------------------------------------------------------------------------------------------- 
     103#if defined key_vvl 
     104      !e3t_b_crs(:,:,:) = e3t_n_crs(:,:,:) 
     105      !e3u_b_crs(:,:,:) = e3u_n_crs(:,:,:) 
     106      !e3v_b_crs(:,:,:) = e3v_n_crs(:,:,:) 
     107      !e3w_b_crs(:,:,:) = e3w_n_crs(:,:,:) 
     108      !e3t_n_crs(:,:,:) = e3t_a_crs(:,:,:) 
     109      !e3u_n_crs(:,:,:) = e3u_a_crs(:,:,:) 
     110      !e3v_n_crs(:,:,:) = e3v_a_crs(:,:,:) 
     111      !e3w_n_crs(:,:,:) = e3w_a_crs(:,:,:) 
     112  
     113      !cbr: ds dynnxt, si  (lk_dynspg_ts.AND.ln_bt_fw) on fait un swap simple ( e3X_b_crs=e3X_n_crs ) 
     114      !                 sinon e3X_b_crs passe par le filtre d'asselin !!!!!! 
     115      !     ds dommvl, swap simple pr  e3X_n_crs=e3X_a_crs  
     116 
     117 
     118      IF( kt /= nit000 )THEN 
     119      zfse3t(:,:,:) = e3t_b(:,:,:) 
     120      zfse3u(:,:,:) = e3u_b(:,:,:) 
     121      zfse3v(:,:,:) = e3v_b(:,:,:) 
     122      zfse3w(:,:,:) = e3w_b(:,:,:) 
     123      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) 
     124      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) 
     125      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) 
     126      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) 
     127      DO jk = 1, jpk 
     128         DO ji = 1, jpi_crs 
     129            DO jj = 1, jpj_crs 
     130               IF( e3t_b_crs(ji,jj,jk) == 0._wp ) e3t_b_crs(ji,jj,jk) = e3t_1d(jk) 
     131               IF( e3w_b_crs(ji,jj,jk) == 0._wp ) e3w_b_crs(ji,jj,jk) = e3w_1d(jk) 
     132               IF( e3u_b_crs(ji,jj,jk) == 0._wp ) e3u_b_crs(ji,jj,jk) = e3t_1d(jk) 
     133               IF( e3v_b_crs(ji,jj,jk) == 0._wp ) e3v_b_crs(ji,jj,jk) = e3t_1d(jk) 
     134            ENDDO 
     135        ENDDO 
     136      ENDDO 
     137 
    129138      e3t_n_crs(:,:,:) = e3t_a_crs(:,:,:) 
    130139      e3u_n_crs(:,:,:) = e3u_a_crs(:,:,:) 
    131140      e3v_n_crs(:,:,:) = e3v_a_crs(:,:,:) 
    132141      e3w_n_crs(:,:,:) = e3w_a_crs(:,:,:) 
    133 #endif 
     142 
     143      ENDIF 
     144#endif 
     145      !--------------------------------------------------------------------------------------------------- 
     146      !variables domaine au temps before : swap  
     147      !--------------------------------------------------------------------------------------------------- 
     148#if defined key_vvl 
     149      zfse3t(:,:,:) = e3t_b(:,:,:) 
     150      zfse3u(:,:,:) = e3u_b(:,:,:) 
     151      zfse3v(:,:,:) = e3v_b(:,:,:) 
     152      zfse3w(:,:,:) = e3w_b(:,:,:) 
     153#else 
     154      zfse3t(:,:,:) = e3t_0(:,:,:) 
     155      zfse3u(:,:,:) = e3u_0(:,:,:) 
     156      zfse3v(:,:,:) = e3v_0(:,:,:) 
     157      zfse3w(:,:,:) = e3w_0(:,:,:) 
     158#endif 
     159 
     160      !zmin=MINVAL();zmax=MAXVAL();CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ",zmin,zmax  
     161      !zmin=MINVAL();zmax=MAXVAL();CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ",zmin,zmax  
    134162 
    135163      IF( kt /= nit000 )THEN 
    136          tsb_crs(:,:,:,jp_tem) = tsn_crs(:,:,:,jp_tem)  
    137          tsb_crs(:,:,:,jp_sal) = tsn_crs(:,:,:,jp_sal)  
    138          ub_crs(:,:,:)         = un_crs(:,:,:)  
    139          vb_crs(:,:,:)         = vn_crs(:,:,:)  
    140          sshb_crs(:,:)         = sshb_crs(:,:) 
    141164         emp_b_crs(:,:)        = emp_crs(:,:) 
    142165         rnf_b_crs(:,:)        = rnf_crs(:,:) 
    143          rb2_crs(:,:,:)        = rn2_crs(:,:,:) 
     166         hdivb_crs(:,:,:)      = hdivn_crs(:,:,:) !cbr hdivb_crs pas utile ????????????????????????????????? 
     167      ELSE 
     168         emp_b_crs(:,:    ) = 0._wp 
     169         rnf_b_crs(:,:    ) = 0._wp 
     170         hdivb_crs(:,:,:  ) = 0._wp  !cbr hdivb_crs pas utile ????????????????????????????????? 
    144171      ENDIF 
    145172 
     173      !  Temperature 
     174      zt(:,:,:) = tsb(:,:,:,jp_tem)  ;      zt_crs(:,:,:) = 0._wp 
     175      CALL crs_dom_ope( zt, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 
     176      tsb_crs(:,:,:,jp_tem) = zt_crs(:,:,:) 
     177 
     178      !  Salinity 
     179      zs(:,:,:) = tsb(:,:,:,jp_sal)  ;      zs_crs(:,:,:) = 0._wp 
     180      CALL crs_dom_ope( zs, 'VOL', 'T', tmask, zs_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 
     181      tsb_crs(:,:,:,jp_sal) = zs_crs(:,:,:) 
     182 
     183      !  U-velocity  !cb  pas utile ????????????????????????????????? 
     184      CALL crs_dom_ope( ub, 'SUM', 'U', umask, ub_crs, p_e12=e2u, p_e3=zfse3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 
     185 
     186      !  V-velocity  pas utile ????????????????????????????????? 
     187      CALL crs_dom_ope( vb, 'SUM', 'V', vmask, vb_crs, p_e12=e1v, p_e3=zfse3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 
     188 
     189      ! n2 
     190      CALL crs_dom_ope( rn2b, 'VOL', 'W', tmask, rb2_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 
     191 
     192      !ssh !cbr pas utile ?????????????????????????????????????? 
     193      zfse3t(:,:,:) = 1._wp 
     194      CALL crs_dom_ope( sshb , 'VOL', 'T', tmask, sshb_crs , p_e12=e1e2t, p_e3=zfse3t         , psgn=1.0 ) 
     195 
    146196      !--------------------------------------------------------------------------------------------------- 
    147197      !variables domaine au temps now :  
    148198      !--------------------------------------------------------------------------------------------------- 
    149 #if defined key_vvl 
    150       zfse3t(:,:,:) = e3t_n(:,:,:) 
    151       zfse3u(:,:,:) = e3u_n(:,:,:) 
    152       zfse3v(:,:,:) = e3v_n(:,:,:) 
    153       zfse3w(:,:,:) = e3w_n(:,:,:) 
    154  
    155       CALL crs_dom_sfc( umask, 'U', e2e3u_crs, e2e3u_msk, p_e2=e2u, p_e3=zfse3u ) 
    156       CALL crs_dom_sfc( vmask, 'V', e1e3v_crs, e1e3v_msk, p_e1=e1v, p_e3=zfse3v ) 
    157       CALL iom_put("e2e3u_crs",e2e3u_crs) 
    158       CALL iom_put("e2e3u_msk",e2e3u_msk) 
    159       CALL iom_put("e1e3v_crs",e1e3v_crs) 
    160       CALL iom_put("e1e3v_msk",e1e3v_msk) 
    161       !                                                                                  
    162       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_0_crs) 
    163       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_0_crs) 
    164       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_0_crs) 
    165       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_0_crs) 
    166  
    167       CALL crs_dom_ope( gdepw_n, 'MAX', 'T', tmask, gdept_n_crs, p_e3=zfse3t, psgn=1.0 ) 
    168       CALL crs_dom_ope( gdepw_n, 'MAX', 'W', tmask, gdepw_n_crs, p_e3=zfse3w, psgn=1.0 ) 
    169  
    170       CALL crs_dom_facvol( tmask, 'T', e1t, e2t, zfse3t, ocean_volume_crs_t, facvol_t ) 
    171       CALL iom_put("cvol_crs_t",ocean_volume_crs_t) 
    172       ! 
    173       bt_crs(:,:,:) = ocean_volume_crs_t(:,:,:) * facvol_t(:,:,:)*tmask_crs(:,:,:) 
    174       ! 
    175       r1_bt_crs(:,:,:) = 0._wp 
    176       WHERE( bt_crs /= 0._wp ) r1_bt_crs(:,:,:) = 1._wp / bt_crs(:,:,:) 
    177  
    178       CALL crs_dom_facvol( tmask, 'W', e1t, e2t, zfse3w, ocean_volume_crs_w, facvol_w ) 
    179  
    180 #endif 
    181  
    182199#if defined key_vvl 
    183200      zfse3t(:,:,:) = e3t_n(:,:,:) 
     
    196213#endif 
    197214 
     215#if defined key_vvl 
     216      CALL crs_dom_sfc( umask, 'U', e2e3u_crs, e2e3u_msk, p_e2=e2u, p_e3=zfse3u ) 
     217      CALL crs_dom_sfc( vmask, 'V', e1e3v_crs, e1e3v_msk, p_e1=e1v, p_e3=zfse3v ) 
     218      CALL iom_put("e2e3u_crs",e2e3u_crs) 
     219      CALL iom_put("e2e3u_msk",e2e3u_msk) 
     220      CALL iom_put("e1e3v_crs",e1e3v_crs) 
     221      CALL iom_put("e1e3v_msk",e1e3v_msk) 
     222      !                                                                                  
     223      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) 
     224      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) 
     225      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) 
     226      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) 
     227 
     228     WHERE(e3t_max_n_crs == 0._wp) e3t_max_n_crs=r_inf 
     229     WHERE(e3u_max_n_crs == 0._wp) e3u_max_n_crs=r_inf 
     230     WHERE(e3v_max_n_crs == 0._wp) e3v_max_n_crs=r_inf 
     231     WHERE(e3w_max_n_crs == 0._wp) e3w_max_n_crs=r_inf 
     232 
     233      CALL crs_dom_ope( gdepw_n, 'MAX', 'T', tmask, gdept_n_crs, p_e3=zfse3t, psgn=1.0 ) 
     234      CALL crs_dom_ope( gdepw_n, 'MAX', 'W', tmask, gdepw_n_crs, p_e3=zfse3w, psgn=1.0 ) 
     235 
     236      CALL crs_dom_facvol( tmask, 'T', e1t, e2t, zfse3t, ocean_volume_crs_t, facvol_t ) 
     237      CALL iom_put("cvol_crs_t",ocean_volume_crs_t) 
     238      ! 
     239      bt_crs(:,:,:) = ocean_volume_crs_t(:,:,:) * facvol_t(:,:,:)*tmask_crs(:,:,:) 
     240      ! 
     241      r1_bt_crs(:,:,:) = 0._wp 
     242      WHERE( bt_crs /= 0._wp ) r1_bt_crs(:,:,:) = 1._wp / bt_crs(:,:,:) 
     243 
     244      CALL crs_dom_facvol( tmask, 'W', e1t, e2t, zfse3w, ocean_volume_crs_w, facvol_w ) 
     245 
     246#endif 
     247 
    198248      !  Temperature 
    199249      zt(:,:,:) = tsn(:,:,:,jp_tem)  ;      zt_crs(:,:,:) = 0._wp 
     
    214264      !  U-velocity 
    215265      CALL crs_dom_ope( un, 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=zfse3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 
    216       un_crs(:,:,:) = un_crs(:,:,:)*umask_crs(:,:,:) 
     266      un_crs(:,:,:) = un_crs(:,:,:)*umask_crs(:,:,:) !cbr utile ?????????????????? 
    217267      CALL iom_put( "uoce"  , un_crs )   ! i-current  
    218268 
    219269      !  V-velocity 
    220270      CALL crs_dom_ope( vn, 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=zfse3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 
    221       vn_crs(:,:,:) = vn_crs(:,:,:)*vmask_crs(:,:,:) 
     271      vn_crs(:,:,:) = vn_crs(:,:,:)*vmask_crs(:,:,:) !cbr utile ?????????????????? 
    222272      CALL iom_put( "voce"  , vn_crs )   ! i-current  
     273 
     274      !n2 
     275      CALL crs_dom_ope( rn2 , 'VOL', 'W', tmask, rn2_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 
    223276      
    224277      !  Horizontal divergence ( following OPA_SRC/DYN/divcur.F90 )  
    225278      hdivn_crs(:,:,:)=0._wp 
    226  
    227279      DO jk = 1, jpkm1 
    228280         DO jj = 2,jpj_crs 
     
    268320      CALL iom_put( "avt", avt_crs )   !  Kz 
    269321      
    270       CALL crs_dom_ope( sshn , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=zfse3t         , psgn=1.0 )   
     322      !2D fields 
    271323      CALL crs_dom_ope( utau , 'SUM', 'U', umask, utau_crs , p_e12=e2u  , p_surf_crs=e2u_crs  , psgn=1.0 ) 
    272324      CALL crs_dom_ope( vtau , 'SUM', 'V', vmask, vtau_crs , p_e12=e1v  , p_surf_crs=e1v_crs  , psgn=1.0 ) 
     
    279331      CALL crs_dom_ope( gdepw_0, 'MAX', 'W', tmask, gdepw_0_crs, p_e3=zfse3w, psgn=1.0 ) 
    280332#endif 
    281  
    282       CALL crs_dom_ope( emp  , 'SUM', 'T', tmask, emp_crs  , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    283  
     333      CALL crs_dom_ope( emp   ,'SUM', 'T', tmask, emp_crs   , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    284334      CALL crs_dom_ope( fmmflx,'SUM', 'T', tmask, fmmflx_crs, p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    285       CALL crs_dom_ope( sfx  , 'SUM', 'T', tmask, sfx_crs  , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    286       CALL crs_dom_ope( fr_i , 'SUM', 'T', tmask, fr_i_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
     335      CALL crs_dom_ope( sfx   ,'SUM', 'T', tmask, sfx_crs   , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
     336      CALL crs_dom_ope( fr_i  ,'SUM', 'T', tmask, fr_i_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 ) 
    287337 
    288338      z2d=REAL(nmln,wp) 
     
    291341      nmln_crs=MAX(nlb10,nmln_crs)     
    292342 
    293       CALL iom_put( "ssh"      , sshn_crs )   ! ssh output  
    294343      CALL iom_put( "utau"     , utau_crs )   ! i-tau output  
    295344      CALL iom_put( "vtau"     , vtau_crs )   ! j-tau output  
     
    301350      CALL iom_put( "ice_cover", fr_i_crs )   ! ice cover output  
    302351 
    303 #if defined key_vvl 
    304      !--------------------------------------------------------------------------------------------------- 
    305      !variables au temps after 
    306      !--------------------------------------------------------------------------------------------------- 
    307  
    308      zfse3t(:,:,:) = 1._wp 
    309      zt(:,:,:) = tmask(:,:,:) 
    310      ssha(:,:) = ssha(:,:) * tmask(:,:,1) 
    311      CALL crs_dom_ope( ssha , 'VOL', 'T', zt, ssha_crs , p_e12=e1e2t,  p_e3=zfse3t , psgn=1.0 ) 
    312      CALL crs_lbc_lnk( ssha_crs, 'T', 1.0 ) !!!!!!!!!!!!!!!!!!! pas utile !!!!!!!!!!!!!!!!!!!!!!!!! 
    313  
    314      zfse3t(:,:,:) = e3t_a(:,:,:) 
    315      zfse3u(:,:,:) = e3u_a(:,:,:) 
    316      zfse3v(:,:,:) = e3v_a(:,:,:) 
    317      CALL dom_vvl_interpol( zfse3t(:,:,:), zfse3w(:,:,:), 'W'   ) 
    318  
    319      CALL crs_dom_sfc( umask, 'U', zt_crs, zs_crs, p_e2=e2u, p_e3=zfse3u ) ! zt_crs=e2e3u_crs,zs_crs=e2e3u_msk 
    320      CALL crs_dom_sfc( vmask, 'V', zt_crs, zs_crs, p_e1=e2v, p_e3=zfse3v ) ! zt_crs=e1e3v_crs,zs_crs=e1e3v_msk 
    321      CALL crs_dom_e3( e1t, e2t, zfse3t, p_sfc_3d_crs=e1e2w_crs, cd_type='T', p_mask=tmask, p_e3_crs=e3t_a_crs, p_e3_max_crs=zs_crs) 
    322      CALL crs_dom_e3( e1t, e2t, zfse3w, p_sfc_3d_crs=e1e2w_crs, cd_type='W', p_mask=tmask, p_e3_crs=e3w_a_crs, p_e3_max_crs=zs_crs) 
    323      CALL crs_dom_e3( e1u, e2u, zfse3u, p_sfc_2d_crs=e2u_crs  , cd_type='U', p_mask=umask, p_e3_crs=e3u_a_crs, p_e3_max_crs=zs_crs) 
    324      CALL crs_dom_e3( e1v, e2v, zfse3v, p_sfc_2d_crs=e1v_crs  , cd_type='V', p_mask=vmask, p_e3_crs=e3v_a_crs, p_e3_max_crs=zs_crs) 
    325  
    326  
    327      DO jk = 1, jpk 
    328         DO ji = 1, jpi_crs 
    329            DO jj = 1, jpj_crs 
    330               IF( e3t_a_crs(ji,jj,jk) == 0._wp ) e3t_a_crs(ji,jj,jk) = e3t_1d(jk) 
    331               IF( e3w_a_crs(ji,jj,jk) == 0._wp ) e3w_a_crs(ji,jj,jk) = e3w_1d(jk) 
    332               IF( e3u_a_crs(ji,jj,jk) == 0._wp ) e3u_a_crs(ji,jj,jk) = e3t_1d(jk) 
    333               IF( e3v_a_crs(ji,jj,jk) == 0._wp ) e3v_a_crs(ji,jj,jk) = e3t_1d(jk) 
    334            ENDDO 
    335        ENDDO 
    336      ENDDO 
    337  
    338      !zt_crs=ocean_volume_crs_t ; zs_crs=facvol_t after time !!! 
    339      CALL crs_dom_facvol( tmask, 'T', e1t, e2t, zfse3t, zt_crs, zs_crs ) 
     352      zfse3t(:,:,:) = 1._wp 
     353      CALL crs_dom_ope( sshn , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=zfse3t         , psgn=1.0 )   
     354      CALL iom_put( "ssh"      , sshn_crs )   ! ssh output  
     355 
     356      zmin=MINVAL(emp);zmax=MAXVAL(emp);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld emp",zmin,zmax  
     357      zmin=MINVAL(emp_b);zmax=MAXVAL(emp_b);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld emp_b",zmin,zmax  
     358      zmin=MINVAL(emp_crs);zmax=MAXVAL(emp_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld emp_crs",zmin,zmax  
     359      zmin=MINVAL(emp_b_crs);zmax=MAXVAL(emp_b_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld emp_b_crs",zmin,zmax  
     360 
     361#if defined key_vvl 
     362      !--------------------------------------------------------------------------------------------------- 
     363      !variables au temps after 
     364      !--------------------------------------------------------------------------------------------------- 
     365 
     366      !cbr ssha_crs utile ?????????????????? 
     367      zfse3t(:,:,:) = 1._wp 
     368      zt(:,:,:) = tmask(:,:,:) 
     369      ssha(:,:) = ssha(:,:) * tmask(:,:,1)  !cbr utile ?????????????????? 
     370      CALL crs_dom_ope( ssha , 'VOL', 'T', zt, ssha_crs , p_e12=e1e2t,  p_e3=zfse3t , psgn=1.0 ) 
     371      !CALL crs_lbc_lnk( ssha_crs, 'T', 1.0 ) !!!!!!!!!!!!!!!!!!! pas utile !!!!!!!!!!!!!!!!!!!!!!!!! 
     372 
     373 
     374      zfse3t(:,:,:) = e3t_a(:,:,:) 
     375      zfse3u(:,:,:) = e3u_a(:,:,:) 
     376      zfse3v(:,:,:) = e3v_a(:,:,:) 
     377      CALL dom_vvl_interpol( zfse3t(:,:,:), zfse3w(:,:,:), 'W'   ) 
     378 
     379      CALL crs_dom_e3( e1t, e2t, zfse3t, p_sfc_3d_crs=e1e2w_crs, cd_type='T', p_mask=tmask, p_e3_crs=e3t_a_crs, p_e3_max_crs=zs_crs) 
     380      CALL crs_dom_e3( e1t, e2t, zfse3w, p_sfc_3d_crs=e1e2w_crs, cd_type='W', p_mask=tmask, p_e3_crs=e3w_a_crs, p_e3_max_crs=zs_crs) 
     381      CALL crs_dom_e3( e1u, e2u, zfse3u, p_sfc_2d_crs=e2u_crs  , cd_type='U', p_mask=umask, p_e3_crs=e3u_a_crs, p_e3_max_crs=zs_crs) 
     382      CALL crs_dom_e3( e1v, e2v, zfse3v, p_sfc_2d_crs=e1v_crs  , cd_type='V', p_mask=vmask, p_e3_crs=e3v_a_crs, p_e3_max_crs=zs_crs) 
     383 
     384 
     385      !DO ji=1,jpi_crs 
     386      !   DO jj=1,jpj_crs 
     387      !      fse3t_a_crs(ji,jj,jk),fse3t_b_crs(ji,jj,jk)+fse3t_n_crs(ji,jj,jk)*(ssha_crs(ji,jj)-sshb_crs(ji,jj))/(ht_0_crs(ji,jj)+sshn_crs(ji,jj)) 
     388      !   ENDDO 
     389      !ENDDO 
     390      !CALL dom_vvl_interpol_crs( fse3t_a_crs(:,:,:), fse3u_a(:,:,:), 'U' ) 
     391      !CALL dom_vvl_interpol_crs( fse3t_a_crs(:,:,:), fse3v_a(:,:,:), 'V' ) 
     392      !CALL dom_vvl_interpol_crs( fse3t_a_crs(:,:,:), fse3w_a(:,:,:), 'W' ) 
     393 
     394      !CALL crs_dom_sfc( umask, 'U', zt_crs, zs_crs, p_e2=e2u, p_e3=zfse3u ) ! zt_crs=e2e3u_crs,zs_crs=e2e3u_msk ça sert à quoi ??????????????????????????????????????????? 
     395      !CALL crs_dom_sfc( vmask, 'V', zt_crs, zs_crs, p_e1=e2v, p_e3=zfse3v ) ! zt_crs=e1e3v_crs,zs_crs=e1e3v_msk ça sert à quoi ??????????????????????????????????????????? 
     396 
     397      DO jk = 1, jpk 
     398         DO ji = 1, jpi_crs 
     399            DO jj = 1, jpj_crs 
     400               IF( e3t_a_crs(ji,jj,jk) == 0._wp ) e3t_a_crs(ji,jj,jk) = e3t_1d(jk) 
     401               IF( e3w_a_crs(ji,jj,jk) == 0._wp ) e3w_a_crs(ji,jj,jk) = e3w_1d(jk) 
     402               IF( e3u_a_crs(ji,jj,jk) == 0._wp ) e3u_a_crs(ji,jj,jk) = e3t_1d(jk) 
     403               IF( e3v_a_crs(ji,jj,jk) == 0._wp ) e3v_a_crs(ji,jj,jk) = e3t_1d(jk) 
     404            ENDDO 
     405        ENDDO 
     406      ENDDO 
     407 
     408      zmin=MINVAL(e3t_b);zmax=MAXVAL(e3t_b);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_b",zmin,zmax  
     409      zmin=MINVAL(e3t_n);zmax=MAXVAL(e3t_n);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_n",zmin,zmax  
     410      zmin=MINVAL(e3t_a);zmax=MAXVAL(e3t_a);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_a",zmin,zmax  
     411      zmin=MINVAL(e3t_b_crs);zmax=MAXVAL(e3t_b_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_b_crs",zmin,zmax  
     412      zmin=MINVAL(e3t_n_crs);zmax=MAXVAL(e3t_n_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_n_crs",zmin,zmax  
     413      zmin=MINVAL(e3t_a_crs);zmax=MAXVAL(e3t_a_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_a_crs",zmin,zmax  
     414      zmin=MINVAL(sshb);zmax=MAXVAL(sshb);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshb",zmin,zmax  
     415      zmin=MINVAL(sshn);zmax=MAXVAL(sshn);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshn",zmin,zmax  
     416      zmin=MINVAL(ssha);zmax=MAXVAL(ssha);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ssha",zmin,zmax  
     417      zmin=MINVAL(sshb_crs);zmax=MAXVAL(sshb_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshb_crs",zmin,zmax  
     418      zmin=MINVAL(sshn_crs);zmax=MAXVAL(sshn_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshn_crs",zmin,zmax  
     419      zmin=MINVAL(ssha_crs);zmax=MAXVAL(ssha_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ssha_crs",zmin,zmax  
     420 
     421      !zt_crs=ocean_volume_crs_t ; zs_crs=facvol_t after time !!! ça sert à quoi ??????????????????????????????????????????? 
     422      CALL crs_dom_facvol( tmask, 'T', e1t, e2t, zfse3t, zt_crs, zs_crs ) 
    340423 
    341424#endif 
     
    349432               &                          + z1_2dt * e1e2w_crs(:,:,jk) * ( e3t_a_crs(:,:,jk) - e3t_b_crs(:,:,jk) ) ) * tmask_crs(:,:,jk) 
    350433         WHERE( e1e2w_msk(:,:,jk) .NE. 0._wp )  wn_crs(:,:,jk) =  wn_crs(:,:,jk) /e1e2w_msk(:,:,jk) 
     434 
     435 
    351436      ENDDO 
    352437#else 
     
    363448#endif 
    364449      CALL crs_lbc_lnk( wn_crs, 'W', 1.0 )   !!!!!!!pas utile, nan ?????????????????????? 
    365       wn_crs(:,:,:) = wn_crs(:,:,:) * tmask_crs(:,:,:) 
     450      wn_crs(:,:,:) = wn_crs(:,:,:) * tmask_crs(:,:,:)   !!!!!!!pas utile, nan ?????????????????????? 
     451 
    366452      CALL iom_put( "woce", wn_crs  )   ! vertical velocity 
    367453 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90

    r6797 r7207  
    201201     CALL crs_dom_sfc( vmask, 'V', e1e3v_crs, e1e3v_msk, p_e1=e1v, p_e3=zfse3v ) 
    202202 
     203     !cbr utile ???????????????????????????????? 
    203204     DO jk=1,jpk 
    204205        DO ji=1,jpi_crs 
     
    221222     CALL crs_dom_e3( e1u, e2u, zfse3u, p_sfc_2d_crs=e2u_crs  , cd_type='U', p_mask=umask, p_e3_crs=e3u_0_crs, p_e3_max_crs=e3u_max_0_crs) 
    222223     CALL crs_dom_e3( e1v, e2v, zfse3v, p_sfc_2d_crs=e1v_crs  , cd_type='V', p_mask=vmask, p_e3_crs=e3v_0_crs, p_e3_max_crs=e3v_max_0_crs) 
     224 
    223225     WHERE(e3t_max_0_crs == 0._wp) e3t_max_0_crs=r_inf 
    224226     WHERE(e3u_max_0_crs == 0._wp) e3u_max_0_crs=r_inf 
     
    257259     ENDDO 
    258260 
     261!cbr utile ???????? on le fait ds crsfld, nan ? 
    259262#if defined key_vvl 
    260263     e3t_b_crs(:,:,:) = e3t_0_crs(:,:,:) 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl_crs.F90

    r6772 r7207  
    8989      ! depth of the mixing and mixed layers 
    9090      hmld_crs(:,:) = 0._wp 
     91      hmlp_crs(:,:) = 0._wp 
    9192      hmlpt_crs(:,:) = 0._wp 
    9293      DO jj = 1, jpj_crs 
     
    9495            iiki = imld(ji,jj) 
    9596            iikn = nmln_crs(ji,jj) 
    96             hmld_crs (ji,jj) = ( fsdepw_crs(ji,jj,iiki  ) - fsdepw_crs(ji,jj,1    )  ) * tmask_crs(ji,jj,1)    ! Turbocline depth  
    97             hmlp_crs (ji,jj) = ( fsdepw_crs(ji,jj,iikn  ) - fsdepw_crs(ji,jj,nla10)  ) * tmask_crs(ji,jj,1)    ! Mixed layer depth 
    98             hmlpt_crs(ji,jj) = ( fsdept_crs(ji,jj,iikn-1) - fsdepw_crs(ji,jj,1    )  ) * tmask_crs(ji,jj,1)    ! depth of the last T-point inside the mixed layer 
     97            IF(iiki   .NE. 0 ) hmld_crs (ji,jj) = ( fsdepw_crs(ji,jj,iiki  ) - fsdepw_crs(ji,jj,1    )  ) * tmask_crs(ji,jj,1)    ! Turbocline depth  
     98            IF(iikn   .NE. 0 ) hmlp_crs (ji,jj) = ( fsdepw_crs(ji,jj,iikn  ) - fsdepw_crs(ji,jj,nla10)  ) * tmask_crs(ji,jj,1)    ! Mixed layer depth 
     99            IF(iikn-1 .NE. 0 ) hmlpt_crs(ji,jj) = ( fsdept_crs(ji,jj,iikn-1) - fsdepw_crs(ji,jj,1    )  ) * tmask_crs(ji,jj,1)    ! depth of the last T-point inside the mixed layer 
    99100         END DO 
    100101      END DO 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90

    r6772 r7207  
    154154   IF(lwp)WRITE(numout,*)"trctrp a ",kt,i,zmin,zmax    
    155155 
     156   DO ji=1,jpi 
     157   DO jj=1,jpj 
     158   DO jk=1,jpk 
     159   IF( ieee_is_nan(tra(ji,jj,jk,1)))WRITE(narea+200,*)"test nan a",kt,i,ji,jj,jk,tmask(ji,jj,jk) 
     160   IF( ieee_is_nan(trn(ji,jj,jk,1)))WRITE(narea+200,*)"test nan n",kt,i,ji,jj,jk,tmask(ji,jj,jk) 
     161   IF( ieee_is_nan(trb(ji,jj,jk,1)))WRITE(narea+200,*)"test nan b",kt,i,ji,jj,jk,tmask(ji,jj,jk) 
     162   ENDDO 
     163   ENDDO 
     164   ENDDO 
     165 
    156166   END SUBROUTINE test 
    157167#else 
Note: See TracChangeset for help on using the changeset viewer.