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 1970 for branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC – NEMO

Ignore:
Timestamp:
2010-06-25T16:58:03+02:00 (14 years ago)
Author:
acc
Message:

ticket #684 step 5: Add in changes from the trunk between revisions 1821 and 1879.

Location:
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/fldread.F90

    r1953 r1970  
    186186                        &                    nday   + 1                   - nmonth_len(nmonth) * COUNT((/llnxtmth/)), llstop ) 
    187187 
    188                      IF( sd(jf)%num == 0 .AND. .NOT. llstop ) THEN    ! next year file does not exist 
     188                     IF( sd(jf)%num <= 0 .AND. .NOT. llstop ) THEN    ! next year file does not exist 
    189189                        CALL ctl_warn('next year/month/day file: '//TRIM(sd(jf)%clname)//     & 
    190190                                &     ' not present -> back to current year/month/day') 
  • branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/geo2ocean.F90

    r1613 r1970  
    311311 
    312312      ! lateral boundary cond.: T-, U-, V-, F-pts, sgn 
    313       CALL lbc_lnk( gcost, 'T', 1. )   ;   CALL lbc_lnk( gsint, 'T', -1. ) 
    314       CALL lbc_lnk( gcosu, 'U', 1. )   ;   CALL lbc_lnk( gsinu, 'U', -1. ) 
    315       CALL lbc_lnk( gcosv, 'V', 1. )   ;   CALL lbc_lnk( gsinv, 'V', -1. ) 
    316       CALL lbc_lnk( gcosf, 'F', 1. )   ;   CALL lbc_lnk( gsinf, 'F', -1. ) 
     313      CALL lbc_lnk( gcost, 'T', -1. )   ;   CALL lbc_lnk( gsint, 'T', -1. ) 
     314      CALL lbc_lnk( gcosu, 'U', -1. )   ;   CALL lbc_lnk( gsinu, 'U', -1. ) 
     315      CALL lbc_lnk( gcosv, 'V', -1. )   ;   CALL lbc_lnk( gsinv, 'V', -1. ) 
     316      CALL lbc_lnk( gcosf, 'F', -1. )   ;   CALL lbc_lnk( gsinf, 'F', -1. ) 
    317317 
    318318   END SUBROUTINE angle 
  • branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbccpl.F90

    r1766 r1970  
    2323   USE sbc_oce         ! Surface boundary condition: ocean fields 
    2424   USE sbc_ice         ! Surface boundary condition: ice fields 
     25   USE phycst          ! physical constants 
    2526#if defined key_lim3 
    2627   USE par_ice         ! ice parameters 
     
    4546   USE lib_mpp         ! distribued memory computing library 
    4647   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    47    USE phycst, ONLY : xlsn, rhosn, xlic, rhoic 
    4848#if defined key_cpl_carbon_cycle 
    4949   USE p4zflx, ONLY : oce_co2 
     
    274274      srcv(jpr_itz2)%clname = 'O_ITauz2'      ! 3rd   -      -         -     -  
    275275      !  
    276       srcv(jpr_otx1:jpr_itz2)%nsgn = -1                           ! Vectors: change of sign at north fold 
     276      ! Vectors: change of sign at north fold ONLY if on the local grid 
     277      IF( TRIM( cn_rcv_tau(3) ) == 'local grid' )   srcv(jpr_otx1:jpr_itz2)%nsgn = -1. 
    277278       
    278279      !                                                           ! Set grid and action 
     
    714715         IF( srcv(jpr_qnsoce)%laction )   qns(:,:) = frcv(:,:,jpr_qnsoce) 
    715716         IF( srcv(jpr_qnsmix)%laction )   qns(:,:) = frcv(:,:,jpr_qnsmix)         
    716          !   energy for melting solid precipitation over free ocean 
    717          zcoef = xlsn / rhosn 
    718          qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * zcoef 
     717         qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * lfus              ! add the latent heat of solid precip. melting  
     718 
    719719         !                                                       ! solar flux over the ocean          (qsr) 
    720720         IF( srcv(jpr_qsroce)%laction )   qsr(:,:) = frcv(:,:,jpr_qsroce)  
     
    11171117            &                                                   +          pist(:,:,1)   * zicefr(:,:,1) ) ) 
    11181118      END SELECT 
    1119       !                                                           ! snow melting heat flux .... 
    1120       !   energy for melting solid precipitation over ice-free ocean 
    1121       zcoef = xlsn / rhosn 
    1122       ztmp(:,:) = p_frld(:,:,1) * zsnow(:,:) * zcoef 
    1123       pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 
     1119      ztmp(:,:) = p_frld(:,:,1) * zsnow(:,:) * lfus               ! add the latent heat of solid precip. melting 
     1120      pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:)                   ! over free ocean  
    11241121      IF( lk_diaar5 )   CALL iom_put( 'hflx_snow_cea', ztmp + zsnow(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average) 
    11251122!!gm 
     
    11301127!! 
    11311128!! similar job should be done for snow and precipitation temperature 
    1132       !                                                           ! Iceberg melting heat flux .... 
    1133       !   energy for iceberg melting  
    1134       IF( srcv(jpr_cal)%laction ) THEN  
    1135          zcoef = xlic / rhoic 
    1136          ztmp(:,:) = frcv(:,:,jpr_cal) * zcoef 
     1129      !                                      
     1130      IF( srcv(jpr_cal)%laction ) THEN                            ! Iceberg melting  
     1131         ztmp(:,:) = frcv(:,:,jpr_cal) * lfus                     ! add the latent heat of iceberg melting  
    11371132         pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 
    11381133         IF( lk_diaar5 )   CALL iom_put( 'hflx_cal_cea', ztmp + frcv(:,:,jpr_cal) * zcptn(:,:) )   ! heat flux from calving 
  • branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbcfwb.F90

    r1715 r1970  
    6565      INTEGER  ::   inum                  ! temporary logical unit 
    6666      INTEGER  ::   ikty, iyear           !  
    67       REAL(wp) ::   z_emp, z_emp_nsrf       ! temporary scalars 
     67      REAL(wp) ::   z_emp, z_emp_nsrf, zsum_emp, zsum_erp       ! temporary scalars 
    6868      REAL(wp) ::   zsurf_neg, zsurf_pos, zsurf_tospread 
    6969      REAL(wp), DIMENSION(jpi,jpj) ::   ztmsk_neg, ztmsk_pos, ztmsk_tospread 
     
    165165            ! 
    166166            IF( lk_mpp )   CALL  mpp_sum( z_emp ) 
     167            IF( lk_mpp )   CALL  mpp_sum( zsurf_neg ) 
     168            IF( lk_mpp )   CALL  mpp_sum( zsurf_pos ) 
    167169             
    168170            IF( z_emp < 0.e0 ) THEN 
     
    177179 
    178180            ! emp global mean over <0 or >0 erp area 
    179             z_emp_nsrf = SUM( e1e2_i(:,:) * z_emp ) / ( zsurf_tospread + rsmall ) 
     181            zsum_emp = SUM( e1e2_i(:,:) * z_emp ) 
     182            IF( lk_mpp )   CALL  mpp_sum( zsum_emp ) 
     183            z_emp_nsrf =  zsum_emp / ( zsurf_tospread + rsmall ) 
    180184            ! weight to respect erp field 2D structure  
    181             z_wgt(:,:) = ztmsk_tospread(:,:) * erp(:,:) / ( SUM( ztmsk_tospread(:,:) * erp(:,:) * e1e2_i(:,:) ) + rsmall ) 
     185            zsum_erp = SUM( ztmsk_tospread(:,:) * erp(:,:) * e1e2_i(:,:) ) 
     186            IF( lk_mpp )   CALL  mpp_sum( zsum_erp ) 
     187            z_wgt(:,:) = ztmsk_tospread(:,:) * erp(:,:) / ( zsum_erp + rsmall ) 
     188 
    182189            ! final correction term to apply 
    183190            zerp_cor(:,:) = -1. * z_emp_nsrf * zsurf_tospread * z_wgt(:,:) 
Note: See TracChangeset for help on using the changeset viewer.