Changeset 9990
- Timestamp:
- 2018-07-24T14:08:14+02:00 (6 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/cfgs/ORCA2_ICE_PISCES/EXPREF/file_def_nemo-oce.xml
r9572 r9990 37 37 <field field_ref="wspd" name="windsp" /> 38 38 <field field_ref="precip" name="precip" /> 39 <field field_ref="berg_melt_qlat" name="berg_melt_qlat" /> 39 40 <!-- ice and snow --> 40 41 <field field_ref="snowpre" /> -
NEMO/trunk/cfgs/SHARED/field_def_nemo-oce.xml
r9934 r9990 531 531 <field_group id="icbvar" domain_ref="grid_T" > 532 532 <field id="berg_melt" long_name="icb melt rate of icebergs" unit="kg/m2/s" /> 533 <field id="berg_melt_hcflx" long_name="icb heat flux to ocean due to melting heat content" unit="J/m2/s" /> 534 <field id="berg_melt_qlat" long_name="icb heat flux to ocean due to melting latent heat" unit="J/m2/s" /> 533 535 <field id="berg_buoy_melt" long_name="icb buoyancy component of iceberg melt rate" unit="kg/m2/s" /> 534 536 <field id="berg_eros_melt" long_name="icb erosion component of iceberg melt rate" unit="kg/m2/s" /> -
NEMO/trunk/src/OCE/ICB/icbdia.F90
r9598 r9990 51 51 52 52 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: berg_melt ! Melting+erosion rate of icebergs [kg/s/m2] 53 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: berg_melt_hcflx ! Heat flux to ocean due to heat content of melting icebergs [J/s/m2] 54 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: berg_melt_qlat ! Heat flux to ocean due to latent heat of melting icebergs [J/s/m2] 53 55 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: buoy_melt ! Buoyancy component of melting rate [kg/s/m2] 54 56 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: eros_melt ! Erosion component of melting rate [kg/s/m2] … … 101 103 102 104 ALLOCATE( berg_melt (jpi,jpj) ) ; berg_melt (:,:) = 0._wp 105 ALLOCATE( berg_melt_hcflx(jpi,jpj) ) ; berg_melt_hcflx(:,:) = 0._wp 106 ALLOCATE( berg_melt_qlat(jpi,jpj) ) ; berg_melt_qlat(:,:) = 0._wp 103 107 ALLOCATE( buoy_melt (jpi,jpj) ) ; buoy_melt (:,:) = 0._wp 104 108 ALLOCATE( eros_melt (jpi,jpj) ) ; eros_melt (:,:) = 0._wp … … 364 368 IF( .NOT.ln_bergdia ) RETURN 365 369 berg_melt (:,:) = 0._wp 370 berg_melt_hcflx(:,:) = 0._wp 371 berg_melt_qlat(:,:) = 0._wp 366 372 buoy_melt (:,:) = 0._wp 367 373 eros_melt (:,:) = 0._wp … … 384 390 ! 385 391 CALL iom_put( "berg_melt" , berg_melt (:,:) ) ! Melt rate of icebergs [kg/m2/s] 392 !! NB. The berg_melt_hcflx field is currently always zero - see comment in icbthm.F90 393 CALL iom_put( "berg_melt_hcflx" , berg_melt_hcflx(:,:)) ! Heat flux to ocean due to heat content of melting icebergs [J/m2/s] 394 CALL iom_put( "berg_melt_qlat" , berg_melt_qlat(:,:) ) ! Heat flux to ocean due to latent heat of melting icebergs [J/m2/s] 386 395 CALL iom_put( "berg_buoy_melt" , buoy_melt (:,:) ) ! Buoyancy component of iceberg melt rate [kg/m2/s] 387 396 CALL iom_put( "berg_eros_melt" , eros_melt (:,:) ) ! Erosion component of iceberg melt rate [kg/m2/s] … … 471 480 472 481 473 SUBROUTINE icb_dia_melt(ki, kj, pmnew, pheat , pmass_scale, &482 SUBROUTINE icb_dia_melt(ki, kj, pmnew, pheat_hcflux, pheat_latent, pmass_scale, & 474 483 & pdM, pdMbitsE, pdMbitsM, pdMb, pdMe, & 475 484 & pdMv, pz1_dt_e1e2 ) … … 477 486 !!---------------------------------------------------------------------- 478 487 INTEGER , INTENT(in) :: ki, kj 479 REAL(wp), INTENT(in) :: pmnew, pheat , pmass_scale488 REAL(wp), INTENT(in) :: pmnew, pheat_hcflux, pheat_latent, pmass_scale 480 489 REAL(wp), INTENT(in) :: pdM, pdMbitsE, pdMbitsM, pdMb, pdMe, pdMv, pz1_dt_e1e2 481 490 !!---------------------------------------------------------------------- … … 484 493 ! 485 494 berg_melt (ki,kj) = berg_melt (ki,kj) + pdM * pz1_dt_e1e2 ! kg/m2/s 495 berg_melt_hcflx (ki,kj) = berg_melt_hcflx (ki,kj) + pheat_hcflux * pz1_dt_e1e2 ! J/m2/s 496 berg_melt_qlat (ki,kj) = berg_melt_qlat (ki,kj) + pheat_latent * pz1_dt_e1e2 ! J/m2/s 486 497 bits_src (ki,kj) = bits_src (ki,kj) + pdMbitsE * pz1_dt_e1e2 ! mass flux into bergy bitskg/m2/s 487 498 bits_melt (ki,kj) = bits_melt (ki,kj) + pdMbitsM * pz1_dt_e1e2 ! melt rate of bergy bits kg/m2/s … … 489 500 eros_melt (ki,kj) = eros_melt (ki,kj) + pdMe * pz1_dt_e1e2 ! erosion rate kg/m2/s 490 501 conv_melt (ki,kj) = conv_melt (ki,kj) + pdMv * pz1_dt_e1e2 ! kg/m2/s 491 heat_to_ocean_net = heat_to_ocean_net + pheat* pmass_scale * berg_dt ! J502 heat_to_ocean_net = heat_to_ocean_net + (pheat_hcflux + pheat_latent) * pmass_scale * berg_dt ! J 492 503 IF( pmnew <= 0._wp ) nbergs_melted = nbergs_melted + 1 ! Delete the berg if completely melted 493 504 ! -
NEMO/trunk/src/OCE/ICB/icbthm.F90
r9940 r9990 50 50 REAL(wp) :: zM, zT, zW, zL, zSST, zVol, zLn, zWn, zTn, znVol, zIC, zDn 51 51 REAL(wp) :: zMv, zMe, zMb, zmelt, zdvo, zdva, zdM, zSs, zdMe, zdMb, zdMv 52 REAL(wp) :: zMnew, zMnew1, zMnew2, zheat , z1_1252 REAL(wp) :: zMnew, zMnew1, zMnew2, zheat_hcflux, zheat_latent, z1_12 53 53 REAL(wp) :: zMbits, znMbits, zdMbitsE, zdMbitsM, zLbits, zAbits, zMbb 54 54 REAL(wp) :: zxi, zyj, zff, z1_rday, z1_e1e2, zdt, z1_dt, z1_dt_e1e2 … … 68 68 ! 69 69 berg_grid%floating_melt(:,:) = 0._wp 70 ! calving_hflx re-used here as temporary workspace for the heat flux associated with melting 70 71 berg_grid%calving_hflx(:,:) = 0._wp 71 72 ! … … 166 167 zmelt = ( zdM - ( zdMbitsE - zdMbitsM ) ) * z1_dt ! kg/s 167 168 berg_grid%floating_melt(ii,ij) = berg_grid%floating_melt(ii,ij) + zmelt * z1_e1e2 ! kg/m2/s 168 zheat = zmelt * pt%heat_density ! kg/s x J/kg = J/s 169 berg_grid%calving_hflx (ii,ij) = berg_grid%calving_hflx (ii,ij) + zheat * z1_e1e2 ! W/m2 170 CALL icb_dia_melt( ii, ij, zMnew, zheat, this%mass_scaling, & 169 !! NB. The src_calving_hflx field is currently hardwired to zero in icb_stp, which means that the 170 !! heat density of the icebergs is zero and the heat content flux to the ocean from iceberg 171 !! melting is always zero. Leaving the term in the code until such a time as this is fixed. DS. 172 zheat_hcflux = zmelt * pt%heat_density ! heat content flux : kg/s x J/kg = J/s 173 zheat_latent = - zmelt * rLfus ! latent heat flux: kg/s x J/kg = J/s 174 berg_grid%calving_hflx (ii,ij) = berg_grid%calving_hflx (ii,ij) + ( zheat_hcflux + zheat_latent ) * z1_e1e2 ! W/m2 175 CALL icb_dia_melt( ii, ij, zMnew, zheat_hcflux, zheat_latent, this%mass_scaling, & 171 176 & zdM, zdMbitsE, zdMbitsM, zdMb, zdMe, & 172 177 & zdMv, z1_dt_e1e2 ) … … 214 219 IF(.NOT. ln_passive_mode ) THEN 215 220 emp (:,:) = emp (:,:) - berg_grid%floating_melt(:,:) 216 !! qns (:,:) = qns (:,:) + berg_grid%calving_hflx (:,:) !!gm heat flux not yet properly coded ==>> need it, SOLVE that! 221 qns (:,:) = qns (:,:) + berg_grid%calving_hflx (:,:) 217 222 ENDIF 218 223 !
Note: See TracChangeset
for help on using the changeset viewer.