Changeset 15219 for branches/UKMO/dev_r5518_GO6_GloSea6_package/NEMOGCM
- Timestamp:
- 2021-08-31T17:03:50+02:00 (3 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_GloSea6_package/NEMOGCM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_GloSea6_package/NEMOGCM/CONFIG/SHARED/field_def.xml
r9163 r15219 109 109 <field id="28d" long_name="Depth of 28C isotherm" standard_name="depth_of_isosurface_of_sea_water_potential_temperature" unit="m" /> 110 110 <field id="hc300" long_name="Heat content 0-300m" standard_name="integral_of_sea_water_potential_temperature_wrt_depth_expressed_as_heat_content" unit="J/m2" /> 111 <field id="tav300" long_name="Average potential temperature 0-300m" standard_name="sea_water_potential_temperature" unit="degC" /> 112 <field id="sav300" long_name="Average salinity 0-300m" standard_name="sea_water_practical_salinity" unit="0.001" /> 111 113 112 114 <!-- variables available with key_diaar5 --> -
branches/UKMO/dev_r5518_GO6_GloSea6_package/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90
r11101 r15219 37 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hd28 !: depth of 28 C isotherm [m] 38 38 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: htc3 !: heat content of first 300 m [W] 39 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tav3 !: Average temp of first 300 m [degC] 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sav3 !: Average salinity of first 300 m [PSU] 39 41 40 42 !! * Substitutions … … 53 55 ! 54 56 ALLOCATE(hth(jpi,jpj), hd20(jpi,jpj), hd28(jpi,jpj), htc3(jpi,jpj), STAT=dia_hth_alloc) 57 ! 58 ALLOCATE(tav3(jpi,jpj), sav3(jpi,jpj), STAT=dia_hth_alloc) 55 59 ! 56 60 IF( lk_mpp ) CALL mpp_sum ( dia_hth_alloc ) … … 92 96 REAL(wp) :: zztmp, zzdep ! temporary scalars inside do loop 93 97 REAL(wp) :: zu, zv, zw, zut, zvt ! temporary workspace 98 REAL(wp) :: depth_remain ! temporary float 94 99 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zabs2 ! MLD: abs( tn - tn(10m) ) = ztem2 95 100 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ztm2 ! Top of thermocline: tn = tn(10m) - ztem2 … … 300 305 CALL iom_put( "28d", hd28 ) ! depth of the 28 isotherm 301 306 307 ! ---------------------------------------- ! 308 ! Average temp & salinity of first 300 m ! 309 ! Copied from the hc300 section below ! 310 ! ---------------------------------------- ! 311 ! find ilevel with (ilevel+1) the deepest W-level above 300m (we assume we can use e3t_0 to do this search...) 312 ilevel = 0 313 zthick_0 = 0._wp 314 DO jk = 1, jpkm1 315 zthick_0 = zthick_0 + e3t_1d(jk) 316 IF( zthick_0 < 300. ) ilevel = jk 317 END DO 318 ! surface boundary condition 319 IF( lk_vvl ) THEN ; zthick(:,:) = 0._wp ; tav3(:,:) = 0._wp ; sav3(:,:) = 0._wp 320 ELSE 321 ! For the surface layer calculate the integrated temp and salinity 322 ! The SSH "layer" is considered to be at the same temp/salinity as the 323 ! first ocean level. 324 zthick(:,:) = sshn(:,:) * tmask(:,:,1) 325 tav3(:,:) = tsn(:,:,1,jp_tem) * tmask(:,:,1) * zthick(:,:) 326 sav3(:,:) = tsn(:,:,1,jp_sal) * tmask(:,:,1) * zthick(:,:) 327 ENDIF 328 329 ! integration down to ilevel 330 ! For each level above 300m (1 to ilevel) calculate the integrated 331 ! temp and salinty (T|S * layer thickness), and sum the thickness 332 DO jk = 1, ilevel 333 zthick(:,:) = zthick(:,:) + fse3t(:,:,jk) * tmask(:,:,jk) 334 tav3 (:,:) = tav3 (:,:) + tsn(:,:,jk,jp_tem) * tmask(:,:,jk) * fse3t(:,:,jk) 335 sav3 (:,:) = sav3 (:,:) + tsn(:,:,jk,jp_sal) * tmask(:,:,jk) * fse3t(:,:,jk) 336 END DO 337 338 DO jj = 1, jpj 339 DO ji = 1, jpi 340 ! What distance is there remaining to get to 300m 341 depth_remain = 300.0 - zthick(ji,jj) 342 343 ! add the value of reamining thickness * T|S of the level beyond 344 ! 300m. 345 tav3(ji,jj) = tav3(ji,jj) + tsn(ji,jj,ilevel+1,jp_tem) * MIN( fse3t(ji,jj,ilevel+1), depth_remain ) & 346 * tmask(ji,jj,ilevel+1) 347 sav3(ji,jj) = sav3(ji,jj) + tsn(ji,jj,ilevel+1,jp_sal) * MIN( fse3t(ji,jj,ilevel+1), depth_remain ) & 348 * tmask(ji,jj,ilevel+1) 349 ! Add the remaining depth, this should take us to 300m (in most 350 ! places) 351 zthick(ji,jj) = zthick(ji,jj) + MIN( fse3t(ji,jj,ilevel+1), depth_remain ) * tmask(ji,jj,ilevel+1) 352 ! Divide by the depth to get the integrated temp|salinity 353 tav3(ji,jj) = tav3(ji,jj) / zthick(ji,jj) 354 sav3(ji,jj) = sav3(ji,jj) / zthick(ji,jj) 355 356 END DO 357 END DO 358 359 CALL iom_put( "tav300", tav3 ) ! first 300m average temperature 360 CALL iom_put( "sav300", sav3 ) ! first 300m average salinity 361 302 362 ! ----------------------------- ! 303 363 ! Heat content of first 300 m !
Note: See TracChangeset
for help on using the changeset viewer.