- Timestamp:
- 2017-06-25T12:26:32+02:00 (7 years ago)
- Location:
- branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/CRS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/CRS/crs.F90
r6140 r8215 140 140 ! Physical and dynamical ocean fields for output or passing to TOP, time-mean fields 141 141 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tsn_crs 142 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: un_crs, vn_crs, wn_crs , rke_crs142 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: un_crs, vn_crs, wn_crs 143 143 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: hdivn_crs 144 144 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: sshn_crs … … 151 151 152 152 ! Vertical diffusion 153 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avt_crs !: vert. diffusivity coef. [m2/s] at w-point for temp 154 # if defined key_zdfddm 155 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avs_crs !: salinity vertical diffusivity coeff. [m2/s] at w-point 156 # endif 153 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avt_crs !: temperature vertical diffusivity coeff. [m2/s] at w-point 154 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: avs_crs !: salinity vertical diffusivity coeff. [m2/s] at w-point 157 155 158 156 ! Mixing and Mixed Layer Depth … … 230 228 231 229 232 ALLOCATE( un_crs(jpi_crs,jpj_crs,jpk) , vn_crs(jpi_crs,jpj_crs,jpk) , & 233 & wn_crs(jpi_crs,jpj_crs,jpk) , hdivn_crs(jpi_crs,jpj_crs,jpk),& 234 & rke_crs(jpi_crs,jpj_crs,jpk), STAT=ierr(11)) 230 ALLOCATE( un_crs(jpi_crs,jpj_crs,jpk) , vn_crs(jpi_crs,jpj_crs,jpk) , & 231 & wn_crs(jpi_crs,jpj_crs,jpk) , hdivn_crs(jpi_crs,jpj_crs,jpk), STAT=ierr(11)) 235 232 236 233 ALLOCATE( sshn_crs(jpi_crs,jpj_crs), emp_crs (jpi_crs,jpj_crs), emp_b_crs(jpi_crs,jpj_crs), & … … 239 236 & fr_i_crs(jpi_crs,jpj_crs), sfx_crs(jpi_crs ,jpj_crs), STAT=ierr(12) ) 240 237 241 ALLOCATE( tsn_crs(jpi_crs,jpj_crs,jpk,jpts), avt_crs(jpi_crs,jpj_crs,jpk), & 242 # if defined key_zdfddm 243 & avs_crs(jpi_crs,jpj_crs,jpk), & 244 # endif 245 & STAT=ierr(13) ) 238 ALLOCATE( tsn_crs(jpi_crs,jpj_crs,jpk,jpts), avt_crs(jpi_crs,jpj_crs,jpk), & 239 & avs_crs(jpi_crs,jpj_crs,jpk), STAT=ierr(13) ) 246 240 247 241 ALLOCATE( nmln_crs(jpi_crs,jpj_crs) , hmld_crs(jpi_crs,jpj_crs) , & 248 242 & hmlp_crs(jpi_crs,jpj_crs) , hmlpt_crs(jpi_crs,jpj_crs) , STAT=ierr(14) ) 249 243 250 ALLOCATE( nimppt_crs(jpnij) , nlcit_crs(jpnij) , nldit_crs(jpnij) , nleit_crs(jpnij), & 251 & nimppt_full(jpnij) , nlcit_full(jpnij) , nldit_full(jpnij) , nleit_full(jpnij), & 252 njmppt_crs(jpnij) , nlcjt_crs(jpnij) , nldjt_crs(jpnij) , nlejt_crs(jpnij), & 253 & njmppt_full(jpnij) , nlcjt_full(jpnij) , nldjt_full(jpnij) , nlejt_full(jpnij) , STAT=ierr(15) ) 254 255 244 ALLOCATE( nimppt_crs (jpnij) , nlcit_crs (jpnij) , nldit_crs (jpnij) , nleit_crs (jpnij), & 245 & nimppt_full(jpnij) , nlcit_full(jpnij) , nldit_full(jpnij) , nleit_full(jpnij), & 246 njmppt_crs (jpnij) , nlcjt_crs (jpnij) , nldjt_crs (jpnij) , nlejt_crs (jpnij), & 247 & njmppt_full(jpnij) , nlcjt_full(jpnij) , nldjt_full(jpnij) , nlejt_full(jpnij) , STAT=ierr(15) ) 248 256 249 crs_dom_alloc = MAXVAL(ierr) 257 250 ! 258 251 END FUNCTION crs_dom_alloc 259 252 -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90
r6140 r8215 58 58 INTEGER :: ji, jj, jk ! dummy loop indices 59 59 REAL(wp) :: z2dcrsu, z2dcrsv ! local scalars 60 REAL(wp) :: zztmp ! - - 60 61 ! 61 62 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze3t, ze3u, ze3v, ze3w ! 3D workspace for e3 62 REAL(wp), POINTER, DIMENSION(:,:,:) :: zt, zt_crs 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: zt, zt_crs, z3d 63 64 REAL(wp), POINTER, DIMENSION(:,:,:) :: zs, zs_crs 64 65 !!---------------------------------------------------------------------- … … 69 70 CALL wrk_alloc( jpi,jpj,jpk, ze3t, ze3w ) 70 71 CALL wrk_alloc( jpi,jpj,jpk, ze3u, ze3v ) 71 CALL wrk_alloc( jpi,jpj,jpk, zt , zs )72 CALL wrk_alloc( jpi,jpj,jpk, zt , zs , z3d ) 72 73 ! 73 74 CALL wrk_alloc( jpi_crs,jpj_crs,jpk, zt_crs, zs_crs ) … … 84 85 vn_crs (:,:,: ) = 0._wp ! v-velocity 85 86 wn_crs (:,:,: ) = 0._wp ! w 86 av t_crs (:,:,: ) = 0._wp ! avt87 avs_crs (:,:,: ) = 0._wp ! avt 87 88 hdivn_crs(:,:,: ) = 0._wp ! hdiv 88 rke_crs (:,:,: ) = 0._wp ! rke89 89 sshn_crs (:,: ) = 0._wp ! ssh 90 90 utau_crs (:,: ) = 0._wp ! taux … … 158 158 CALL iom_put( "voces" , zs_crs ) ! vS 159 159 160 161 ! Kinetic energy 162 CALL crs_dom_ope( rke, 'VOL', 'T', tmask, rke_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 ) 163 CALL iom_put( "eken", rke_crs ) 164 160 IF( iom_use( "eken") ) THEN ! kinetic energy 161 z3d(:,:,jk) = 0._wp 162 DO jk = 1, jpkm1 163 DO jj = 2, jpjm1 164 DO ji = fs_2, fs_jpim1 ! vector opt. 165 zztmp = r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 166 z3d(ji,jj,jk) = 0.25_wp * zztmp * ( & 167 & un(ji-1,jj,jk)**2 * e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) & 168 & + un(ji ,jj,jk)**2 * e2u(ji ,jj) * e3u_n(ji ,jj,jk) & 169 & + vn(ji,jj-1,jk)**2 * e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) & 170 & + vn(ji,jj ,jk)**2 * e1v(ji,jj ) * e3v_n(ji,jj ,jk) ) 171 END DO 172 END DO 173 END DO 174 CALL lbc_lnk( z3d, 'T', 1. ) 175 ! 176 CALL crs_dom_ope( z3d, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 ) 177 CALL iom_put( "eken", zt_crs ) 178 ENDIF 165 179 ! Horizontal divergence ( following OPA_SRC/DYN/divhor.F90 ) 166 180 DO jk = 1, jpkm1 … … 175 189 hdivn_crs(ji,jj,jk) = ( z2dcrsu + z2dcrsv ) / crs_volt_wgt(ji,jj,jk) 176 190 ENDIF 177 END DO178 END DO179 END DO191 END DO 192 END DO 193 END DO 180 194 CALL crs_lbc_lnk( hdivn_crs, 'T', 1.0 ) 181 195 ! … … 196 210 ! free memory 197 211 198 ! avt, avs 199 !!gm BUG TOP always uses avs !!! 212 ! avs 200 213 SELECT CASE ( nn_crs_kz ) 201 214 CASE ( 0 ) 202 215 CALL crs_dom_ope( avt, 'VOL', 'W', tmask, avt_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0 ) 216 CALL crs_dom_ope( avs, 'VOL', 'W', tmask, avs_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0 ) 203 217 CASE ( 1 ) 204 218 CALL crs_dom_ope( avt, 'MAX', 'W', tmask, avt_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0 ) 219 CALL crs_dom_ope( avs, 'MAX', 'W', tmask, avs_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0 ) 205 220 CASE ( 2 ) 206 221 CALL crs_dom_ope( avt, 'MIN', 'W', tmask, avt_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0 ) 222 CALL crs_dom_ope( avs, 'MIN', 'W', tmask, avs_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0 ) 207 223 END SELECT 208 224 ! 209 CALL iom_put( "avt", avt_crs ) ! Kz 225 CALL iom_put( "avt", avt_crs ) ! Kz on T 226 CALL iom_put( "avs", avs_crs ) ! Kz on S 210 227 211 228 ! sbc fields
Note: See TracChangeset
for help on using the changeset viewer.