Changeset 7217 for branches/2015/dev_r5003_MERCATOR6_CRS
- Timestamp:
- 2016-11-09T21:27:33+01:00 (8 years ago)
- Location:
- branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OFF_SRC/domrea.F90
r5602 r7217 125 125 NAMELIST/namdom/ nn_bathy , rn_bathy, rn_e3zps_min, rn_e3zps_rat, nn_msh , rn_hmin, & 126 126 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & 127 & rn_rdtmax, rn_rdth , nn_baro , nn_closea , ln_crs,&127 & rn_rdtmax, rn_rdth , nn_baro , nn_closea , & 128 128 & jphgr_msh, & 129 129 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90
r5602 r7217 45 45 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 46 46 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & 47 & rn_rdtmax, rn_rdth , nn_closea , ln_crs,&47 & rn_rdtmax, rn_rdth , nn_closea , & 48 48 & jphgr_msh, & 49 49 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/CRS/crs.F90
r7215 r7217 139 139 INTEGER :: nn_factx = 3 !: reduction factor of x-dimension of the parent grid 140 140 INTEGER :: nn_facty = 3 !: reduction factor of y-dimension of the parent grid 141 INTEGER :: nn_binref = 0 !: 0 = binning starts north fold (equator could be asymmetric)142 141 !: 1 = binning centers at equator (north fold my have artifacts) 143 142 !: for even reduction factors, equator placed in bin biased south -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/CRS/crsdom.F90
r7215 r7217 5 5 !! higher-resolution grid for the coarse grid. 6 6 !! 7 !! Method: Given the user-defined reduction factor, 8 !! the averaging bins are set: 9 !! - nn_binref = 0, starting from the north 10 !! to the south in the model interior domain, 11 !! in this way the north fold and redundant halo cells 12 !! could be handled in a consistent manner and 13 !! the irregularities of bin size can be handled 14 !! more naturally by the presence of land 15 !! in the southern boundary. Thus the southernmost bin 16 !! could be of an irregular bin size. 17 !! Information on the parent grid is retained, specifically, 18 !! each coarse grid cell's volume and ocean surface 19 !! at the faces, relative to the parent grid. 20 !! - nn_binref = 1 (not yet available), starting 21 !! at a centralized bin at the equator, being only 22 !! truly centered for odd-numbered j-direction reduction 23 !! factors. 7 !! Method: 8 24 9 !! References: Aumont, O., J.C. Orr, D. Jamous, P. Monfray 25 10 !! O. Marti and G. Madec, 1998. A degradation -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90
r7215 r7217 99 99 100 100 !--------------------------------------------------------------------------------------------------- 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(:,:,:) 101 !scale factors: before and now 102 !--------------------------------------------------------------------------------------------------- 103 #if defined key_vvl 112 104 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_crs116 117 105 118 106 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) 107 zfse3t(:,:,:) = e3t_b(:,:,:) 108 zfse3u(:,:,:) = e3u_b(:,:,:) 109 zfse3v(:,:,:) = e3v_b(:,:,:) 110 zfse3w(:,:,:) = e3w_b(:,:,:) 111 112 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) 113 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) 114 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) 115 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) 116 117 DO jk = 1, jpk 118 DO ji = 1, jpi_crs 119 DO jj = 1, jpj_crs 120 IF( e3t_b_crs(ji,jj,jk) == 0._wp ) e3t_b_crs(ji,jj,jk) = e3t_1d(jk) 121 IF( e3w_b_crs(ji,jj,jk) == 0._wp ) e3w_b_crs(ji,jj,jk) = e3w_1d(jk) 122 IF( e3u_b_crs(ji,jj,jk) == 0._wp ) e3u_b_crs(ji,jj,jk) = e3t_1d(jk) 123 IF( e3v_b_crs(ji,jj,jk) == 0._wp ) e3v_b_crs(ji,jj,jk) = e3t_1d(jk) 124 ENDDO 134 125 ENDDO 135 ENDDO 136 ENDDO 137 138 e3t_n_crs(:,:,:) = e3t_a_crs(:,:,:) 139 e3u_n_crs(:,:,:) = e3u_a_crs(:,:,:) 140 e3v_n_crs(:,:,:) = e3v_a_crs(:,:,:) 141 e3w_n_crs(:,:,:) = e3w_a_crs(:,:,:) 126 ENDDO 127 128 e3t_n_crs(:,:,:) = e3t_a_crs(:,:,:) 129 e3u_n_crs(:,:,:) = e3u_a_crs(:,:,:) 130 e3v_n_crs(:,:,:) = e3v_a_crs(:,:,:) 131 e3w_n_crs(:,:,:) = e3w_a_crs(:,:,:) 142 132 143 133 ENDIF … … 158 148 #endif 159 149 160 !zmin=MINVAL();zmax=MAXVAL();CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ",zmin,zmax161 !zmin=MINVAL();zmax=MAXVAL();CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ",zmin,zmax162 163 150 IF( kt /= nit000 )THEN 164 151 emp_b_crs(:,:) = emp_crs(:,:) 165 152 rnf_b_crs(:,:) = rnf_crs(:,:) 166 hdivb_crs(:,:,:) = hdivn_crs(:,:,:) !cbr hdivb_crs pas utile ?????????????????????????????????153 hdivb_crs(:,:,:) = hdivn_crs(:,:,:) 167 154 ELSE 168 155 emp_b_crs(:,: ) = 0._wp 169 156 rnf_b_crs(:,: ) = 0._wp 170 hdivb_crs(:,:,: ) = 0._wp !cbr hdivb_crs pas utile ?????????????????????????????????157 hdivb_crs(:,:,: ) = 0._wp 171 158 ENDIF 172 159 … … 181 168 tsb_crs(:,:,:,jp_sal) = zs_crs(:,:,:) 182 169 183 ! U-velocity !cb pas utile ?????????????????????????????????170 ! U-velocity 184 171 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 172 186 ! V-velocity pas utile ?????????????????????????????????173 ! V-velocity 187 174 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 175 … … 190 177 CALL crs_dom_ope( rn2b, 'VOL', 'W', tmask, rb2_crs, p_e12=e1e2t, p_e3=zfse3t, psgn=1.0 ) 191 178 192 !ssh !cbr pas utile ??????????????????????????????????????179 !ssh 193 180 zfse3t(:,:,:) = 1._wp 194 181 CALL crs_dom_ope( sshb , 'VOL', 'T', tmask, sshb_crs , p_e12=e1e2t, p_e3=zfse3t , psgn=1.0 ) 195 182 196 183 !--------------------------------------------------------------------------------------------------- 197 !variables domaine au temps now:184 !variables at now time : 198 185 !--------------------------------------------------------------------------------------------------- 199 186 #if defined key_vvl … … 214 201 215 202 #if defined key_vvl 203 204 ! surfaces 216 205 CALL crs_dom_sfc( umask, 'U', e2e3u_crs, e2e3u_msk, p_e2=e2u, p_e3=zfse3u ) 217 206 CALL crs_dom_sfc( vmask, 'V', e1e3v_crs, e1e3v_msk, p_e1=e1v, p_e3=zfse3v ) … … 220 209 CALL iom_put("e1e3v_crs",e1e3v_crs) 221 210 CALL iom_put("e1e3v_msk",e1e3v_msk) 222 ! 211 212 ! vertical scale factors 223 213 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 214 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) … … 226 216 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 217 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 218 !cbr ??????????????????? faut pas mettre le profile 1d plutot ??????????? 219 WHERE(e3t_max_n_crs == 0._wp) e3t_max_n_crs=r_inf 220 WHERE(e3u_max_n_crs == 0._wp) e3u_max_n_crs=r_inf 221 WHERE(e3v_max_n_crs == 0._wp) e3v_max_n_crs=r_inf 222 WHERE(e3w_max_n_crs == 0._wp) e3w_max_n_crs=r_inf 223 224 ! depth 233 225 CALL crs_dom_ope( gdepw_n, 'MAX', 'T', tmask, gdept_n_crs, p_e3=zfse3t, psgn=1.0 ) 234 226 CALL crs_dom_ope( gdepw_n, 'MAX', 'W', tmask, gdepw_n_crs, p_e3=zfse3w, psgn=1.0 ) 235 227 228 ! volume and facvol 236 229 CALL crs_dom_facvol( tmask, 'T', e1t, e2t, zfse3t, ocean_volume_crs_t, facvol_t ) 237 230 CALL iom_put("cvol_crs_t",ocean_volume_crs_t) … … 306 299 CASE ( 4 ) 307 300 CALL crs_dom_ope( avt, 'MED', 'W', tmask, avt_crs, p_e12=e1e2t, p_e3=zfse3w, psgn=1.0 ) 308 CASE ( 5 )309 #if defined key_zdftke310 CALL crs_dom_ope( en , 'VOL', 'W', tmask, en_crs , p_e12=e1e2t, p_e3=zfse3w , psgn=1.0 )311 CALL crs_dom_ope( taum , 'SUM', 'T', tmask, taum_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0 )312 CALL crs_dom_ope( rn2(:,:,:), 'VOL', 'W', tmask, rn2_crs , p_e12=e1e2t, p_e3=zfse3t , psgn=1.0 )313 IF( kt==nit000 )CALL tke_avn_ini_crs314 CALL tke_avn_crs315 CALL zdf_evd_crs(kt)316 #endif317 318 301 END SELECT 319 302 ! … … 354 337 CALL iom_put( "ssh" , sshn_crs ) ! ssh output 355 338 356 zmin=MINVAL(emp);zmax=MAXVAL(emp);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld emp",zmin,zmax357 zmin=MINVAL(emp_b);zmax=MAXVAL(emp_b);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld emp_b",zmin,zmax358 zmin=MINVAL(emp_crs);zmax=MAXVAL(emp_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld emp_crs",zmin,zmax359 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,zmax360 339 361 340 #if defined key_vvl … … 364 343 !--------------------------------------------------------------------------------------------------- 365 344 366 ! cbr ssha_crs utile ??????????????????345 !ssha 367 346 zfse3t(:,:,:) = 1._wp 368 347 zt(:,:,:) = tmask(:,:,:) 369 348 ssha(:,:) = ssha(:,:) * tmask(:,:,1) !cbr utile ?????????????????? 370 349 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 350 351 !vertical scale factors 374 352 zfse3t(:,:,:) = e3t_a(:,:,:) 375 353 zfse3u(:,:,:) = e3u_a(:,:,:) … … 381 359 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 360 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_crs386 ! DO jj=1,jpj_crs387 ! 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 ! ENDDO389 !ENDDO390 !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 361 397 362 DO jk = 1, jpk … … 405 370 ENDDO 406 371 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,zmax409 zmin=MINVAL(e3t_n);zmax=MAXVAL(e3t_n);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_n",zmin,zmax410 zmin=MINVAL(e3t_a);zmax=MAXVAL(e3t_a);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld e3t_a",zmin,zmax411 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,zmax412 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,zmax413 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,zmax414 zmin=MINVAL(sshb);zmax=MAXVAL(sshb);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshb",zmin,zmax415 zmin=MINVAL(sshn);zmax=MAXVAL(sshn);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshn",zmin,zmax416 zmin=MINVAL(ssha);zmax=MAXVAL(ssha);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ssha",zmin,zmax417 zmin=MINVAL(sshb_crs);zmax=MAXVAL(sshb_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshb_crs",zmin,zmax418 zmin=MINVAL(sshn_crs);zmax=MAXVAL(sshn_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld sshn_crs",zmin,zmax419 zmin=MINVAL(ssha_crs);zmax=MAXVAL(ssha_crs);CALL mpp_min(zmin);CALL mpp_max(zmax);IF(lwp)WRITE(numout,*)"crsfld ssha_crs",zmin,zmax420 372 421 373 !zt_crs=ocean_volume_crs_t ; zs_crs=facvol_t after time !!! ça sert à quoi ??????????????????????????????????????????? -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90
r7215 r7217 73 73 REAL(wp), DIMENSION(:,:,:), POINTER :: zfse3t, zfse3u, zfse3v, zfse3w 74 74 75 NAMELIST/namcrs/ nn_factx, nn_facty, nn_ binref, nn_msh_crs, nn_crs_kz, ln_crs_wn, ln_crs_top75 NAMELIST/namcrs/ nn_factx, nn_facty, nn_msh_crs, nn_crs_kz, ln_crs_wn, ln_crs_top 76 76 !!---------------------------------------------------------------------- 77 77 ! … … 102 102 WRITE(numout,*) ' coarsening factor in i-direction nn_factx = ', nn_factx 103 103 WRITE(numout,*) ' coarsening factor in j-direction nn_facty = ', nn_facty 104 WRITE(numout,*) ' bin centering preference nn_binref = ', nn_binref105 104 WRITE(numout,*) ' create (=1) a mesh file or not (=0) nn_msh_crs = ', nn_msh_crs 106 105 WRITE(numout,*) ' type of Kz coarsening (0,1,2) nn_crs_kz = ', nn_crs_kz … … 113 112 CASE ( 3 ) ; WRITE(numout,*) ' coarsene KZ with MEANLOG(KZ)' 114 113 CASE ( 4 ) ; WRITE(numout,*) ' coarsene KZ with MEDIANE(KZ)' 115 CASE ( 5 ) ; WRITE(numout,*) ' coarsene KZ with TKE coarsening'116 114 END SELECT 117 115 ENDIF … … 129 127 ! 3. Mask and Mesh 130 128 !--------------------------------------------------------- 131 132 ! Set up the masks and meshes133 129 134 130 ! 3.a. Get the masks … … 201 197 CALL crs_dom_sfc( vmask, 'V', e1e3v_crs, e1e3v_msk, p_e1=e1v, p_e3=zfse3v ) 202 198 203 !cbr utile ????????????????????????????????204 199 DO jk=1,jpk 205 200 DO ji=1,jpi_crs … … 259 254 ENDDO 260 255 261 !cbr utile ???????? on le fait ds crsfld, nan ?262 256 #if defined key_vvl 263 257 e3t_b_crs(:,:,:) = e3t_0_crs(:,:,:) -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r5602 r7217 43 43 INTEGER , PUBLIC :: nn_closea !: =0 suppress closed sea/lake from the ORCA domain or not (=1) 44 44 INTEGER , PUBLIC :: nn_euler !: =0 start with forward time step or not (=1) 45 LOGICAL , PUBLIC :: ln_crs !: Apply grid coarsening to dynamical model output or online passive tracers46 45 47 46 !! Time splitting parameters … … 314 313 315 314 !!---------------------------------------------------------------------- 315 !! coarsening for output and/or BCG 316 !!---------------------------------------------------------------------- 317 #if defined key_crs 318 LOGICAL, PUBLIC, PARAMETER :: lk_crs = .TRUE. !: crs flag 319 #else 320 LOGICAL, PUBLIC, PARAMETER :: lk_crs = .FALSE. !: crs flag 321 #endif 322 323 !!---------------------------------------------------------------------- 316 324 !! NEMO/OPA 4.0 , NEMO Consortium (2011) 317 325 !! $Id$ -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r5602 r7217 141 141 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 142 142 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & 143 & rn_rdtmax, rn_rdth , nn_closea , ln_crs,&143 & rn_rdtmax, rn_rdth , nn_closea , & 144 144 & jphgr_msh, & 145 145 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & … … 273 273 WRITE(numout,*) ' depth of transition rn_rdth = ', rn_rdth 274 274 WRITE(numout,*) ' suppression of closed seas (=0) nn_closea = ', nn_closea 275 WRITE(numout,*) ' online coarsening of dynamical fields ln_crs = ', ln_crs276 275 WRITE(numout,*) ' type of horizontal mesh jphgr_msh = ', jphgr_msh 277 276 WRITE(numout,*) ' longitude of first raw and column T-point ppglam0 = ', ppglam0 -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r6101 r7217 22 22 gphiv, gphif, & 23 23 agrif_root, agrif_cfixed, lk_agrif, & 24 rdt,rdttra, gdept_0, ln_crs,gdepw_0, adatrj, fjulday, &24 rdt,rdttra, gdept_0, gdepw_0, adatrj, fjulday, & 25 25 mikt 26 26 -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r7204 r7217 395 395 IF( ln_ctl ) CALL prt_ctl_init ! Print control 396 396 397 IF( l n_crs ) CALL crs_init ! Domain initialization of coarsened grid397 IF( lk_crs ) CALL crs_init ! Domain initialization of coarsened grid 398 398 399 399 CALL istate_init ! ocean initial state (Dynamics and tracers) … … 410 410 CALL dyn_nept_init ! simplified form of Neptune effect 411 411 ! 412 IF( l n_crs ) CALL eos_init_crs ! Equation of state412 IF( lk_crs ) CALL eos_init_crs ! Equation of state 413 413 ! 414 414 ! Ocean physics -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/step.F90
r7204 r7217 93 93 ! must be done after nemo_init for AGRIF+XIOS+OASIS 94 94 CALL iom_init( cxios_context ) ! iom_put initialization 95 IF( l n_crs ) CALL iom_init( TRIM(cxios_context)//"_crs" ) ! initialize context for coarse grid95 IF( lk_crs ) CALL iom_init( TRIM(cxios_context)//"_crs" ) ! initialize context for coarse grid 96 96 ENDIF 97 97 98 98 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 99 99 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell iom we are at time step kstp 100 IF( l n_crs ) CALL iom_setkt( kstp - nit000 + 1, TRIM(cxios_context)//"_crs" ) ! tell iom we are at time step kstp100 IF( lk_crs ) CALL iom_setkt( kstp - nit000 + 1, TRIM(cxios_context)//"_crs" ) ! tell iom we are at time step kstp 101 101 102 102 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 236 236 CALL dia_wri( kstp ) ! ocean model: outputs 237 237 ! 238 IF( l n_crs ) CALL crs_fld( kstp ) ! ocean model: online field coarsening & output238 IF( lk_crs ) CALL crs_fld( kstp ) ! ocean model: online field coarsening & output 239 239 240 240 CALL wrk_alloc( jpi, jpj, jpk, zrhop, zrhd ) … … 249 249 ! Passive Tracer Model 250 250 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 251 IF( l n_crs ) THEN251 IF( lk_crs ) THEN 252 252 CALL dom_grid_crs 253 253 … … 391 391 IF( kstp == nitend .OR. indic < 0 ) THEN 392 392 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 393 IF( l n_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) !393 IF( lk_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 394 394 ENDIF 395 395 #endif -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcwri_my_trc.F90
r6786 r7217 14 14 USE trc ! passive tracers common variables 15 15 USE oce_trc 16 USE crs, ONLY : ln_crs ,ln_crs_top,ahtt_crs,ahtu_crs,ahtv_crs,ahtw_crs,jpi_crs,jpj_crs16 USE crs, ONLY : ln_crs_top !cbr ????,ahtt_crs,ahtu_crs,ahtv_crs,ahtw_crs,jpi_crs,jpj_crs 17 17 USE iom, ONLY : iom_swap, iom_put 18 18 USE ieee_arithmetic -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
r7215 r7217 34 34 USE zpshde ! partial step: hor. derivative (zps_hde routine) 35 35 USE zpshde_crs ! partial step: hor. derivative (zps_hde routine) 36 USE dom_oce , ONLY : ln_ crs, ln_isfcav36 USE dom_oce , ONLY : ln_isfcav 37 37 USE crs , ONLY : jpi_crs,jpj_crs,wn_crs,ln_crs_top,sbc_trc_crs,sbc_trc_b_crs 38 38 USE ldfslp_crs … … 76 76 IF( .NOT. lk_c1d ) THEN 77 77 ! 78 CALL test(kstp,1)79 78 CALL trc_sbc( kstp ) 80 CALL test(kstp,2)81 79 IF( ln_crs_top ) THEN ; CALL trc_bbl_crs( kstp ) 82 80 ELSE ; CALL trc_bbl( kstp ) … … 84 82 IF( ln_trcdmp ) CALL trc_dmp( kstp ) ! internal damping trends 85 83 86 CALL test(kstp,3)87 84 IF( ln_crs_top ) THEN ; CALL trc_adv_crs( kstp ) 88 85 ELSE ; CALL trc_adv( kstp ) 89 86 ENDIF 90 87 91 CALL test(kstp,4)92 88 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kstp ) ! internal damping trends on closed seas only 93 89 IF( ln_crs_top ) THEN ; CALL trc_ldf_crs( kstp ) 94 90 ELSE ; CALL trc_ldf( kstp ) 95 91 ENDIF 96 CALL test(kstp,5)97 92 IF( .NOT. lk_offline .AND. lk_zdfkpp ) & 98 93 & CALL trc_kpp( kstp ) ! KPP non-local tracer fluxes … … 103 98 ELSE ; CALL trc_zdf( kstp ) 104 99 ENDIF 105 CALL test(kstp,6)106 100 107 101 CALL trc_nxt( kstp ) ! tracer fields at next time step 108 CALL test(kstp,10)109 102 IF( ln_trcrad ) CALL trc_rad( kstp ) ! Correct artificial negative concentrations 110 103 … … 140 133 END SUBROUTINE trc_trp 141 134 142 SUBROUTINE test(kt,i)143 INTEGER,INTENT(IN) :: kt,i144 REAL(wp)::zmin,zmax145 INTEGER :: ji,jj,jk146 zmin=MINVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_min(zmin)147 zmax=MAXVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax)148 IF(lwp)WRITE(numout,*)"trctrp b ",kt,i,zmin,zmax149 zmin=MINVAL( trn(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_min(zmin)150 zmax=MAXVAL( trn(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax)151 IF(lwp)WRITE(numout,*)"trctrp n ",kt,i,zmin,zmax152 zmin=MINVAL( tra(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_min(zmin)153 zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax)154 IF(lwp)WRITE(numout,*)"trctrp a ",kt,i,zmin,zmax155 156 DO ji=1,jpi157 DO jj=1,jpj158 DO jk=1,jpk159 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 ENDDO163 ENDDO164 ENDDO165 166 END SUBROUTINE test167 135 #else 168 136 !!---------------------------------------------------------------------- -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r6101 r7217 30 30 USE trcsub ! variables to substep passive tracers 31 31 USE lib_mpp ! distribued memory computing library 32 USE crs , ONLY : ln_crs 32 USE crs , ONLY : ln_crs_top 33 33 USE dom_oce, ONLY : nn_cla, ln_isfcav 34 34 USE trcice ! tracers in sea ice … … 148 148 149 149 tra(:,:,:,:) = 0._wp 150 IF( ln_crs 150 IF( ln_crs_top) THEN 151 151 CALL zps_hde_crs( nit000, jptra, trn, gtru, gtrv ) 152 152 ELSE
Note: See TracChangeset
for help on using the changeset viewer.