- Timestamp:
- 2016-11-28T17:04:10+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r7350 r7351 19 19 20 20 !!---------------------------------------------------------------------- 21 !! sbc_blk_core 22 !! blk_oce_core 23 !! blk_ice_core 24 !! turb_core_2z 25 !! cd_neutral_10m 26 !! psi_m 27 !! psi_h 21 !! sbc_blk_core : bulk formulation as ocean surface boundary condition (forced mode, CORE bulk formulea) 22 !! blk_oce_core : computes momentum, heat and freshwater fluxes over ocean 23 !! blk_ice_core : computes momentum, heat and freshwater fluxes over ice 24 !! turb_core_2z : Computes turbulent transfert coefficients 25 !! cd_neutral_10m: Estimate of the neutral drag coefficient at 10m 26 !! psi_m : universal profile stability function for momentum 27 !! psi_h : universal profile stability function for temperature and humidity 28 28 !!---------------------------------------------------------------------- 29 USE oce ! ocean dynamics and tracers 30 USE dom_oce ! ocean space and time domain 31 USE phycst ! physical constants 32 USE fldread ! read input fields 33 USE sbc_oce ! Surface boundary condition: ocean fields 34 USE cyclone ! Cyclone 10m wind form trac of cyclone centres 35 USE sbcdcy ! surface boundary condition: diurnal cycle 36 USE iom ! I/O manager library 37 USE in_out_manager ! I/O manager 38 USE lib_mpp ! distribued memory computing library 39 USE wrk_nemo ! work arrays 40 USE timing ! Timing 41 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 42 USE prtctl ! Print control 43 USE sbcwave, ONLY : cdn_wave ! wave module 44 USE sbc_ice ! Surface boundary condition: ice fields 45 USE lib_fortran ! to use key_nosignedzero 29 USE oce ! ocean dynamics and tracers 30 USE dom_oce ! ocean space and time domain 31 USE phycst ! physical constants 32 USE fldread ! read input fields 33 USE sbc_oce ! Surface boundary condition: ocean fields 34 USE cyclone ! Cyclone 10m wind form trac of cyclone centres 35 USE sbcdcy ! surface boundary condition: diurnal cycle 36 USE sbcwave , ONLY : cdn_wave ! wave module 37 USE sbc_ice ! Surface boundary condition: ice fields 38 USE lib_fortran ! to use key_nosignedzero 46 39 #if defined key_lim3 47 USE ice , ONLY :u_ice, v_ice, jpl, pfrld, a_i_b48 USE limthd_dh 40 USE ice , ONLY : u_ice, v_ice, jpl, pfrld, a_i_b 41 USE limthd_dh ! for CALL lim_thd_snwblow 49 42 #elif defined key_lim2 50 USE ice_2 , ONLY :u_ice, v_ice51 USE par_ice_2 43 USE ice_2 , ONLY : u_ice, v_ice 44 USE par_ice_2 ! LIM-2 parameters 52 45 #endif 46 ! 47 USE iom ! I/O manager library 48 USE in_out_manager ! I/O manager 49 USE lib_mpp ! distribued memory computing library 50 USE wrk_nemo ! work arrays 51 USE timing ! Timing 52 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 53 USE prtctl ! Print control 53 54 54 55 IMPLICIT NONE … … 84 85 REAL(wp), PARAMETER :: albo = 0.066 ! ocean albedo assumed to be constant 85 86 86 ! 87 ! !!* Namelist namsbc_core : CORE bulk parameters 87 88 LOGICAL :: ln_taudif ! logical flag to use the "mean of stress module - module of mean stress" data 88 89 REAL(wp) :: rn_pfac ! multiplication factor for precipitation … … 93 94 94 95 !! * Substitutions 95 # include "domzgr_substitute.h90"96 96 # include "vectopt_loop_substitute.h90" 97 97 !!---------------------------------------------------------------------- … … 149 149 TYPE(FLD_N) :: sn_tdif ! " " 150 150 NAMELIST/namsbc_core/ cn_dir , ln_taudif, rn_pfac, rn_efac, rn_vfac, & 151 & sn_wndi, sn_wndj , sn_humi, sn_qsr , &152 & sn_qlw , sn_tair , sn_prec, sn_snow, &153 & sn_tdif, rn_zqt , rn_zu151 & sn_wndi, sn_wndj , sn_humi, sn_qsr , & 152 & sn_qlw , sn_tair , sn_prec, sn_snow, & 153 & sn_tdif, rn_zqt , rn_zu 154 154 !!--------------------------------------------------------------------- 155 155 ! … … 206 206 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN 207 207 qlw_ice(:,:,1) = sf(jp_qlw)%fnow(:,:,1) 208 qsr_ice(:,:,1) = sf(jp_qsr)%fnow(:,:,1) 208 IF( ln_dm2dc ) THEN ; qsr_ice(:,:,1) = sbc_dcy( sf(jp_qsr)%fnow(:,:,1) ) 209 ELSE ; qsr_ice(:,:,1) = sf(jp_qsr)%fnow(:,:,1) 210 ENDIF 209 211 tatm_ice(:,:) = sf(jp_tair)%fnow(:,:,1) 210 212 qatm_ice(:,:) = sf(jp_humi)%fnow(:,:,1) … … 612 614 ! --- evaporation --- ! 613 615 z1_lsub = 1._wp / Lsub 614 evap_ice (:,:,:) = qla_ice (:,:,:) * z1_lsub! sublimation615 devap_ice(:,:,:) = dqla_ice(:,:,:) * z1_lsub616 zevap (:,:) = emp(:,:) + tprecip(:,:)! evaporation over ocean616 evap_ice (:,:,:) = rn_efac * qla_ice (:,:,:) * z1_lsub ! sublimation 617 devap_ice(:,:,:) = rn_efac * dqla_ice(:,:,:) * z1_lsub ! d(sublimation)/dT 618 zevap (:,:) = rn_efac * ( emp(:,:) + tprecip(:,:) ) ! evaporation over ocean 617 619 618 620 ! --- evaporation minus precipitation --- ! … … 637 639 ! --- heat content of precip over ice in J/m3 (to be used in 1D-thermo) --- ! 638 640 qprec_ice(:,:) = rhosn * ( ( MIN( sf(jp_tair)%fnow(:,:,1), rt0_snow ) - rt0 ) * cpic * tmask(:,:,1) - lfus ) 641 642 ! --- heat content of evap over ice in W/m2 (to be used in 1D-thermo) --- ! 643 DO jl = 1, jpl 644 qevap_ice(:,:,jl) = 0._wp ! should be -evap_ice(:,:,jl)*( ( Tice - rt0 ) * cpic * tmask(:,:,1) ) 645 ! But we do not have Tice => consider it at 0°C => evap=0 646 END DO 639 647 640 648 CALL wrk_dealloc( jpi,jpj, zevap, zsnw )
Note: See TracChangeset
for help on using the changeset viewer.