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_core.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_core.F90

    r3294 r3625  
    5252   INTEGER , PARAMETER ::   jp_wndi = 1           ! index of 10m wind velocity (i-component) (m/s)    at T-point 
    5353   INTEGER , PARAMETER ::   jp_wndj = 2           ! index of 10m wind velocity (j-component) (m/s)    at T-point 
    54    INTEGER , PARAMETER ::   jp_humi = 3           ! index of specific humidity               ( - ) 
     54   INTEGER , PARAMETER ::   jp_humi = 3           ! index of specific humidity               ( % ) 
    5555   INTEGER , PARAMETER ::   jp_qsr  = 4           ! index of solar heat                      (W/m2) 
    5656   INTEGER , PARAMETER ::   jp_qlw  = 5           ! index of Long wave                       (W/m2) 
     
    6969   REAL(wp), PARAMETER ::   Stef =    5.67e-8     ! Stefan Boltzmann constant 
    7070   REAL(wp), PARAMETER ::   Cice =    1.63e-3     ! transfer coefficient over ice 
    71    REAL(wp), PARAMETER ::   albo =    0.066       ! ocean albedo assumed to be contant 
     71   REAL(wp), PARAMETER ::   albo =    0.066       ! ocean albedo assumed to be constant 
    7272 
    7373   !                                  !!* Namelist namsbc_core : CORE bulk parameters 
     
    9696      !!      the 10m wind velocity (i-component) (m/s)    at T-point 
    9797      !!      the 10m wind velocity (j-component) (m/s)    at T-point 
    98       !!      the specific humidity               ( - ) 
     98      !!      the 10m or 2m specific humidity     ( % ) 
    9999      !!      the solar heat                      (W/m2) 
    100100      !!      the Long wave                       (W/m2) 
    101       !!      the 10m air temperature             (Kelvin) 
     101      !!      the 10m or 2m air temperature       (Kelvin) 
    102102      !!      the total precipitation (rain+snow) (Kg/m2/s) 
    103103      !!      the snow (solid prcipitation)       (kg/m2/s) 
    104       !!   OPTIONAL parameter (see ln_taudif namelist flag): 
    105       !!      the tau diff associated to HF tau   (N/m2)   at T-point  
     104      !!      the tau diff associated to HF tau   (N/m2)   at T-point   (ln_taudif=T) 
    106105      !!              (2) CALL blk_oce_core 
    107106      !! 
    108107      !!      C A U T I O N : never mask the surface stress fields 
    109       !!                      the stress is assumed to be in the mesh referential 
    110       !!                      i.e. the (i,j) referential 
     108      !!                      the stress is assumed to be in the (i,j) mesh referential 
    111109      !! 
    112110      !! ** Action  :   defined at each time-step at the air-sea interface 
    113111      !!              - utau, vtau  i- and j-component of the wind stress 
    114       !!              - taum        wind stress module at T-point 
    115       !!              - wndm        10m wind module at T-point 
    116       !!              - qns, qsr    non-slor and solar heat flux 
    117       !!              - emp, emps   evaporation minus precipitation 
     112      !!              - taum, wndm  wind stress and 10m wind modules at T-point 
     113      !!              - qns, qsr    non-solar and solar heat fluxes 
     114      !!              - emp         upward mass flux (evapo. - precip.) 
     115      !!              - sfx         salt flux due to freezing/melting (non-zero only if ice is present) 
     116      !!                            (set in limsbc(_2).F90) 
    118117      !!---------------------------------------------------------------------- 
    119118      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     
    125124      CHARACTER(len=100) ::  cn_dir   !   Root directory for location of core files 
    126125      TYPE(FLD_N), DIMENSION(jpfld) ::   slf_i     ! array of namelist informations on the fields to read 
    127       TYPE(FLD_N) ::   sn_wndi, sn_wndj, sn_humi, sn_qsr       ! informations about the fields to be read 
    128       TYPE(FLD_N) ::   sn_qlw , sn_tair, sn_prec, sn_snow      !   "                                 " 
    129       TYPE(FLD_N) ::   sn_tdif                                 !   "                                 " 
     126      TYPE(FLD_N) ::   sn_wndi, sn_wndj, sn_humi, sn_qsr             ! informations about the fields to be read 
     127      TYPE(FLD_N) ::   sn_qlw , sn_tair, sn_prec, sn_snow, sn_tdif   !       -                       - 
    130128      NAMELIST/namsbc_core/ cn_dir , ln_2m  , ln_taudif, rn_pfac,           & 
    131129         &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr ,           & 
     
    181179         CALL fld_fill( sf, slf_i, cn_dir, 'sbc_blk_core', 'flux formulation for ocean surface boundary condition', 'namsbc_core' ) 
    182180         ! 
    183       ENDIF 
    184  
    185       CALL fld_read( kt, nn_fsbc, sf )        ! input fields provided at the current time-step 
    186  
    187       !                                                        ! surface ocean fluxes computed with CLIO bulk formulea 
     181         sfx(:,:) = 0._wp                          ! salt flux; zero unless ice is present (computed in limsbc(_2).F90) 
     182         ! 
     183      ENDIF 
     184 
     185      CALL fld_read( kt, nn_fsbc, sf )             ! input fields provided at the current time-step 
     186 
     187      !                                            ! compute the surface ocean fluxes using CORE bulk formulea 
    188188      IF( MOD( kt - 1, nn_fsbc ) == 0 )   CALL blk_oce_core( sf, sst_m, ssu_m, ssv_m ) 
    189189 
     
    221221      !!              - qns     : Non Solar heat flux over the ocean    (W/m2) 
    222222      !!              - evap    : Evaporation over the ocean            (kg/m2/s) 
    223       !!              - emp(s)  : evaporation minus precipitation       (kg/m2/s) 
     223      !!              - emp     : evaporation minus precipitation       (kg/m2/s) 
    224224      !! 
    225225      !!  ** Nota  :   sf has to be a dummy argument for AGRIF on NEC 
     
    252252      zcoef_qsatw = 0.98 * 640380. / rhoa 
    253253       
    254       zst(:,:) = pst(:,:) + rt0      ! converte Celcius to Kelvin (and set minimum value far above 0 K) 
     254      zst(:,:) = pst(:,:) + rt0      ! convert SST from Celcius to Kelvin (and set minimum value far above 0 K) 
    255255 
    256256      ! ----------------------------------------------------------------------------- ! 
     
    378378      
    379379!CDIR COLLAPSE 
    380       qns(:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:)      ! Downward Non Solar flux 
    381 !CDIR COLLAPSE 
    382       emp(:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:,1) * rn_pfac * tmask(:,:,1) 
    383 !CDIR COLLAPSE 
    384       emps(:,:) = emp(:,:) 
     380      emp (:,:) = (  zevap(:,:)                                          &   ! mass flux (evap. - precip.) 
     381         &         - sf(jp_prec)%fnow(:,:,1) * rn_pfac  ) * tmask(:,:,1) 
     382!CDIR COLLAPSE 
     383      qns(:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:)                       &   ! Downward Non Solar flux 
     384         &     - sf(jp_snow)%fnow(:,:,1) * lfus                          &   ! remove latent melting heat for solid precip 
     385         &     - zevap(:,:) * pst(:,:) * rcp                             &   ! remove evap heat content at SST 
     386         &     + ( sf(jp_prec)%fnow(:,:,1) - sf(jp_snow)%fnow(:,:,1) )   &   ! add liquid precip heat content at Tair 
     387         &     * ( sf(jp_tair)%fnow(:,:,1) - rt0 ) * rcp                 &    
     388         &     + sf(jp_snow)%fnow(:,:,1)                                 &   ! add solid  precip heat content at min(Tair,Tsnow) 
     389         &     * ( MIN( sf(jp_tair)%fnow(:,:,1), rt0_snow ) - rt0 ) * cpic  
    385390      ! 
    386391      CALL iom_put( "qlw_oce",   zqlw )                 ! output downward longwave heat over the ocean 
    387392      CALL iom_put( "qsb_oce", - zqsb )                 ! output downward sensible heat over the ocean 
    388393      CALL iom_put( "qla_oce", - zqla )                 ! output downward latent   heat over the ocean 
     394      CALL iom_put( "qhc_oce",   qns-zqlw+zqsb+zqla )   ! output downward heat content of E-P over the ocean 
    389395      CALL iom_put( "qns_oce",   qns  )                 ! output downward non solar heat over the ocean 
    390396      ! 
Note: See TracChangeset for help on using the changeset viewer.