Changeset 8627
- Timestamp:
- 2017-10-16T16:19:11+02:00 (7 years ago)
- 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
r8353 r8627 508 508 509 509 <!-- variables available with key_diaar5 --> 510 <field id="w_masstr" long_name="Upward Ocean Mass Transport" 511 <field id="w_masstr2" long_name="square of vertical mass transport" standard_name="square_of_upward_ocean_mass_transport" unit="kg2/s2" />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" 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" />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" 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" 549 <field id="saltot" long_name="Global Average Sea Water Salinity" 550 <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait" standard_name="sea_ice_transport_across_line" unit="kg/s" />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 <field id="ketrd_eiv" long_name="Kinetic energy trend from mesoscale eddy advection" unit="W/s^2" grid_ref="grid_T_2D" /> 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" /> 870 874 871 875 <!-- variables available with ln_PE_trd --> -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r4990 r8627 18 18 USE oce ! ocean dynamics and tracers 19 19 USE dom_oce ! ocean space and time domain 20 USE phycst ! physical constants 20 21 USE ldfdyn_oce ! ocean dynamics: lateral physics 21 22 ! 22 23 USE in_out_manager ! I/O manager 24 USE iom ! I/O library 23 25 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 24 26 USE wrk_nemo ! Memory Allocation … … 75 77 INTEGER, INTENT(in) :: kt ! ocean time-step index 76 78 ! 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 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 81 84 !!---------------------------------------------------------------------- 82 85 ! … … 112 115 DO jj = 2, jpjm1 113 116 DO ji = fs_2, fs_jpim1 ! vector opt. 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)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) 116 119 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)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) 119 122 END DO 120 123 END DO … … 123 126 DO ji = fs_2, fs_jpim1 ! vector opt. 124 127 zlu(ji,jj,jk) = - ( rotb (ji ,jj,jk) - rotb (ji,jj-1,jk) ) / e2u(ji,jj) & 125 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj ,jk) ) / e1u(ji,jj)128 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj ,jk) ) / e1u(ji,jj) 126 129 127 130 zlv(ji,jj,jk) = + ( rotb (ji,jj ,jk) - rotb (ji-1,jj,jk) ) / e1v(ji,jj) & 128 & + ( hdivb(ji,jj+1,jk) - hdivb(ji ,jj,jk) ) / e2v(ji,jj)131 & + ( hdivb(ji,jj+1,jk) - hdivb(ji ,jj,jk) ) / e2v(ji,jj) 129 132 END DO 130 133 END DO … … 133 136 CALL lbc_lnk( zlu, 'U', -1. ) ; CALL lbc_lnk( zlv, 'V', -1. ) ! Boundary conditions 134 137 135 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 ! 136 168 DO jk = 1, jpkm1 137 138 ! Third derivative 139 ! ---------------- 140 169 ! 141 170 ! Multiply by the eddy viscosity coef. (at u- and v-points) 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 171 zlu(:,:,jk) = zlu(:,:,jk) * fsahmu(:,:,jk) 172 zlv(:,:,jk) = zlv(:,:,jk) * fsahmv(:,:,jk) 173 ! 146 174 ! Contravariant "laplacian" 147 175 zcu(:,:) = e1u(:,:) * zlu(:,:,jk) … … 152 180 DO ji = 1, fs_jpim1 ! vector opt. 153 181 zuf(ji,jj,jk) = fmask(ji,jj,jk) * ( zcv(ji+1,jj ) - zcv(ji,jj) & 154 & - zcu(ji ,jj+1) + zcu(ji,jj) ) &155 & * fse3f(ji,jj,jk) / ( e1f(ji,jj)*e2f(ji,jj))182 & - zcu(ji ,jj+1) + zcu(ji,jj) ) & 183 & * fse3f(ji,jj,jk) * r1_e12f(ji,jj) 156 184 END DO 157 185 END DO … … 175 203 END DO 176 204 177 178 205 ! boundary conditions on the laplacian curl and div (zuf,zut) 179 206 !!bug gm no need to do this 2 following lbc... … … 181 208 CALL lbc_lnk( zut, 'T', 1. ) 182 209 183 DO jk = 1, jpkm1 184 185 ! Bilaplacian 186 ! ----------- 187 210 DO jk = 1, jpkm1 ! Bilaplacian 188 211 DO jj = 2, jpjm1 189 212 DO ji = fs_2, fs_jpim1 ! vector opt. … … 197 220 & + ( zut(ji,jj+1,jk) - zut(ji ,jj,jk) ) / e2v(ji,jj) 198 221 ! add it to the general momentum trends 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 )) 201 END DO 202 END DO 203 222 ua(ji,jj,jk) = ua(ji,jj,jk) + zua 223 va(ji,jj,jk) = va(ji,jj,jk) + zva 224 END DO 225 END DO 204 226 ! ! =============== 205 227 END DO ! End of slab -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90
r4990 r8627 17 17 USE oce ! ocean dynamics and tracers 18 18 USE dom_oce ! ocean space and time domain 19 USE phycst ! physical constants 19 20 USE ldfdyn_oce ! ocean dynamics: lateral physics 20 21 USE zdf_oce ! ocean vertical physics 21 22 ! 22 23 USE in_out_manager ! I/O manager 24 USE iom ! I/O library 23 25 USE timing ! Timing 24 26 … … 62 64 INTEGER :: ji, jj, jk ! dummy loop indices 63 65 REAL(wp) :: zua, zva, ze2u, ze1v ! local scalars 66 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z2d ! 2D workspace 64 67 !!---------------------------------------------------------------------- 65 68 ! … … 93 96 END DO ! End of slab 94 97 ! ! =============== 98 99 IF( iom_use('dispkexyfo') ) THEN ! ocean Kinetic Energy dissipation per unit area 100 ! ! 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._wp 107 DO jk = 1, jpkm1 108 DO jj = 2, jpjm1 109 DO ji = 2, jpim1 110 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 DO 119 END DO 120 END DO 121 z2d(:,:) = rau0 * z2d(:,:) 122 CALL lbc_lnk( z2d,'T', 1. ) 123 CALL iom_put( 'dispkexyfo', z2d ) 124 DEALLOCATE( z2d ) 125 ENDIF 126 95 127 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf_lap') 96 128 ! -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r6751 r8627 20 20 USE zdf_oce ! ocean vertical physics 21 21 USE phycst ! physical constants 22 USE dynadv ! dynamics: vector invariant versus flux form 23 USE dynspg_oce, ONLY: lk_dynspg_ts 24 USE zdfbfr ! Bottom friction setup 25 ! 22 26 USE in_out_manager ! I/O manager 27 USE iom ! I/O library 23 28 USE lib_mpp ! MPP library 24 USE zdfbfr ! Bottom friction setup25 29 USE wrk_nemo ! Memory Allocation 26 30 USE timing ! Timing 27 USE dynadv ! dynamics: vector invariant versus flux form28 USE dynspg_oce, ONLY: lk_dynspg_ts29 31 30 32 IMPLICIT NONE … … 69 71 INTEGER :: ikbu, ikbv ! local integers 70 72 REAL(wp) :: z1_p2dt, zcoef, zzwi, zzws, zrhs ! local scalars 71 REAL(wp) :: ze3ua, ze3va 73 REAL(wp) :: ze3ua, ze3va, zzz 74 REAL(wp), POINTER, DIMENSION(:,:) :: z2d 72 75 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwd, zws 73 76 !!---------------------------------------------------------------------- … … 257 260 END DO 258 261 259 #if ! defined key_dynspg_ts260 ! Normalization to obtain the general momentum trend ua261 DO jk = 1, jpkm1262 DO jj = 2, jpjm1263 DO ji = fs_2, fs_jpim1 ! vector opt.264 ua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_p2dt265 END DO266 END DO267 END DO268 #endif269 270 262 ! 3. Vertical diffusion on v 271 263 ! --------------------------- … … 357 349 END DO 358 350 359 ! Normalization to obtain the general momentum trend va 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 360 377 #if ! defined key_dynspg_ts 378 !!gm this can be removed if tranxt is changed like in the trunk so that implicit outcome with 379 !!gm the after velocity, not a trend 380 ! Normalization to obtain the general momentum trend ua 361 381 DO jk = 1, jpkm1 362 382 DO jj = 2, jpjm1 363 383 DO ji = fs_2, fs_jpim1 ! vector opt. 384 ua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_p2dt 364 385 va(ji,jj,jk) = ( va(ji,jj,jk) - vb(ji,jj,jk) ) * z1_p2dt 365 386 END DO … … 393 414 CALL wrk_dealloc( jpi,jpj,jpk, zwi, zwd, zws) 394 415 ! 416 ! 395 417 IF( nn_timing == 1 ) CALL timing_stop('dyn_zdf_imp') 396 418 ! -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
r7494 r8627 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 ! 167 168 IF( iom_use('weiv_masstr') ) THEN ! vertical mass transport & its square value 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 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 ! 174 176 IF( iom_use("ueiv_masstr") .OR. iom_use("ueiv_heattr") .OR. iom_use('ueiv_heattr3d') & 175 177 & .OR. iom_use("ueiv_salttr") .OR. iom_use('ueiv_salttr3d') ) THEN 176 178 z3d(:,:,jpk) = 0.e0 177 179 z2d(:,:) = 0.e0 … … 182 184 CALL iom_put( "ueiv_masstr", z3d ) ! mass transport in i-direction 183 185 ENDIF 184 186 ! 185 187 IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 186 188 zztmp = 0.5 * rcp … … 204 206 ENDIF 205 207 ENDIF 206 208 ! 207 209 IF( iom_use('ueiv_salttr') .OR. iom_use('ueiv_salttr3d') ) THEN 208 210 zztmp = 0.5 * 0.001 … … 226 228 ENDIF 227 229 ENDIF 228 230 ! 229 231 IF( iom_use("veiv_masstr") .OR. iom_use("veiv_heattr") .OR. iom_use('veiv_heattr3d') & 230 232 .OR. iom_use("veiv_salttr") .OR. iom_use('veiv_salttr3d') ) THEN … … 235 237 CALL iom_put( "veiv_masstr", z3d ) ! mass transport in j-direction 236 238 ENDIF 237 239 ! 238 240 IF( iom_use('veiv_heattr') .OR. iom_use('veiv_heattr3d') ) THEN 239 241 zztmp = 0.5 * rcp … … 257 259 ENDIF 258 260 ENDIF 259 261 ! 260 262 IF( iom_use('veiv_salttr') .OR. iom_use('veiv_salttr3d') ) THEN 261 263 zztmp = 0.5 * 0.001 … … 279 281 ENDIF 280 282 ENDIF 281 283 ! 282 284 IF( iom_use('weiv_masstr') .OR. iom_use('weiv_heattr3d') .OR. iom_use('weiv_salttr3d')) THEN ! vertical mass transport & its square value 283 285 z2d(:,:) = rau0 * e12t(:,:) … … 287 289 CALL iom_put( "weiv_masstr" , z3d ) ! mass transport in k-direction 288 290 ENDIF 289 291 ! 290 292 IF( iom_use('weiv_heattr3d') ) THEN 291 293 zztmp = 0.5 * rcp … … 300 302 CALL iom_put( "weiv_heattr3d", zztmp * z3d_T ) ! 3D heat transport in k-direction 301 303 ENDIF 302 304 ! 303 305 IF( iom_use('weiv_salttr3d') ) THEN 304 306 zztmp = 0.5 * 0.001 … … 313 315 CALL iom_put( "weiv_salttr3d", zztmp * z3d_T ) ! 3D salt transport in k-direction 314 316 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 ) 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 342 363 # endif 343 364 -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRD/trd_oce.F90
r7494 r8627 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 scheme79 78 ! 80 79 !!---------------------------------------------------------------------- -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90
r7564 r8627 195 195 CALL ken_p2k( kt , zke ) 196 196 CALL iom_put( "ketrd_convP2K", zke ) ! conversion -rau*g*w 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 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 220 222 ! 221 223 END SELECT
Note: See TracChangeset
for help on using the changeset viewer.