Changeset 1970 for branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC
- Timestamp:
- 2010-06-25T16:58:03+02:00 (14 years ago)
- 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 186 186 & nday + 1 - nmonth_len(nmonth) * COUNT((/llnxtmth/)), llstop ) 187 187 188 IF( sd(jf)%num == 0 .AND. .NOT. llstop ) THEN ! next year file does not exist188 IF( sd(jf)%num <= 0 .AND. .NOT. llstop ) THEN ! next year file does not exist 189 189 CALL ctl_warn('next year/month/day file: '//TRIM(sd(jf)%clname)// & 190 190 & ' not present -> back to current year/month/day') -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/geo2ocean.F90
r1613 r1970 311 311 312 312 ! 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. ) 317 317 318 318 END SUBROUTINE angle -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbccpl.F90
r1766 r1970 23 23 USE sbc_oce ! Surface boundary condition: ocean fields 24 24 USE sbc_ice ! Surface boundary condition: ice fields 25 USE phycst ! physical constants 25 26 #if defined key_lim3 26 27 USE par_ice ! ice parameters … … 45 46 USE lib_mpp ! distribued memory computing library 46 47 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 47 USE phycst, ONLY : xlsn, rhosn, xlic, rhoic48 48 #if defined key_cpl_carbon_cycle 49 49 USE p4zflx, ONLY : oce_co2 … … 274 274 srcv(jpr_itz2)%clname = 'O_ITauz2' ! 3rd - - - - 275 275 ! 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. 277 278 278 279 ! ! Set grid and action … … 714 715 IF( srcv(jpr_qnsoce)%laction ) qns(:,:) = frcv(:,:,jpr_qnsoce) 715 716 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 719 719 ! ! solar flux over the ocean (qsr) 720 720 IF( srcv(jpr_qsroce)%laction ) qsr(:,:) = frcv(:,:,jpr_qsroce) … … 1117 1117 & + pist(:,:,1) * zicefr(:,:,1) ) ) 1118 1118 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 1124 1121 IF( lk_diaar5 ) CALL iom_put( 'hflx_snow_cea', ztmp + zsnow(:,:) * zcptn(:,:) ) ! heat flux from snow (cell average) 1125 1122 !!gm … … 1130 1127 !! 1131 1128 !! 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 1137 1132 pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 1138 1133 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 65 65 INTEGER :: inum ! temporary logical unit 66 66 INTEGER :: ikty, iyear ! 67 REAL(wp) :: z_emp, z_emp_nsrf ! temporary scalars67 REAL(wp) :: z_emp, z_emp_nsrf, zsum_emp, zsum_erp ! temporary scalars 68 68 REAL(wp) :: zsurf_neg, zsurf_pos, zsurf_tospread 69 69 REAL(wp), DIMENSION(jpi,jpj) :: ztmsk_neg, ztmsk_pos, ztmsk_tospread … … 165 165 ! 166 166 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 ) 167 169 168 170 IF( z_emp < 0.e0 ) THEN … … 177 179 178 180 ! 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 ) 180 184 ! 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 182 189 ! final correction term to apply 183 190 zerp_cor(:,:) = -1. * z_emp_nsrf * zsurf_tospread * z_wgt(:,:)
Note: See TracChangeset
for help on using the changeset viewer.