- Timestamp:
- 2012-12-12T22:49:39+01:00 (11 years ago)
- Location:
- branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS/crs.F90
r3622 r3735 679 679 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: p_fse3 ! Parent grid vertical level thickness (fse3u, fse3v) 680 680 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: p_pfield ! U or V on parent grid 681 REAL(wp), DIMENSION( :,:,:), INTENT(in), OPTIONAL :: p_surf_crs ! Coarse grid area-weighting denominator681 REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk), INTENT(in), OPTIONAL :: p_surf_crs ! Coarse grid area-weighting denominator 682 682 683 683 REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk), INTENT(out) :: p_cfield3d ! Coarse grid box 3D quantity … … 995 995 IF( nperio /= 0 ) THEN 996 996 IF ( ijpk == 1 ) THEN 997 IF ( PRESENT(p_cfield2d) ) CALL crs_lbc_lnk( cd_type, psgn,pt2d=p_cfield2d )997 IF ( PRESENT(p_cfield2d) ) CALL crs_lbc_lnk( cd_type,zsgn,pt2d=p_cfield2d ) 998 998 ELSE 999 999 IF ( PRESENT(p_cfield3d) ) THEN 1000 CALL crs_lbc_lnk( cd_type, psgn,pt3d1=p_cfield3d )1000 CALL crs_lbc_lnk( cd_type,zsgn,pt3d1=p_cfield3d ) 1001 1001 ENDIF 1002 1002 ENDIF -
branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS/crs_dom.F90
r3727 r3735 56 56 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: e1v_crs, e2v_crs ! horizontal scale factors grid type V 57 57 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: e1f_crs, e2f_crs ! horizontal scale factors grid type F 58 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: e3t_crs, e3u_crs, e3v_crs, e3 w_crs59 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: fse3t_crs, fse3u_crs, fse3v_crs, fse3 w_crs58 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: e3t_crs, e3u_crs, e3v_crs, e3f_crs, e3w_crs 59 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: fse3t_crs, fse3u_crs, fse3v_crs, fse3f_crs, fse3w_crs 60 60 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: fse3t_n_crs, fse3t_b_crs, fse3t_a_crs 61 61 … … 102 102 103 103 ! Physical and dynamical ocean fields for output or passing to TOP, time-mean fields 104 ! REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tsn_crs, tsb_crs, tsa_crs105 !REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: un_crs, vn_crs, wn_crs106 !REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: ut_crs, vt_crs, wt_crs, us_crs, vs_crs, ws_crs107 !REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: rhd_crs, rhop_crs, hdivn_crs108 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: sshb_crs, sshn_crs, ssha_crs109 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: sshun_crs, sshvn_crs, sshfn_crs110 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: sshub_crs, sshvb_crs, sshua_crs, sshva_crs111 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: hu_crs, hv_crs112 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: hdivbt_crs113 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: ssh_b_crs, ssh_a_crs, ssh_un_crs, ssh_vn_crs ! instantaneous fields104 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tsn_crs 105 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: un_crs, vn_crs, wn_crs 106 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: ut_crs, vt_crs, wt_crs, us_crs, vs_crs, ws_crs 107 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: rhd_crs, rhop_crs, hdivn_crs 108 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: sshb_crs, sshn_crs, ssha_crs 109 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: sshun_crs, sshvn_crs, sshfn_crs 110 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: sshub_crs, sshvb_crs, sshua_crs, sshva_crs 111 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: hu_crs, hv_crs 112 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: hdivbt_crs 113 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: ssh_b_crs, ssh_a_crs, ssh_un_crs, ssh_vn_crs ! instantaneous fields 114 114 115 115 116 116 ! 117 117 ! Surface fluxes to pass to TOP 118 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: utau_crs, vtau_crs, wndm_crs, qsr_crs119 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: del_emp_crs, sum_emp_crs120 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: emp_crs, emp_b_crs, emps_crs121 !REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: rnf_crs, fr_i_crs, h_rnf_crs118 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: utau_crs, vtau_crs, wndm_crs, qsr_crs 119 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: del_emp_crs, sum_emp_crs 120 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: emp_crs, emp_b_crs, emps_crs 121 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: rnf_crs, fr_i_crs, h_rnf_crs 122 122 123 123 ! 124 124 ! Lateral diffusivity (tracers) to pass to TOP 125 !REAL(wp) :: rldf_crs, rn_aht_0_crs, aht0_crs, ahtb0_crs126 127 !#if defined key_traldf_c3d128 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: 3D coefficients at T-,U-,V-,W-points129 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: aeiu_crs, aeiv_crs, aeiw_crs130 !#elif defined key_traldf_c2d131 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: 2D coefficients at T-,U-,V-,W-points132 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: aeiu_crs, aeiv_crs, aeiw_crs133 !#elif defined key_traldf_c1d134 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: 1D coefficients at T-,U-,V-,W-points135 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: aeiu_crs, aeiv_crs, aeiw_crs136 !#else137 !REAL(wp), PUBLIC :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: scalar coefficients at T-,U-,V-,W-points138 !#endif125 REAL(wp) :: rldf_crs, rn_aht_0_crs, aht0_crs, ahtb0_crs 126 127 #if defined key_traldf_c3d 128 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: 3D coefficients at T-,U-,V-,W-points 129 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: aeiu_crs, aeiv_crs, aeiw_crs 130 #elif defined key_traldf_c2d 131 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: 2D coefficients at T-,U-,V-,W-points 132 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: aeiu_crs, aeiv_crs, aeiw_crs 133 #elif defined key_traldf_c1d 134 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: 1D coefficients at T-,U-,V-,W-points 135 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: aeiu_crs, aeiv_crs, aeiw_crs 136 #else 137 REAL(wp), PUBLIC :: ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs !: scalar coefficients at T-,U-,V-,W-points 138 #endif 139 139 140 140 141 141 ! Vertical diffusion 142 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avt_crs !: vert. diffusivity coef. [m2/s] at w-point for temp143 !# if defined key_zdfddm144 !REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avs_crs !: salinity vertical diffusivity coeff. [m2/s] at w-point145 !# endif142 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avt_crs !: vert. diffusivity coef. [m2/s] at w-point for temp 143 # if defined key_zdfddm 144 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avs_crs !: salinity vertical diffusivity coeff. [m2/s] at w-point 145 # endif 146 146 147 147 ! Mixing and Mixed Layer Depth 148 !INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: nmln_crs, hmld_crs, hmlp_crs, hmlpt_crs148 INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: nmln_crs, hmld_crs, hmlp_crs, hmlpt_crs 149 149 150 150 ! Direction of lateral diffusion … … 160 160 !!------------------------------------------------------------------- 161 161 !! Local variables 162 INTEGER, DIMENSION(1 0) :: ierr162 INTEGER, DIMENSION(14) :: ierr 163 163 164 164 ierr(:) = 0 … … 190 190 & e3t_crs(jpi_crs,jpj_crs,jpk) , e3w_crs(jpi_crs,jpj_crs,jpk) , & 191 191 & e3u_crs(jpi_crs,jpj_crs,jpk) , e3v_crs(jpi_crs,jpj_crs,jpk) , & 192 & e3f_crs(jpi_crs,jpj_crs,jpk) , fse3f_crs(jpi_crs,jpj_crs,jpk) , & 192 193 & fse3t_b_crs(jpi_crs,jpj_crs,jpk), fse3t_n_crs(jpi_crs,jpj_crs,jpk),& 193 194 & fse3t_a_crs(jpi_crs,jpj_crs,jpk), STAT=ierr(6)) … … 210 211 211 212 212 ! ALLOCATE( un_crs(jpi_crs,jpj_crs,jpk) , vn_crs(jpi_crs,jpj_crs,jpk) , & 213 ! & wn_crs(jpi_crs,jpj_crs,jpk) , & 214 ! & ut_crs(jpi_crs,jpj_crs,jpk) , vt_crs(jpi_crs,jpj_crs,jpk) , & 215 ! & us_crs(jpi_crs,jpj_crs,jpk) , vs_crs(jpi_crs,jpj_crs,jpk) , & 216 ! & wt_crs(jpi_crs,jpj_crs,jpk) , ws_crs(jpi_crs,jpj_crs,jpk) , & 217 ! & rhd_crs(jpi_crs,jpj_crs,jpk) , rhop_crs(jpi_crs,jpj_crs,jpk) , & 218 ! & STAT=ierr(11)) 219 220 ! ALLOCATE( sshb_crs(jpi_crs,jpj_crs) , sshn_crs(jpi_crs,jpj_crs) , & 221 ! & sshun_crs(jpi_crs,jpj_crs) , sshvn_crs(jpi_crs,jpj_crs) , & 222 ! & sshfn_crs(jpi_crs,jpj_crs) , emp_crs(jpi_crs,jpj_crs) , & 223 ! & del_emp_crs(jpi_crs,jpj_crs), sum_emp_crs(jpi_crs,jpj_crs), & 224 ! & emp_b_crs(jpi_crs,jpj_crs) , emps_crs(jpi_crs,jpj_crs) , & 225 ! & ssh_b_crs(jpi_crs,jpj_crs) , ssh_a_crs(jpi_crs,jpj_crs) , & 226 ! & STAT=ierr(12) ) 213 ALLOCATE( un_crs(jpi_crs,jpj_crs,jpk) , vn_crs(jpi_crs,jpj_crs,jpk) , & 214 & wn_crs(jpi_crs,jpj_crs,jpk) , & 215 & ut_crs(jpi_crs,jpj_crs,jpk) , vt_crs(jpi_crs,jpj_crs,jpk) , & 216 & us_crs(jpi_crs,jpj_crs,jpk) , vs_crs(jpi_crs,jpj_crs,jpk) , & 217 & wt_crs(jpi_crs,jpj_crs,jpk) , ws_crs(jpi_crs,jpj_crs,jpk) , & 218 & rhd_crs(jpi_crs,jpj_crs,jpk) , rhop_crs(jpi_crs,jpj_crs,jpk) , & 219 & hdivn_crs(jpi_crs,jpj_crs,jpk), & 220 & STAT=ierr(11)) 221 222 ALLOCATE( sshb_crs(jpi_crs,jpj_crs) , sshn_crs(jpi_crs,jpj_crs) , & 223 & sshun_crs(jpi_crs,jpj_crs) , sshvn_crs(jpi_crs,jpj_crs) , & 224 & sshfn_crs(jpi_crs,jpj_crs) , emp_crs(jpi_crs,jpj_crs) , & 225 & del_emp_crs(jpi_crs,jpj_crs), sum_emp_crs(jpi_crs,jpj_crs), & 226 & emp_b_crs(jpi_crs,jpj_crs) , emps_crs(jpi_crs,jpj_crs) , & 227 & ssh_b_crs(jpi_crs,jpj_crs) , ssh_a_crs(jpi_crs,jpj_crs) , & 228 & ssh_un_crs(jpi_crs,jpj_crs) , ssh_vn_crs(jpi_crs,jpj_crs) , & 229 & STAT=ierr(12) ) 227 230 228 ! ALLOCATE( tsn_crs(jpi_crs,jpj_crs,jpk,jpts) , tsb_crs(jpi_crs,jpj_crs,jpk,jpts) , & 229 ! & tsa_crs(jpi_crs,jpj_crs,jpk,jpts) , STAT=ierr(13) ) 231 ALLOCATE( tsn_crs(jpi_crs,jpj_crs,jpk,jpts), avt_crs(jpi_crs,jpj_crs,jpk), & 232 # if defined key_zdfddm 233 & avs_crs(jpi_crs,jpj_crs,jpk), & 234 # endif 235 & STAT=ierr(13) ) 236 237 ALLOCATE( nmln_crs(jpi_crs,jpj_crs) , hmld_crs(jpi_crs,jpj_crs) , & 238 & hmlp_crs(jpi_crs,jpj_crs) , hmlpt_crs(jpi_crs,jpj_crs) , STAT=ierr(14) ) 230 239 231 240 crs_dom_alloc = MAXVAL(ierr) -
branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90
r3727 r3735 67 67 REAL(wp) :: zrestx, zresty ! for determining odd or even reduction factor 68 68 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zmbk 69 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zfse3t, zfse3u, zfse3v, zfse3w, zfse3t_n, zfse3t_b 69 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zfse3t, zfse3u, zfse3v, zfse3f 70 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zfse3w, zfse3t_n, zfse3t_b 70 71 LOGICAL :: llok 71 72 … … 433 434 ! 3.d.2 Vertical scale factors 434 435 435 ALLOCATE( zfse3t(jpi,jpj,jpk), zfse3u(jpi,jpj,jpk), zfse3v(jpi,jpj,jpk), &436 ALLOCATE( zfse3t(jpi,jpj,jpk), zfse3u(jpi,jpj,jpk), zfse3v(jpi,jpj,jpk), zfse3f(jpi,jpj,jpk), & 436 437 & zfse3w(jpi,jpj,jpk), zfse3t_n(jpi,jpj,jpk), zfse3t_b(jpi,jpj,jpk) ) 437 438 zfse3t(:,:,:) = fse3t(:,:,:) 438 439 zfse3u(:,:,:) = fse3u(:,:,:) 439 440 zfse3v(:,:,:) = fse3v(:,:,:) 441 zfse3f(:,:,:) = fse3f(:,:,:) 440 442 zfse3w(:,:,:) = fse3w(:,:,:) 441 443 … … 444 446 CALL crsfun( p_e1e2t=e1e2t, cd_type='U', cd_op='MIN', p_cmask=umask_crs, p_ptmask=umask, p_pfield3d_1=zfse3u, p_cfield3d=e3u_crs ) 445 447 CALL crsfun( p_e1e2t=e1e2t, cd_type='V', cd_op='MIN', p_cmask=vmask_crs, p_ptmask=vmask, p_pfield3d_1=zfse3v, p_cfield3d=e3v_crs ) 448 CALL crsfun( p_e1e2t=e1e2t, cd_type='F', cd_op='MIN', p_cmask=fmask_crs, p_ptmask=fmask, p_pfield3d_1=zfse3f, p_cfield3d=e3f_crs ) 446 449 447 450 ! Reset 0 to e3t_0 or e3w_0 … … 453 456 IF ( e3u_crs(ji,jj,jk) == 0 ) e3u_crs(ji,jj,jk) = e3t_0(jk) 454 457 IF ( e3v_crs(ji,jj,jk) == 0 ) e3v_crs(ji,jj,jk) = e3t_0(jk) 458 IF ( e3f_crs(ji,jj,jk) == 0 ) e3f_crs(ji,jj,jk) = e3t_0(jk) 455 459 ENDDO 456 460 ENDDO … … 501 505 !--------------------------------------------------------- 502 506 DEALLOCATE( zmbk ) 503 DEALLOCATE( zfse3t, zfse3u, zfse3v, zfse3 w)504 DEALLOCATE( zfse3 t_n, zfse3t_b )507 DEALLOCATE( zfse3t, zfse3u, zfse3v, zfse3f ) 508 DEALLOCATE( zfse3w, zfse3t_n, zfse3t_b ) 505 509 506 510
Note: See TracChangeset
for help on using the changeset viewer.