- Timestamp:
- 2010-05-06T10:40:07+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/OPA_SRC/SBC/sbccpl.F90
r1833 r1859 4 4 !! Surface Boundary Condition : momentum, heat and freshwater fluxes in coupled mode 5 5 !!====================================================================== 6 !! History : 2.0 ! 06-2007 (R. Redler, N. Keenlyside, W. Park) Original code split into flxmod & taumod 7 !! 3.0 ! 02-2008 (G. Madec, C Talandier) surface module 8 !! 3.1 ! 02-2009 (G. Madec, S. Masson, E. Maisonave, A. Caubel) generic coupled interface 6 !! History : 2.0 ! 2007-06 (R. Redler, N. Keenlyside, W. Park) Original code split into flxmod & taumod 7 !! 3.0 ! 2008-02 (G. Madec, C Talandier) surface module 8 !! 3.1 ! 2009-02 (G. Madec, S. Masson, E. Maisonave, A. Caubel) generic coupled interface 9 !! 3.3 ! 2010-05 (Y. Aksenov G. Madec) salt flux + heat associated with emp 9 10 !!---------------------------------------------------------------------- 10 11 #if defined key_oasis3 || defined key_oasis4 … … 156 157 # include "vectopt_loop_substitute.h90" 157 158 !!---------------------------------------------------------------------- 158 !! NEMO/OPA 3. 0 , LOCEAN-IPSL (2008)159 !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010) 159 160 !! $Id$ 160 161 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) … … 562 563 !! ** Action : update utau, vtau ocean stress at U,V grid 563 564 !! taum, wndm wind stres and wind speed module at T-point 564 !! qns , qsr non solar and solar ocean heat fluxes ('ocean only case) 565 !! emp = emps evap. - precip. (- runoffs) (- calving) ('ocean only case) 565 !! qns non solar heat fluxes including emp heat content (ocean only case) 566 !! and the latent heat flux of solid precip. melting 567 !! qsr solar ocean heat fluxes (ocean only case) 568 !! emp upward mass flux [evap. - precip. (- runoffs) (- calving)] (ocean only case) 566 569 !!---------------------------------------------------------------------- 567 570 INTEGER, INTENT(in) :: kt ! ocean model time step index … … 697 700 ENDIF 698 701 699 ! u(v)tau and taum will be modified by ice model ( wndm will be changed by PISCES)702 ! u(v)tau and taum will be modified by ice model (and wndm will be changed by PISCES) 700 703 ! -> need to be reset before each call of the ice/fsbc 701 704 IF( MOD( kt-1, k_fsbc ) == 0 ) THEN … … 712 715 ! ! ========================= ! 713 716 ! 714 ! ! non solar heat flux over the ocean (qns) 715 IF( srcv(jpr_qnsoce)%laction ) qns(:,:) = frcv(:,:,jpr_qnsoce) 716 IF( srcv(jpr_qnsmix)%laction ) qns(:,:) = frcv(:,:,jpr_qnsmix) 717 ! energy for melting solid precipitation over free ocean 718 zcoef = xlsn / rhosn 719 qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * zcoef 720 ! ! solar flux over the ocean (qsr) 721 IF( srcv(jpr_qsroce)%laction ) qsr(:,:) = frcv(:,:,jpr_qsroce) 722 IF( srcv(jpr_qsrmix)%laction ) qsr(:,:) = frcv(:,:,jpr_qsrmix) 723 ! 724 ! ! total freshwater fluxes over the ocean (emp, emps) 717 ! ! total freshwater fluxes over the ocean (emp) 725 718 SELECT CASE( TRIM( cn_rcv_emp ) ) ! evaporation - precipitation 726 719 CASE( 'conservative' ) … … 752 745 !! ENDIF 753 746 !!gm end of internal cooking 754 ! 755 emps(:,:) = emp(:,:) ! concentration/dilution = emp 756 757 ! ! 10 m wind speed 758 IF( srcv(jpr_w10m)%laction ) wndm(:,:) = frcv(:,:,jpr_w10m) 747 ! 748 ! ! non solar heat flux over the ocean (qns) 749 IF( srcv(jpr_qnsoce)%laction ) qns(:,:) = frcv(:,:,jpr_qnsoce) 750 IF( srcv(jpr_qnsmix)%laction ) qns(:,:) = frcv(:,:,jpr_qnsmix) 751 ! 752 zcoef = xlsn / rhosn ! qns update over free ocean with: 753 qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * zcoef ! energy for melting solid precipitation over free ocean 754 & - emp(:,:) * sst_m(:,:) * rcp ! remove heat content due to mass flux (assumed to be at SST) 755 ! 756 ! ! solar flux over the ocean (qsr) 757 IF( srcv(jpr_qsroce)%laction ) qsr(:,:) = frcv(:,:,jpr_qsroce) 758 IF( srcv(jpr_qsrmix)%laction ) qsr(:,:) = frcv(:,:,jpr_qsrmix) 759 759 ! 760 760 #if defined key_cpl_carbon_cycle 761 ! 761 ! ! atmosph. CO2 (ppm) 762 762 IF( srcv(jpr_co2)%laction ) atm_co2(:,:) = frcv(:,:,jpr_co2) 763 763 #endif 764 764 ! 765 765 ENDIF 766 766 ! … … 1046 1046 !!---------------------------------------------------------------------- 1047 1047 zicefr(:,:,1) = 1.- p_frld(:,:,1) 1048 IF( lk_diaar5 ) zcptn(:,:) = rcp * tn(:,:,1)1048 zcptn(:,:) = rcp * sst_m(:,:) 1049 1049 ! 1050 1050 ! ! ========================= ! … … 1118 1118 & + pist(:,:,1) * zicefr(:,:,1) ) ) 1119 1119 END SELECT 1120 ! ! snow melting heat flux .... 1121 ! energy for melting solid precipitation over ice-free ocean 1122 zcoef = xlsn / rhosn 1120 ! 1121 zcoef = xlsn / rhosn ! qns_tot update over free ocean with: 1123 1122 ztmp(:,:) = p_frld(:,:,1) * zsnow(:,:) * zcoef 1124 pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 1125 IF( lk_diaar5 ) CALL iom_put( 'hflx_snow_cea', ztmp + zsnow(:,:) * zcptn(:,:) ) ! heat flux from snow (cell average) 1126 !!gm 1127 !! currently it is taken into account in leads budget but not in the qns_tot, and thus not in 1128 !! the flux that enter the ocean.... 1129 !! moreover 1 - it is not diagnose anywhere.... 1130 !! 2 - it is unclear for me whether this heat lost is taken into account in the atmosphere or not... 1131 !! 1132 !! similar job should be done for snow and precipitation temperature 1133 ! ! Iceberg melting heat flux .... 1134 ! energy for iceberg melting 1135 IF( srcv(jpr_cal)%laction ) THEN 1123 pqns_tot(:,:) = pqns_tot(:,:) & 1124 & - ztmp(:,:) & ! remove the latent heat flux of solid precip. melting 1125 & + ( pemp_tot(:,:) & ! remove the heat content of mass flux (assumed to be at SST) 1126 & - pemp_ice(:,:) * p_frld(:,:,1) ) * zcptn(:,:) 1127 ! 1128 IF( lk_diaar5 ) CALL iom_put( 'hflx_snow_cea', ztmp(:,:) + zsnow(:,:) * zcptn(:,:) ) ! heat flux from snow (cell average) 1129 1130 !!gm BUG ??? just above the right value should be : ztmp + zsnow*p_frld*zcptn 1131 1132 ! 1133 IF( srcv(jpr_cal)%laction ) THEN ! remove the latent heat flux of iceberg melting 1136 1134 zcoef = xlic / rhoic 1137 1135 ztmp(:,:) = frcv(:,:,jpr_cal) * zcoef 1138 1136 pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 1137 ! 1139 1138 IF( lk_diaar5 ) CALL iom_put( 'hflx_cal_cea', ztmp + frcv(:,:,jpr_cal) * zcptn(:,:) ) ! heat flux from calving 1140 1139 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.