- Location:
- branches/2015/nemo_v3_6_STABLE/NEMOGCM
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/nemo_v3_6_STABLE/NEMOGCM/CONFIG/SHARED/field_def.xml
r8627 r8617 508 508 509 509 <!-- variables available with key_diaar5 --> 510 <field id="w_masstr" long_name="Upward Ocean Mass Transport" standard_name="upward_ocean_mass_transport" unit="kg/s" />511 <field id="w_masstr2" long_name="square of vertical mass transport" 510 <field id="w_masstr" long_name="Upward Ocean Mass Transport" standard_name="upward_ocean_mass_transport" unit="kg/s" /> 511 <field id="w_masstr2" long_name="square of vertical mass transport" standard_name="square_of_upward_ocean_mass_transport" unit="kg2/s2" /> 512 512 513 513 <!-- aht2d and aht2d_eiv: available with key_traldf_eiv and key_traldf_c2d --> 514 <field id="aht2d" long_name="lateral eddy diffusivity" 515 <field id="aht2d_eiv" long_name="EIV lateral eddy diffusivity" 514 <field id="aht2d" long_name="lateral eddy diffusivity" standard_name="ocean_tracer_xy_laplacian_diffusivity" unit="m2/s" grid_ref="grid_W_2D" /> 515 <field id="aht2d_eiv" long_name="EIV lateral eddy diffusivity" standard_name="ocean_tracer_bolus_laplacian_diffusivity" unit="m2/s" grid_ref="grid_W_2D" /> 516 516 517 517 <!-- Variable from eosbn2 --> … … 541 541 542 542 <field_group id="scalar" domain_ref="1point" > 543 <field id="voltot" long_name="Sea Water Volume" 544 <field id="sshtot" long_name="global mean ssh" 545 <field id="sshsteric" long_name="global mean ssh steric" 546 <field id="sshthster" long_name="Global Average Thermosteric Sea Level Change" 547 <field id="masstot" long_name="global total mass" 548 <field id="temptot" long_name="Global Average Sea Water Potential Temperature" standard_name="sea_water_potential_temperature" unit="degree_C" />549 <field id="saltot" long_name="Global Average Sea Water Salinity" standard_name="sea_water_salinity" unit="0.001" />550 <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait" 543 <field id="voltot" long_name="Sea Water Volume" standard_name="sea_water_volume" unit="m3" /> 544 <field id="sshtot" long_name="global mean ssh" standard_name="global_average_sea_level_change" unit="m" /> 545 <field id="sshsteric" long_name="global mean ssh steric" standard_name="global_average_steric_sea_level_change" unit="m" /> 546 <field id="sshthster" long_name="Global Average Thermosteric Sea Level Change" standard_name="global_average_thermosteric_sea_level_change" unit="m" /> 547 <field id="masstot" long_name="global total mass" standard_name="sea_water_mass" unit="kg" /> 548 <field id="temptot" long_name="Global Average Sea Water Potential Temperature" standard_name="sea_water_potential_temperature" unit="degree_C" /> 549 <field id="saltot" long_name="Global Average Sea Water Salinity" standard_name="sea_water_salinity" unit="0.001" /> 550 <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait" standard_name="sea_ice_transport_across_line" unit="kg/s" /> 551 551 552 552 <!-- available with ln_diahsb --> … … 867 867 <field id="ketrd_convP2K" long_name="ke-trend: conversion (potential to kinetic)" unit="W/s^3" /> 868 868 <field id="KE" long_name="kinetic energy: u(n)*u(n+1)/2" unit="W/s^2" /> 869 <!-- variables available when explicit mixing is used --> 870 <field id="dispkexyfo" long_name="KE-trend: lateral mixing induced dissipation" standard_name="ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction" unit="W/m^2" grid_ref="grid_T_2D" /> 871 <field id="dispkevfo" long_name="KE-trend: vertical mixing induced dissipation" standard_name="ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction" unit="W/m^2" grid_ref="grid_T_2D" /> 872 <!-- variables available with key_traadv_eiv and key_diaeiv --> 873 <field id="eketrd_eiv" long_name="EKE-trend due to parameterized eddy advection" standard_name="tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection" unit="W/m^2" grid_ref="grid_T_2D" /> 869 <field id="ketrd_eiv" long_name="Kinetic energy trend from mesoscale eddy advection" unit="W/s^2" grid_ref="grid_T_2D" /> 874 870 875 871 <!-- variables available with ln_PE_trd --> -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r8627 r8617 18 18 USE oce ! ocean dynamics and tracers 19 19 USE dom_oce ! ocean space and time domain 20 USE phycst ! physical constants21 20 USE ldfdyn_oce ! ocean dynamics: lateral physics 22 21 ! 23 22 USE in_out_manager ! I/O manager 24 USE iom ! I/O library25 23 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 26 24 USE wrk_nemo ! Memory Allocation … … 77 75 INTEGER, INTENT(in) :: kt ! ocean time-step index 78 76 ! 79 INTEGER :: ji, jj, jk ! dummy loop indices 80 REAL(wp) :: zua, zva, zbt, ze2u, ze2v, zzz ! local scalar 81 REAL(wp), POINTER, DIMENSION(:,: ) :: zcu, zcv 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zuf, zut, zlu, zlv 83 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z2d ! 2D workspace 77 INTEGER :: ji, jj, jk ! dummy loop indices 78 REAL(wp) :: zua, zva, zbt, ze2u, ze2v ! temporary scalar 79 REAL(wp), POINTER, DIMENSION(:,: ) :: zcu, zcv 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: zuf, zut, zlu, zlv 84 81 !!---------------------------------------------------------------------- 85 82 ! … … 115 112 DO jj = 2, jpjm1 116 113 DO ji = fs_2, fs_jpim1 ! vector opt. 117 zlu(ji,jj,jk) = - ( zuf(ji ,jj,jk) -zuf(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) &118 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj ,jk) ) /e1u(ji,jj)119 120 zlv(ji,jj,jk) = + ( zuf(ji,jj ,jk) -zuf(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) &121 & + ( hdivb(ji,jj+1,jk) - hdivb(ji ,jj,jk) ) /e2v(ji,jj)114 zlu(ji,jj,jk) = - ( zuf(ji,jj,jk) - zuf(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) & 115 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj,jk) ) / e1u(ji,jj) 116 117 zlv(ji,jj,jk) = + ( zuf(ji,jj,jk) - zuf(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) & 118 & + ( hdivb(ji,jj+1,jk) - hdivb(ji,jj,jk) ) / e2v(ji,jj) 122 119 END DO 123 120 END DO … … 126 123 DO ji = fs_2, fs_jpim1 ! vector opt. 127 124 zlu(ji,jj,jk) = - ( rotb (ji ,jj,jk) - rotb (ji,jj-1,jk) ) / e2u(ji,jj) & 128 & 125 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj ,jk) ) / e1u(ji,jj) 129 126 130 127 zlv(ji,jj,jk) = + ( rotb (ji,jj ,jk) - rotb (ji-1,jj,jk) ) / e1v(ji,jj) & 131 & 128 & + ( hdivb(ji,jj+1,jk) - hdivb(ji ,jj,jk) ) / e2v(ji,jj) 132 129 END DO 133 130 END DO … … 136 133 CALL lbc_lnk( zlu, 'U', -1. ) ; CALL lbc_lnk( zlv, 'V', -1. ) ! Boundary conditions 137 134 138 IF( iom_use('dispkexyfo') ) THEN ! ocean kinetic energy dissipation per unit area 139 ! ! due to xy friction (xy=lateral) 140 ! see NEMO_book appendix C, §C.7.2 (N.B. here averaged at t-points) 141 ! local dissipation of KE at t-point due to bilaplacian operator is given by : 142 ! + ahmu mi( zlu**2 ) + mj( ahmv zlv**2 ) 143 ! Note that a sign + is used as in v3.6 ahm is negative for bilaplacian viscosity 144 ! 145 ! NB: ahm is negative when bilaplacian is used 146 ALLOCATE( z2d(jpi,jpj) ) 147 z2d(:,:) = 0._wp 148 DO jk = 1, jpkm1 149 DO jj = 2, jpjm1 150 DO ji = 2, jpim1 151 z2d(ji,jj) = z2d(ji,jj) & 152 & + ( fsahmu(ji,jj,jk)*zlu(ji,jj,jk)**2 + fsahmu(ji-1,jj,jk)*zlu(ji-1,jj,jk)**2 & 153 & + fsahmv(ji,jj,jk)*zlv(ji,jj,jk)**2 + fsahmv(ji,jj-1,jk)*zlv(ji,jj-1,jk)**2 ) * tmask(ji,jj,jk) 154 END DO 155 END DO 156 END DO 157 zzz = 0.5_wp * rau0 158 z2d(:,:) = zzz * z2d(:,:) 159 CALL lbc_lnk( z2d,'T', 1. ) 160 CALL iom_put( 'dispkexyfo', z2d ) 161 DEALLOCATE( z2d ) 162 ENDIF 163 164 165 ! Third derivative 166 ! ---------------- 167 ! 135 168 136 DO jk = 1, jpkm1 169 ! 137 138 ! Third derivative 139 ! ---------------- 140 170 141 ! Multiply by the eddy viscosity coef. (at u- and v-points) 171 zlu(:,:,jk) = zlu(:,:,jk) * fsahmu(:,:,jk) 172 zlv(:,:,jk) = zlv(:,:,jk) * fsahmv(:,:,jk) 173 ! 142 zlu(:,:,jk) = zlu(:,:,jk) * ( fsahmu(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 143 144 zlv(:,:,jk) = zlv(:,:,jk) * ( fsahmv(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 145 174 146 ! Contravariant "laplacian" 175 147 zcu(:,:) = e1u(:,:) * zlu(:,:,jk) … … 180 152 DO ji = 1, fs_jpim1 ! vector opt. 181 153 zuf(ji,jj,jk) = fmask(ji,jj,jk) * ( zcv(ji+1,jj ) - zcv(ji,jj) & 182 & 183 & * fse3f(ji,jj,jk) * r1_e12f(ji,jj)154 & - zcu(ji ,jj+1) + zcu(ji,jj) ) & 155 & * fse3f(ji,jj,jk) / ( e1f(ji,jj)*e2f(ji,jj) ) 184 156 END DO 185 157 END DO … … 203 175 END DO 204 176 177 205 178 ! boundary conditions on the laplacian curl and div (zuf,zut) 206 179 !!bug gm no need to do this 2 following lbc... … … 208 181 CALL lbc_lnk( zut, 'T', 1. ) 209 182 210 DO jk = 1, jpkm1 ! Bilaplacian 183 DO jk = 1, jpkm1 184 185 ! Bilaplacian 186 ! ----------- 187 211 188 DO jj = 2, jpjm1 212 189 DO ji = fs_2, fs_jpim1 ! vector opt. … … 220 197 & + ( zut(ji,jj+1,jk) - zut(ji ,jj,jk) ) / e2v(ji,jj) 221 198 ! add it to the general momentum trends 222 ua(ji,jj,jk) = ua(ji,jj,jk) + zua 223 va(ji,jj,jk) = va(ji,jj,jk) + zva 199 ua(ji,jj,jk) = ua(ji,jj,jk) + zua * ( fsahmu(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 200 va(ji,jj,jk) = va(ji,jj,jk) + zva * ( fsahmv(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 224 201 END DO 225 202 END DO 203 226 204 ! ! =============== 227 205 END DO ! End of slab -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90
r8627 r8617 17 17 USE oce ! ocean dynamics and tracers 18 18 USE dom_oce ! ocean space and time domain 19 USE phycst ! physical constants20 19 USE ldfdyn_oce ! ocean dynamics: lateral physics 21 20 USE zdf_oce ! ocean vertical physics 22 21 ! 23 22 USE in_out_manager ! I/O manager 24 USE iom ! I/O library25 23 USE timing ! Timing 26 24 … … 64 62 INTEGER :: ji, jj, jk ! dummy loop indices 65 63 REAL(wp) :: zua, zva, ze2u, ze1v ! local scalars 66 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z2d ! 2D workspace67 64 !!---------------------------------------------------------------------- 68 65 ! … … 96 93 END DO ! End of slab 97 94 ! ! =============== 98 99 IF( iom_use('dispkexyfo') ) THEN ! ocean Kinetic Energy dissipation per unit area100 ! ! due to lateral friction (xy=lateral)101 ! see NEMO_book appendix C, §C.7.2 (N.B. here averaged at t-points)102 ! local dissipation of KE at t-point due to laplacian operator is given by :103 ! - ahmt hdivb**2 - mi( mj(ahmf rotb**2 e1f*e2f*e3t) ) / (e1e2t*e3t)104 !105 ALLOCATE( z2d(jpi,jpj) )106 z2d(:,:) = 0._wp107 DO jk = 1, jpkm1108 DO jj = 2, jpjm1109 DO ji = 2, jpim1110 z2d(ji,jj) = z2d(ji,jj) - ( &111 & hdivb(ji,jj,jk)**2 * fsahmt(ji,jj,jk) * fse3t_n(ji,jj,jk) &112 & + 0.25_wp * ( &113 & rotb (ji ,jj ,jk)**2 * fsahmf(ji ,jj ,jk) * e12f(ji ,jj ) * fse3f(ji ,jj ,jk) &114 & + rotb (ji-1,jj ,jk)**2 * fsahmf(ji-1,jj ,jk) * e12f(ji-1,jj ) * fse3f(ji-1,jj ,jk) &115 & + rotb (ji ,jj-1,jk)**2 * fsahmf(ji ,jj-1,jk) * e12f(ji ,jj-1) * fse3f(ji ,jj-1,jk) &116 & + rotb (ji-1,jj-1,jk)**2 * fsahmf(ji-1,jj-1,jk) * e12f(ji-1,jj-1) * fse3f(ji-1,jj-1,jk) &117 & ) * r1_e12t(ji,jj) ) * tmask(ji,jj,jk)118 END DO119 END DO120 END DO121 z2d(:,:) = rau0 * z2d(:,:)122 CALL lbc_lnk( z2d,'T', 1. )123 CALL iom_put( 'dispkexyfo', z2d )124 DEALLOCATE( z2d )125 ENDIF126 127 95 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf_lap') 128 96 ! -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r8627 r8617 20 20 USE zdf_oce ! ocean vertical physics 21 21 USE phycst ! physical constants 22 USE in_out_manager ! I/O manager 23 USE lib_mpp ! MPP library 24 USE zdfbfr ! Bottom friction setup 25 USE wrk_nemo ! Memory Allocation 26 USE timing ! Timing 22 27 USE dynadv ! dynamics: vector invariant versus flux form 23 28 USE dynspg_oce, ONLY: lk_dynspg_ts 24 USE zdfbfr ! Bottom friction setup25 !26 USE in_out_manager ! I/O manager27 USE iom ! I/O library28 USE lib_mpp ! MPP library29 USE wrk_nemo ! Memory Allocation30 USE timing ! Timing31 29 32 30 IMPLICIT NONE … … 71 69 INTEGER :: ikbu, ikbv ! local integers 72 70 REAL(wp) :: z1_p2dt, zcoef, zzwi, zzws, zrhs ! local scalars 73 REAL(wp) :: ze3ua, ze3va, zzz 74 REAL(wp), POINTER, DIMENSION(:,:) :: z2d 71 REAL(wp) :: ze3ua, ze3va 75 72 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwd, zws 76 73 !!---------------------------------------------------------------------- … … 260 257 END DO 261 258 259 #if ! defined key_dynspg_ts 260 ! Normalization to obtain the general momentum trend ua 261 DO jk = 1, jpkm1 262 DO jj = 2, jpjm1 263 DO ji = fs_2, fs_jpim1 ! vector opt. 264 ua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_p2dt 265 END DO 266 END DO 267 END DO 268 #endif 269 262 270 ! 3. Vertical diffusion on v 263 271 ! --------------------------- … … 349 357 END DO 350 358 351 IF( iom_use( 'dispkevfo' ) ) THEN ! ocean kinetic energy dissipation per unit area 352 ! ! due to v friction (v=vertical) 353 ! ! see NEMO_book appendix C, §C.8 (N.B. here averaged at t-points) 354 ! ! Note that formally, in a Leap-Frog environment, the shear**2 should be the product of 355 ! ! now by before shears, i.e. the source term of TKE (local positivity is not ensured). 356 CALL wrk_alloc(jpi,jpj, z2d ) 357 z2d(:,:) = 0._wp 358 DO jk = 1, jpkm1 359 DO jj = 2, jpjm1 360 DO ji = 2, jpim1 361 z2d(ji,jj) = z2d(ji,jj) + ( & 362 & avmu(ji ,jj,jk) * ( ua(ji ,jj,jk-1) - ua(ji ,jj,jk) )**2 / fse3uw(ji ,jj,jk) * wumask(ji ,jj,jk) & 363 & + avmu(ji-1,jj,jk) * ( ua(ji-1,jj,jk-1) - ua(ji-1,jj,jk) )**2 / fse3uw(ji-1,jj,jk) * wumask(ji-1,jj,jk) & 364 & + avmv(ji,jj ,jk) * ( va(ji,jj ,jk-1) - va(ji,jj ,jk) )**2 / fse3vw(ji,jj ,jk) * wvmask(ji,jj ,jk) & 365 & + avmv(ji,jj-1,jk) * ( va(ji,jj-1,jk-1) - va(ji,jj-1,jk) )**2 / fse3vw(ji,jj-1,jk) * wvmask(ji,jj-1,jk) & 366 & ) 367 END DO 368 END DO 369 END DO 370 zzz= - 0.5_wp* rau0 ! caution sign minus here 371 z2d(:,:) = zzz * z2d(:,:) 372 CALL lbc_lnk( z2d,'T', 1. ) 373 CALL iom_put( 'dispkevfo', z2d ) 374 CALL wrk_dealloc(jpi,jpj, z2d ) 375 ENDIF 376 359 ! Normalization to obtain the general momentum trend va 377 360 #if ! defined key_dynspg_ts 378 !!gm this can be removed if tranxt is changed like in the trunk so that implicit outcome with379 !!gm the after velocity, not a trend380 ! Normalization to obtain the general momentum trend ua381 361 DO jk = 1, jpkm1 382 362 DO jj = 2, jpjm1 383 363 DO ji = fs_2, fs_jpim1 ! vector opt. 384 ua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_p2dt385 364 va(ji,jj,jk) = ( va(ji,jj,jk) - vb(ji,jj,jk) ) * z1_p2dt 386 365 END DO … … 414 393 CALL wrk_dealloc( jpi,jpj,jpk, zwi, zwd, zws) 415 394 ! 416 !417 395 IF( nn_timing == 1 ) CALL timing_stop('dyn_zdf_imp') 418 396 ! -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
r8627 r8617 165 165 CALL iom_put( "voce_eiv", v_eiv ) ! j-eiv current 166 166 CALL iom_put( "woce_eiv", w_eiv ) ! vert. eiv current 167 !168 167 IF( iom_use('weiv_masstr') ) THEN ! vertical mass transport & its square value 169 z2d(:,:) = rau0 * e12t(:,:) 170 DO jk = 1, jpk 171 z3d(:,:,jk) = w_eiv(:,:,jk) * z2d(:,:) 172 END DO 173 CALL iom_put( "weiv_masstr" , z3d ) 174 ENDIF 175 ! 168 z2d(:,:) = rau0 * e12t(:,:) 169 DO jk = 1, jpk 170 z3d(:,:,jk) = w_eiv(:,:,jk) * z2d(:,:) 171 END DO 172 CALL iom_put( "weiv_masstr" , z3d ) 173 ENDIF 176 174 IF( iom_use("ueiv_masstr") .OR. iom_use("ueiv_heattr") .OR. iom_use('ueiv_heattr3d') & 177 &.OR. iom_use("ueiv_salttr") .OR. iom_use('ueiv_salttr3d') ) THEN175 .OR. iom_use("ueiv_salttr") .OR. iom_use('ueiv_salttr3d') ) THEN 178 176 z3d(:,:,jpk) = 0.e0 179 177 z2d(:,:) = 0.e0 … … 184 182 CALL iom_put( "ueiv_masstr", z3d ) ! mass transport in i-direction 185 183 ENDIF 186 ! 184 187 185 IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 188 186 zztmp = 0.5 * rcp … … 206 204 ENDIF 207 205 ENDIF 208 ! 206 209 207 IF( iom_use('ueiv_salttr') .OR. iom_use('ueiv_salttr3d') ) THEN 210 208 zztmp = 0.5 * 0.001 … … 228 226 ENDIF 229 227 ENDIF 230 ! 228 231 229 IF( iom_use("veiv_masstr") .OR. iom_use("veiv_heattr") .OR. iom_use('veiv_heattr3d') & 232 230 .OR. iom_use("veiv_salttr") .OR. iom_use('veiv_salttr3d') ) THEN … … 237 235 CALL iom_put( "veiv_masstr", z3d ) ! mass transport in j-direction 238 236 ENDIF 239 !237 240 238 IF( iom_use('veiv_heattr') .OR. iom_use('veiv_heattr3d') ) THEN 241 239 zztmp = 0.5 * rcp … … 259 257 ENDIF 260 258 ENDIF 261 ! 259 262 260 IF( iom_use('veiv_salttr') .OR. iom_use('veiv_salttr3d') ) THEN 263 261 zztmp = 0.5 * 0.001 … … 281 279 ENDIF 282 280 ENDIF 283 ! 281 284 282 IF( iom_use('weiv_masstr') .OR. iom_use('weiv_heattr3d') .OR. iom_use('weiv_salttr3d')) THEN ! vertical mass transport & its square value 285 283 z2d(:,:) = rau0 * e12t(:,:) … … 289 287 CALL iom_put( "weiv_masstr" , z3d ) ! mass transport in k-direction 290 288 ENDIF 291 ! 289 292 290 IF( iom_use('weiv_heattr3d') ) THEN 293 291 zztmp = 0.5 * rcp … … 302 300 CALL iom_put( "weiv_heattr3d", zztmp * z3d_T ) ! 3D heat transport in k-direction 303 301 ENDIF 304 ! 302 305 303 IF( iom_use('weiv_salttr3d') ) THEN 306 304 zztmp = 0.5 * 0.001 … … 315 313 CALL iom_put( "weiv_salttr3d", zztmp * z3d_T ) ! 3D salt transport in k-direction 316 314 ENDIF 317 ! 318 IF( ln_diaptr ) THEN 319 z3d(:,:,:) = 0._wp 320 DO jk = 1, jpkm1 321 DO jj = 2, jpjm1 322 DO ji = fs_2, fs_jpim1 ! vector opt. 323 z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) & 324 & * e1v(ji,jj) * fse3v(ji,jj,jk) 325 END DO 326 END DO 327 END DO 328 CALL dia_ptr_ohst_components( jp_tem, 'eiv', z3d ) 329 z3d(:,:,:) = 0._wp 330 DO jk = 1, jpkm1 331 DO jj = 2, jpjm1 332 DO ji = fs_2, fs_jpim1 ! vector opt. 333 z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_sal)+tsn(ji,jj+1,jk,jp_sal)) & 334 & * e1v(ji,jj) * fse3v(ji,jj,jk) 335 END DO 336 END DO 337 END DO 338 CALL dia_ptr_ohst_components( jp_sal, 'eiv', z3d ) 339 ENDIF 340 ! 341 !!gm add CMIP6 diag here instead of been done in trdken.F90 342 ! 343 IF( iom_use('eketrd_eiv') ) THEN ! tendency of EKE from parameterized eddy advection 344 ! CMIP6 diagnostic tknebto = tendency of EKE from parameterized mesoscale eddy advection 345 ! = vertical_integral( k (N S)^2 ) rho dz where rho = rau0 and S = isoneutral slope. 346 z2d(:,:) = 0._wp 347 DO jk = 1, jpkm1 348 DO ji = 1, jpi 349 DO jj = 1,jpj 350 z2d(ji,jj) = z2d(ji,jj) + rau0 * fsaeiw(ji,jj,jk) & 351 & * rn2b(ji,jj,jk) * fse3w(ji,jj,jk) & 352 & * ( wslpi(ji,jj,jk) * wslpi(ji,jj,jk) & 353 & + wslpj(ji,jj,jk) * wslpj(ji,jj,jk) ) * wmask(ji,jj,jk) 354 END DO 355 END DO 356 END DO 357 CALL iom_put( "eketrd_eiv", z2d ) 358 ENDIF 359 ! 360 !!gm removed from trdken.F90 IF( ln_KE_trd ) CALL trd_dyn(u_eiv, v_eiv, jpdyn_eivke, kt ) 361 ! 362 ENDIF 315 316 END IF 317 ! 318 IF( ln_diaptr .AND. cdtype == 'TRA' ) THEN 319 z3d(:,:,:) = 0._wp 320 DO jk = 1, jpkm1 321 DO jj = 2, jpjm1 322 DO ji = fs_2, fs_jpim1 ! vector opt. 323 z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) & 324 & * e1v(ji,jj) * fse3v(ji,jj,jk) 325 END DO 326 END DO 327 END DO 328 CALL dia_ptr_ohst_components( jp_tem, 'eiv', z3d ) 329 z3d(:,:,:) = 0._wp 330 DO jk = 1, jpkm1 331 DO jj = 2, jpjm1 332 DO ji = fs_2, fs_jpim1 ! vector opt. 333 z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_sal)+tsn(ji,jj+1,jk,jp_sal)) & 334 & * e1v(ji,jj) * fse3v(ji,jj,jk) 335 END DO 336 END DO 337 END DO 338 CALL dia_ptr_ohst_components( jp_sal, 'eiv', z3d ) 339 ENDIF 340 341 IF( ln_KE_trd ) CALL trd_dyn(u_eiv, v_eiv, jpdyn_eivke, kt ) 363 342 # endif 364 343 -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRD/trd_oce.F90
r8627 r8617 76 76 INTEGER, PUBLIC, PARAMETER :: jpdyn_spgflt = 14 !: filter contribution to surface pressure gradient (spg_flt) 77 77 INTEGER, PUBLIC, PARAMETER :: jpdyn_spgexp = 15 !: explicit contribution to surface pressure gradient (spg_flt) 78 INTEGER, PUBLIC, PARAMETER :: jpdyn_eivke = 16 !: K.E trend from Gent McWilliams scheme 78 79 ! 79 80 !!---------------------------------------------------------------------- -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90
r8627 r8617 195 195 CALL ken_p2k( kt , zke ) 196 196 CALL iom_put( "ketrd_convP2K", zke ) ! conversion -rau*g*w 197 !!gm moved in traadv_eiv ===>>> diag becomes accessible without ln_trdtra=T 198 ! CASE( jpdyn_eivke ) 199 ! ! CMIP6 diagnostic tknebto = tendency of EKE from 200 ! ! parameterized mesoscale eddy advection 201 ! ! = vertical_integral( k (N S)^2 ) rho dz 202 ! ! rho = reference density 203 ! ! S = isoneutral slope. 204 ! ! Most terms are on W grid so work on this grid 205 !#ifdef key_traldf_eiv 206 ! CALL wrk_alloc( jpi, jpj, zke2d ) 207 ! zke2d(:,:) = 0._wp 208 ! DO jk = 1,jpk 209 ! DO ji = 1,jpi 210 ! DO jj = 1,jpj 211 ! zke2d(ji,jj) = zke2d(ji,jj) + rau0 * fsaeiw(ji, jj, jk) & 212 ! & * ( wslpi(ji, jj, jk) * wslpi(ji,jj,jk) & 213 ! & + wslpj(ji, jj, jk) * wslpj(ji,jj,jk) ) & 214 ! & * rn2(ji,jj,jk) * fse3w(ji, jj, jk) 215 ! ENDDO 216 ! ENDDO 217 ! ENDDO 218 ! CALL iom_put("ketrd_eiv", zke2d) 219 ! CALL wrk_dealloc( jpi, jpj, zke2d ) 220 !#endif 221 !!gm end 197 CASE( jpdyn_eivke ) 198 ! CMIP6 diagnostic tknebto = tendency of KE from 199 ! parameterized mesoscale eddy advection 200 ! = vertical_integral( k (N S)^2 ) rho dz 201 ! rho = reference density 202 ! S = isoneutral slope. 203 ! Most terms are on W grid so work on this grid 204 #ifdef key_traldf_eiv 205 CALL wrk_alloc( jpi, jpj, zke2d ) 206 zke2d(:,:) = 0._wp 207 DO jk = 1,jpk 208 DO ji = 1,jpi 209 DO jj = 1,jpj 210 zke2d(ji,jj) = zke2d(ji,jj) + rau0 * fsaeiw(ji, jj, jk) & 211 & * ( wslpi(ji, jj, jk) * wslpi(ji,jj,jk) & 212 & + wslpj(ji, jj, jk) * wslpj(ji,jj,jk) ) & 213 & * rn2(ji,jj,jk) * fse3w(ji, jj, jk) 214 ENDDO 215 ENDDO 216 ENDDO 217 CALL iom_put("ketrd_eiv", zke2d) 218 CALL wrk_dealloc( jpi, jpj, zke2d ) 219 #endif 222 220 ! 223 221 END SELECT
Note: See TracChangeset
for help on using the changeset viewer.