New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 3625 for branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90 – NEMO

Ignore:
Timestamp:
2012-11-21T14:19:18+01:00 (11 years ago)
Author:
acc
Message:

Branch dev_NOC_2012_r3555. #1006. Step 7. Check in code now merged with dev_r3385_NOCS04_HAMF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90

    r3294 r3625  
    1212 
    1313   !!---------------------------------------------------------------------- 
    14    !!   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 
     14   !!   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 
    1717   !!   blk_clio_qsr_oce : shortwave radiation for ocean computed from the cloud cover 
    1818   !!   blk_clio_qsr_ice : shortwave radiation for ice   computed from the cloud cover 
    19    !!   flx_blk_declin : solar declinaison 
     19   !!   flx_blk_declin   : solar declination 
    2020   !!---------------------------------------------------------------------- 
    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)   
    3233 
    3334   USE albedo 
     
    5051   INTEGER , PARAMETER ::   jp_vtau = 2           ! index of wind stress (j-component)      (N/m2)    at V-point 
    5152   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                     ( % ) 
    5455   INTEGER , PARAMETER ::   jp_tair = 6           ! index of 10m air temperature             (Kelvin) 
    5556   INTEGER , PARAMETER ::   jp_prec = 7           ! index of total precipitation (rain+snow) (Kg/m2/s) 
     
    100101      !!      the i-component of the stress                (N/m2) 
    101102      !!      the j-component of the stress                (N/m2) 
    102       !!      the 10m wind pseed module                    (m/s) 
     103      !!      the 10m wind speed module                    (m/s) 
    103104      !!      the 10m air temperature                      (Kelvin) 
    104       !!      the 10m specific humidity                    (-) 
    105       !!      the cloud cover                              (-) 
     105      !!      the 10m specific humidity                    (%) 
     106      !!      the cloud cover                              (%) 
    106107      !!      the total precipitation (rain+snow)          (Kg/m2/s) 
    107108      !!              (2) CALL blk_oce_clio 
    108109      !! 
    109110      !!      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 
    112112      !! 
    113113      !! ** Action  :   defined at each time-step at the air-sea interface 
     
    115115      !!              - taum        wind stress module at T-point 
    116116      !!              - 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) 
    119123      !!---------------------------------------------------------------------- 
    120       INTEGER, INTENT(in) ::   kt   ! ocean time step 
     124      INTEGER, INTENT( in  ) ::   kt   ! ocean time step 
    121125      !! 
    122126      INTEGER  ::   ifpr, jfpr   ! dummy indices 
     
    171175         ALLOCATE( sbudyko(jpi,jpj) , stauc(jpi,jpj), STAT=ierr3 ) 
    172176         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) 
    173179         ! 
    174180      ENDIF 
     
    205211      !!               - taum        wind stress module at T-point 
    206212      !!               - 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.) 
    209217      !!  ** Nota    :   sf has to be a dummy argument for AGRIF on NEC 
    210218      !!---------------------------------------------------------------------- 
     
    223231      REAL(wp) ::   zsst, ztatm, zcco1, zpatm, zcmax, zrmax     !    -         - 
    224232      REAL(wp) ::   zrhoa, zev, zes, zeso, zqatm, zevsqr        !    -         - 
    225       REAL(wp) ::   ztx2, zty2                                  !    -         - 
     233      REAL(wp) ::   ztx2, zty2, zcevap, zcprec                  !    -         - 
    226234      REAL(wp), POINTER, DIMENSION(:,:) ::   zqlw        ! long-wave heat flux over ocean 
    227235      REAL(wp), POINTER, DIMENSION(:,:) ::   zqla        ! latent heat flux over ocean 
     
    363371      !     III    Total FLUXES                                                       ! 
    364372      ! ----------------------------------------------------------------------------- ! 
    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 
    371386      CALL iom_put( "qlw_oce",   zqlw )   ! output downward longwave  heat over the ocean 
    372387      CALL iom_put( "qsb_oce", - zqsb )   ! output downward sensible  heat over the ocean 
     
    407422      !! 
    408423      !!  ** 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 
    417433      !!---------------------------------------------------------------------- 
    418434      REAL(wp), INTENT(in   ), DIMENSION(:,:,:)   ::   pst      ! ice surface temperature                   [Kelvin] 
     
    594610      ! 
    595611      ! ----------------------------------------------------------------------------- ! 
    596       !    Total FLUXES                                                       ! 
     612      !    Total FLUXES                                                               ! 
    597613      ! ----------------------------------------------------------------------------- ! 
    598614      ! 
     
    601617!CDIR COLLAPSE 
    602618      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 
    603628      ! 
    604629!!gm : not necessary as all input data are lbc_lnk... 
Note: See TracChangeset for help on using the changeset viewer.