- Timestamp:
- 2012-11-21T14:19:18+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
r3294 r3625 12 12 13 13 !!---------------------------------------------------------------------- 14 !! sbc_blk_clio : CLIO bulk formulation: read and update required input fields15 !! blk_clio_oce : ocean CLIO bulk formulea: compute momentum, heat and freswater fluxes for the ocean16 !! blk_ice_clio : ice CLIO bulk formulea: compute momentum, heat and freswater fluxes for the sea-ice14 !! sbc_blk_clio : CLIO bulk formulation: read and update required input fields 15 !! blk_clio_oce : ocean CLIO bulk formulea: compute momentum, heat and freswater fluxes for the ocean 16 !! blk_ice_clio : ice CLIO bulk formulea: compute momentum, heat and freswater fluxes for the sea-ice 17 17 !! blk_clio_qsr_oce : shortwave radiation for ocean computed from the cloud cover 18 18 !! blk_clio_qsr_ice : shortwave radiation for ice computed from the cloud cover 19 !! flx_blk_declin : solar declinaison19 !! flx_blk_declin : solar declination 20 20 !!---------------------------------------------------------------------- 21 USE oce ! ocean dynamics and tracers 22 USE dom_oce ! ocean space and time domain 23 USE phycst ! physical constants 24 USE fldread ! read input fields 25 USE sbc_oce ! Surface boundary condition: ocean fields 26 USE iom ! I/O manager library 27 USE in_out_manager ! I/O manager 28 USE lib_mpp ! distribued memory computing library 29 USE wrk_nemo ! work arrays 30 USE timing ! Timing 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 USE oce ! ocean dynamics and tracers 22 USE dom_oce ! ocean space and time domain 23 USE phycst ! physical constants 24 USE fldread ! read input fields 25 USE sbc_oce ! Surface boundary condition: ocean fields 26 USE iom ! I/O manager library 27 USE in_out_manager ! I/O manager 28 USE lib_mpp ! distribued memory computing library 29 USE wrk_nemo ! work arrays 30 USE timing ! Timing 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 32 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 32 33 33 34 USE albedo … … 50 51 INTEGER , PARAMETER :: jp_vtau = 2 ! index of wind stress (j-component) (N/m2) at V-point 51 52 INTEGER , PARAMETER :: jp_wndm = 3 ! index of 10m wind module (m/s) at T-point 52 INTEGER , PARAMETER :: jp_humi = 4 ! index of specific humidity ( -)53 INTEGER , PARAMETER :: jp_ccov = 5 ! index of cloud cover ( -)53 INTEGER , PARAMETER :: jp_humi = 4 ! index of specific humidity ( % ) 54 INTEGER , PARAMETER :: jp_ccov = 5 ! index of cloud cover ( % ) 54 55 INTEGER , PARAMETER :: jp_tair = 6 ! index of 10m air temperature (Kelvin) 55 56 INTEGER , PARAMETER :: jp_prec = 7 ! index of total precipitation (rain+snow) (Kg/m2/s) … … 100 101 !! the i-component of the stress (N/m2) 101 102 !! the j-component of the stress (N/m2) 102 !! the 10m wind pseed module (m/s)103 !! the 10m wind speed module (m/s) 103 104 !! the 10m air temperature (Kelvin) 104 !! the 10m specific humidity ( -)105 !! the cloud cover ( -)105 !! the 10m specific humidity (%) 106 !! the cloud cover (%) 106 107 !! the total precipitation (rain+snow) (Kg/m2/s) 107 108 !! (2) CALL blk_oce_clio 108 109 !! 109 110 !! C A U T I O N : never mask the surface stress fields 110 !! the stress is assumed to be in the mesh referential 111 !! i.e. the (i,j) referential 111 !! the stress is assumed to be in the (i,j) mesh referential 112 112 !! 113 113 !! ** Action : defined at each time-step at the air-sea interface … … 115 115 !! - taum wind stress module at T-point 116 116 !! - wndm 10m wind module at T-point 117 !! - qns, qsr non-slor and solar heat flux 118 !! - emp, emps evaporation minus precipitation 117 !! - qns non-solar heat flux including latent heat of solid 118 !! precip. melting and emp heat content 119 !! - qsr solar heat flux 120 !! - emp upward mass flux (evap. - precip) 121 !! - sfx salt flux; set to zero at nit000 but possibly non-zero 122 !! if ice is present (computed in limsbc(_2).F90) 119 123 !!---------------------------------------------------------------------- 120 INTEGER, INTENT( in) :: kt ! ocean time step124 INTEGER, INTENT( in ) :: kt ! ocean time step 121 125 !! 122 126 INTEGER :: ifpr, jfpr ! dummy indices … … 171 175 ALLOCATE( sbudyko(jpi,jpj) , stauc(jpi,jpj), STAT=ierr3 ) 172 176 IF( ierr3 > 0 ) CALL ctl_stop( 'STOP', 'sbc_blk_clio: unable to allocate arrays' ) 177 ! 178 sfx(:,:) = 0._wp ! salt flux; zero unless ice is present (computed in limsbc(_2).F90) 173 179 ! 174 180 ENDIF … … 205 211 !! - taum wind stress module at T-point 206 212 !! - wndm 10m wind module at T-point 207 !! - qns, qsr non-slor and solar heat flux 208 !! - emp, emps evaporation minus precipitation 213 !! - qns non-solar heat flux including latent heat of solid 214 !! precip. melting and emp heat content 215 !! - qsr solar heat flux 216 !! - emp suface mass flux (evap.-precip.) 209 217 !! ** Nota : sf has to be a dummy argument for AGRIF on NEC 210 218 !!---------------------------------------------------------------------- … … 223 231 REAL(wp) :: zsst, ztatm, zcco1, zpatm, zcmax, zrmax ! - - 224 232 REAL(wp) :: zrhoa, zev, zes, zeso, zqatm, zevsqr ! - - 225 REAL(wp) :: ztx2, zty2 233 REAL(wp) :: ztx2, zty2, zcevap, zcprec ! - - 226 234 REAL(wp), POINTER, DIMENSION(:,:) :: zqlw ! long-wave heat flux over ocean 227 235 REAL(wp), POINTER, DIMENSION(:,:) :: zqla ! latent heat flux over ocean … … 363 371 ! III Total FLUXES ! 364 372 ! ----------------------------------------------------------------------------- ! 365 366 !CDIR COLLAPSE 367 emp (:,:) = zqla(:,:) / cevap - sf(jp_prec)%fnow(:,:,1) / rday * tmask(:,:,1) 368 qns (:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:) ! Downward Non Solar flux 369 emps(:,:) = emp(:,:) 370 ! 373 zcevap = rcp / cevap ! convert zqla ==> evap (Kg/m2/s) ==> m/s ==> W/m2 374 zcprec = rcp / rday ! convert prec ( mm/day ==> m/s) ==> W/m2 375 376 !CDIR COLLAPSE 377 emp(:,:) = zqla(:,:) / cevap & ! freshwater flux 378 & - sf(jp_prec)%fnow(:,:,1) / rday * tmask(:,:,1) 379 ! 380 !CDIR COLLAPSE 381 qns(:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:) & ! Downward Non Solar flux 382 & - zqla(:,:) * pst(:,:) * zcevap & ! remove evap. heat content at SST in Celcius 383 & + sf(jp_prec)%fnow(:,:,1) * sf(jp_tair)%fnow(:,:,1) * zcprec ! add precip. heat content at Tair in Celcius 384 ! NB: if sea-ice model, the snow precip are computed and the associated heat is added to qns (see blk_ice_clio) 385 371 386 CALL iom_put( "qlw_oce", zqlw ) ! output downward longwave heat over the ocean 372 387 CALL iom_put( "qsb_oce", - zqsb ) ! output downward sensible heat over the ocean … … 407 422 !! 408 423 !! ** Action : call albedo_oce/albedo_ice to compute ocean/ice albedo 409 !! computation of snow precipitation 410 !! computation of solar flux at the ocean and ice surfaces 411 !! computation of the long-wave radiation for the ocean and sea/ice 412 !! computation of turbulent heat fluxes over water and ice 413 !! computation of evaporation over water 414 !! computation of total heat fluxes sensitivity over ice (dQ/dT) 415 !! computation of latent heat flux sensitivity over ice (dQla/dT) 416 !! 424 !! - snow precipitation 425 !! - solar flux at the ocean and ice surfaces 426 !! - the long-wave radiation for the ocean and sea/ice 427 !! - turbulent heat fluxes over water and ice 428 !! - evaporation over water 429 !! - total heat fluxes sensitivity over ice (dQ/dT) 430 !! - latent heat flux sensitivity over ice (dQla/dT) 431 !! - qns : modified the non solar heat flux over the ocean 432 !! to take into account solid precip latent heat flux 417 433 !!---------------------------------------------------------------------- 418 434 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pst ! ice surface temperature [Kelvin] … … 594 610 ! 595 611 ! ----------------------------------------------------------------------------- ! 596 ! Total FLUXES !612 ! Total FLUXES ! 597 613 ! ----------------------------------------------------------------------------- ! 598 614 ! … … 601 617 !CDIR COLLAPSE 602 618 p_tpr(:,:) = sf(jp_prec)%fnow(:,:,1) / rday ! total precipitation [kg/m2/s] 619 ! 620 ! ----------------------------------------------------------------------------- ! 621 ! Correct the OCEAN non solar flux with the existence of solid precipitation ! 622 ! ---------------=====--------------------------------------------------------- ! 623 !CDIR COLLAPSE 624 qns(:,:) = qns(:,:) & ! update the non-solar heat flux with: 625 & - p_spr(:,:) * lfus & ! remove melting solid precip 626 & + p_spr(:,:) * MIN( sf(jp_tair)%fnow(:,:,1), rt0_snow - rt0 ) * cpic & ! add solid P at least below melting 627 & - p_spr(:,:) * sf(jp_tair)%fnow(:,:,1) * rcp ! remove solid precip. at Tair 603 628 ! 604 629 !!gm : not necessary as all input data are lbc_lnk...
Note: See TracChangeset
for help on using the changeset viewer.