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 1742 for trunk – NEMO

Changeset 1742 for trunk


Ignore:
Timestamp:
2009-11-20T09:46:06+01:00 (14 years ago)
Author:
smasson
Message:

sbccpl: bugfix of pqsr_ice + energy due to iceberg melting, see ticket:607

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SBC/sbccpl.F90

    r1726 r1742  
    4545   USE lib_mpp         ! distribued memory computing library 
    4646   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    47    USE phycst, ONLY : xlsn, rhosn 
     47   USE phycst, ONLY : xlsn, rhosn, xlic, rhoic 
    4848#if defined key_cpl_carbon_cycle 
    4949   USE p4zflx, ONLY : oce_co2 
     
    10381038      INTEGER ::   isec, info       ! temporary integer 
    10391039      REAL(wp)::   zcoef, ztsurf    ! temporary scalar 
    1040       REAL(wp), DIMENSION(jpi,jpj)::   zsnow    ! snow precipitation  
     1040      REAL(wp), DIMENSION(jpi,jpj    )::   zsnow    ! snow precipitation  
     1041      REAL(wp), DIMENSION(jpi,jpj,jpl)::   zicefr   ! ice fraction  
    10411042      !!---------------------------------------------------------------------- 
     1043      zicefr(:,:,1) = 1.- p_frld(:,:,1) 
    10421044      ! 
    10431045      !                                                      ! ========================= ! 
     
    10541056         zsnow   (:,:) = frcv(:,:,jpr_snow) 
    10551057      CASE( 'oce and ice'   )   ! received fields: jpr_sbpr, jpr_semp, jpr_oemp 
    1056          pemp_tot(:,:) = p_frld(:,:,1) * frcv(:,:,jpr_oemp) + (1.- p_frld(:,:,1)) * frcv(:,:,jpr_sbpr)  
     1058         pemp_tot(:,:) = p_frld(:,:,1) * frcv(:,:,jpr_oemp) + zicefr(:,:,1) * frcv(:,:,jpr_sbpr)  
    10571059         pemp_ice(:,:) = frcv(:,:,jpr_semp) 
    10581060         zsnow   (:,:) = - frcv(:,:,jpr_semp) + frcv(:,:,jpr_ievp) 
     
    10881090         pqns_ice(:,:,1) = frcv(:,:,jpr_qnsice) 
    10891091      CASE( 'oce and ice' )       ! the total flux is computed from ocean and ice fluxes 
    1090          pqns_tot(:,:  ) =  p_frld(:,:,1) * frcv(:,:,jpr_qnsoce) + ( 1.- p_frld(:,:,1) ) * frcv(:,:,jpr_qnsice) 
     1092         pqns_tot(:,:  ) =  p_frld(:,:,1) * frcv(:,:,jpr_qnsoce) + zicefr(:,:,1) * frcv(:,:,jpr_qnsice) 
    10911093         pqns_ice(:,:,1) =  frcv(:,:,jpr_qnsice) 
    10921094      CASE( 'mixed oce-ice' )     ! the ice flux is cumputed from the total flux, the SST and ice informations 
    10931095         pqns_tot(:,:  ) = frcv(:,:,jpr_qnsmix) 
    10941096         pqns_ice(:,:,1) = frcv(:,:,jpr_qnsmix)    & 
    1095             &            + frcv(:,:,jpr_dqnsdt) * ( pist(:,:,1) - ( (rt0 + psst(:,:  ) ) *        p_frld(:,:,1)   & 
    1096             &                                                   +          pist(:,:,1)   * ( 1. - p_frld(:,:,1) ) ) ) 
     1097            &            + frcv(:,:,jpr_dqnsdt) * ( pist(:,:,1) - ( (rt0 + psst(:,:  ) ) * p_frld(:,:,1)   & 
     1098            &                                                   +          pist(:,:,1)   * zicefr(:,:,1) ) ) 
    10971099      END SELECT 
    10981100      !                                                           ! snow melting heat flux .... 
    1099       !   energy for melting solid precipitation over free ocean 
     1101      !   energy for melting solid precipitation over ice-free ocean 
    11001102      zcoef = xlsn / rhosn 
    11011103      pqns_tot(:,:) = pqns_tot(:,:) - p_frld(:,:,1) * zsnow(:,:) * zcoef 
     
    11071109!! 
    11081110!! similar job should be done for snow and precipitation temperature 
     1111      !                                                           ! Iceberg melting heat flux .... 
     1112      !   energy for iceberg melting  
     1113      IF( srcv(jpr_cal)%laction ) THEN  
     1114         zcoef = xlic / rhoic 
     1115         pqns_tot(:,:) = pqns_tot(:,:) - frcv(:,:,jpr_cal)(:,:) * zcoef 
     1116      ENDIF 
    11091117 
    11101118      !                                                      ! ========================= ! 
     
    11151123         pqsr_ice(:,:,1) = frcv(:,:,jpr_qsrice) 
    11161124      CASE( 'oce and ice' ) 
    1117          pqsr_tot(:,:  ) =  p_frld(:,:,1) * frcv(:,:,jpr_qsroce) + ( 1.- p_frld(:,:,1) ) * frcv(:,:,jpr_qsrice) 
     1125         pqsr_tot(:,:  ) =  p_frld(:,:,1) * frcv(:,:,jpr_qsroce) + zicefr(:,:,1) * frcv(:,:,jpr_qsrice) 
    11181126         pqsr_ice(:,:,1) =  frcv(:,:,jpr_qsrice) 
    11191127      CASE( 'mixed oce-ice' ) 
     
    11221130!       ( see OASIS3 user guide, 5th edition, p39 ) 
    11231131         pqsr_ice(:,:,1) = frcv(:,:,jpr_qsrmix) * ( 1.- palbi(:,:,1) )   & 
    1124             &            / (  1.- ( albedo_oce_mix(:,:  ) * ( 1.- p_frld(:,:,1) )   & 
    1125             &                     + palbi         (:,:,1) *       p_frld(:,:,1)   ) ) 
     1132            &            / (  1.- ( albedo_oce_mix(:,:  ) * p_frld(:,:,1)   & 
     1133            &                     + palbi         (:,:,1) * zicefr(:,:,1) ) ) 
    11261134      END SELECT 
    11271135 
Note: See TracChangeset for help on using the changeset viewer.