Changeset 2990 for branches/2011/dev_r2855_INGV2_3_blk_wave/NEMOGCM/NEMO
- Timestamp:
- 2011-10-25T15:39:07+02:00 (13 years ago)
- Location:
- branches/2011/dev_r2855_INGV2_3_blk_wave/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2855_INGV2_3_blk_wave/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r2715 r2990 33 33 LOGICAL , PUBLIC :: ln_blk_clio = .FALSE. !: CLIO bulk formulation 34 34 LOGICAL , PUBLIC :: ln_blk_core = .FALSE. !: CORE bulk formulation 35 LOGICAL , PUBLIC :: ln_blk_ecmwf= .FALSE. !: MFS bulk formulation 35 36 LOGICAL , PUBLIC :: ln_cpl = .FALSE. !: coupled formulation (overwritten by key_sbc_coupled ) 36 37 LOGICAL , PUBLIC :: ln_dm2dc = .FALSE. !: Daily mean to Diurnal Cycle short wave (qsr) … … 43 44 ! !: = 1 global mean of e-p-r set to zero at each nn_fsbc time step 44 45 ! !: = 2 annual global mean of e-p-r set to zero 46 LOGICAL , PUBLIC :: ln_cdgw = .FALSE. !: true if neutral drag coefficient read from wave model 45 47 46 48 !!---------------------------------------------------------------------- -
branches/2011/dev_r2855_INGV2_3_blk_wave/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r2777 r2990 34 34 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 35 35 USE prtctl ! Print control 36 USE sbcwave,ONLY : cdn_wave !wave module 36 37 #if defined key_lim3 37 38 USE sbc_ice ! Surface boundary condition: ice fields … … 43 44 PUBLIC sbc_blk_core ! routine called in sbcmod module 44 45 PUBLIC blk_ice_core ! routine called in sbc_ice_lim module 46 PUBLIC turb_core_2z ! routine calles in sbcblk_ecmwf module 45 47 46 48 INTEGER , PARAMETER :: jpfld = 9 ! maximum number of files to read … … 682 684 !! Neutral Drag Coefficient 683 685 stab = 0.5 + sign(0.5,dT) ! stable : stab = 1 ; unstable : stab = 0 684 Cd_n10 = 1E-3 * ( 2.7/dU10 + 0.142 + dU10/13.09 ) ! L & Y eq. (6a) 686 IF ( ln_cdgw ) THEN 687 cdn_wave = cdn_wave - rsmall*(tmask(:,:,1)-1) 688 Cd_n10(:,:) = cdn_wave 689 ELSE 690 Cd_n10 = 1E-3 * ( 2.7/dU10 + 0.142 + dU10/13.09 ) ! L & Y eq. (6a) 691 ENDIF 685 692 sqrt_Cd_n10 = sqrt(Cd_n10) 686 693 Ce_n10 = 1E-3 * ( 34.6 * sqrt_Cd_n10 ) ! L & Y eq. (6b) … … 705 712 zpsi_m = psi_m(zeta) 706 713 707 !! Shifting the wind speed to 10m and neutral stability : 708 U_n10 = dU10*1./(1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m)) ! L & Y eq. (9a) 709 710 !! Updating the neutral 10m transfer coefficients : 711 Cd_n10 = 1E-3 * (2.7/U_n10 + 0.142 + U_n10/13.09) ! L & Y eq. (6a) 712 sqrt_Cd_n10 = sqrt(Cd_n10) 713 Ce_n10 = 1E-3 * (34.6 * sqrt_Cd_n10) ! L & Y eq. (6b) 714 stab = 0.5 + sign(0.5,zeta) 715 Ch_n10 = 1E-3*sqrt_Cd_n10*(18.*stab + 32.7*(1-stab)) ! L & Y eq. (6c), (6d) 716 717 !! Shifting the neutral 10m transfer coefficients to ( zu , zeta ) : 718 !! 719 xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10) - zpsi_m) 720 Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 714 IF ( ln_cdgw ) THEN 715 sqrt_Cd=kappa/((kappa/sqrt_Cd_n10) - zpsi_m) ; Cd=sqrt_Cd*sqrt_Cd; 716 ELSE 717 !! Shifting the wind speed to 10m and neutral stability : 718 U_n10 = dU10*1./(1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m)) ! L & Y eq. (9a) 719 720 !! Updating the neutral 10m transfer coefficients : 721 Cd_n10 = 1E-3 * (2.7/U_n10 + 0.142 + U_n10/13.09) ! L & Y eq. (6a) 722 sqrt_Cd_n10 = sqrt(Cd_n10) 723 Ce_n10 = 1E-3 * (34.6 * sqrt_Cd_n10) ! L & Y eq. (6b) 724 stab = 0.5 + sign(0.5,zeta) 725 Ch_n10 = 1E-3*sqrt_Cd_n10*(18.*stab + 32.7*(1-stab)) ! L & Y eq. (6c), (6d) 726 727 !! Shifting the neutral 10m transfer coefficients to ( zu , zeta ) : 728 !! 729 xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10) - zpsi_m) 730 Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 731 ENDIF 721 732 !! 722 733 xlogt = log(zu/10.) - zpsi_h … … 812 823 !! Neutral Drag Coefficient : 813 824 stab = 0.5 + sign(0.5,dT) ! stab = 1 if dT > 0 -> STABLE 814 Cd_n10 = 1E-3*( 2.7/dU10 + 0.142 + dU10/13.09 ) 825 IF ( ln_cdgw ) THEN 826 cdn_wave = cdn_wave - rsmall*(tmask(:,:,1)-1) 827 Cd_n10(:,:) = cdn_wave 828 ELSE 829 Cd_n10 = 1E-3*( 2.7/dU10 + 0.142 + dU10/13.09 ) 830 ENDIF 815 831 sqrt_Cd_n10 = sqrt(Cd_n10) 816 832 Ce_n10 = 1E-3*( 34.6 * sqrt_Cd_n10 ) … … 853 869 stab = 0.5 + sign(0.5,q_zu) ; q_zu = stab*q_zu 854 870 !! 855 !! Updating the neutral 10m transfer coefficients : 856 Cd_n10 = 1E-3 * (2.7/U_n10 + 0.142 + U_n10/13.09) ! L & Y eq. (6a) 857 sqrt_Cd_n10 = sqrt(Cd_n10) 858 Ce_n10 = 1E-3 * (34.6 * sqrt_Cd_n10) ! L & Y eq. (6b) 859 stab = 0.5 + sign(0.5,zeta_u) 860 Ch_n10 = 1E-3*sqrt_Cd_n10*(18.*stab + 32.7*(1-stab)) ! L & Y eq. (6c-6d) 861 !! 862 !! 863 !! Shifting the neutral 10m transfer coefficients to (zu,zeta_u) : 864 ! xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - psi_m(zeta_u)) 865 xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m) 866 Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 867 !! 868 ! xlogt = log(zu/10.) - psi_h(zeta_u) 871 IF ( ln_cdgw ) THEN 872 sqrt_Cd=kappa/((kappa/sqrt_Cd_n10) - zpsi_m) ; Cd=sqrt_Cd*sqrt_Cd; 873 ELSE 874 !! Updating the neutral 10m transfer coefficients : 875 Cd_n10 = 1E-3 * (2.7/U_n10 + 0.142 + U_n10/13.09) ! L & Y eq. (6a) 876 sqrt_Cd_n10 = sqrt(Cd_n10) 877 Ce_n10 = 1E-3 * (34.6 * sqrt_Cd_n10) ! L & Y eq. (6b) 878 stab = 0.5 + sign(0.5,zeta_u) 879 Ch_n10 = 1E-3*sqrt_Cd_n10*(18.*stab + 32.7*(1-stab)) ! L & Y eq. (6c-6d) 880 !! 881 !! 882 !! Shifting the neutral 10m transfer coefficients to (zu,zeta_u) : 883 xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m) 884 Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 885 ENDIF 886 !! 869 887 xlogt = log(zu/10.) - zpsi_hu 870 888 !! -
branches/2011/dev_r2855_INGV2_3_blk_wave/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r2715 r2990 29 29 USE sbcblk_clio ! surface boundary condition: bulk formulation : CLIO 30 30 USE sbcblk_core ! surface boundary condition: bulk formulation : CORE 31 USE sbcblk_ecmwf ! surface boundary condition: bulk formulation : MFS 31 32 USE sbcice_if ! surface boundary condition: ice-if sea-ice model 32 33 USE sbcice_lim ! surface boundary condition: LIM 3.0 sea-ice model … … 46 47 USE in_out_manager ! I/O manager 47 48 USE lib_mpp ! MPP library 49 USE sbcwave ! Wave module 48 50 49 51 IMPLICIT NONE … … 78 80 !! 79 81 NAMELIST/namsbc/ nn_fsbc , ln_ana , ln_flx , ln_blk_clio, ln_blk_core, ln_cpl, & 80 & ln_ apr_dyn, nn_ice , ln_dm2dc, ln_rnf , ln_ssr , nn_fwb82 & ln_blk_ecmwf, ln_apr_dyn, nn_ice , ln_dm2dc, ln_rnf, ln_ssr , nn_fwb, ln_cdgw 81 83 !!---------------------------------------------------------------------- 82 84 … … 107 109 WRITE(numout,*) ' flux formulation ln_flx = ', ln_flx 108 110 WRITE(numout,*) ' CLIO bulk formulation ln_blk_clio = ', ln_blk_clio 109 WRITE(numout,*) ' CLIO bulk formulation ln_blk_core = ', ln_blk_core 111 WRITE(numout,*) ' CORE bulk formulation ln_blk_core = ', ln_blk_core 112 WRITE(numout,*) ' MFS bulk formulation ln_blk_ecmwf= ', ln_blk_ecmwf 110 113 WRITE(numout,*) ' coupled formulation (T if key_sbc_cpl) ln_cpl = ', ln_cpl 111 114 WRITE(numout,*) ' Misc. options of sbc : ' … … 154 157 IF( ln_dm2dc .AND. ( ( NINT(rday) / ( nn_fsbc * NINT(rdt) ) ) < 8 ) ) & 155 158 & CALL ctl_warn( 'diurnal cycle for qsr: the sampling of the diurnal cycle is too small...' ) 159 160 !drag coefficient read from wave model definable only with ecmwf bulk formulae and core 161 IF(ln_cdgw .AND. .NOT.(ln_blk_ecmwf .OR. ln_blk_core) ) & 162 & CALL ctl_stop( 'drag coefficient read from wave model definable only with ecmwf bulk formulae and core') 156 163 157 164 ! ! Choice of the Surface Boudary Condition (set nsbc) … … 161 168 IF( ln_blk_clio ) THEN ; nsbc = 3 ; icpt = icpt + 1 ; ENDIF ! CLIO bulk formulation 162 169 IF( ln_blk_core ) THEN ; nsbc = 4 ; icpt = icpt + 1 ; ENDIF ! CORE bulk formulation 170 IF( ln_blk_ecmwf ) THEN ; nsbc = 6 ; icpt = icpt + 1 ; ENDIF ! MFS bulk formulation 163 171 IF( ln_cpl ) THEN ; nsbc = 5 ; icpt = icpt + 1 ; ENDIF ! Coupled formulation 164 172 IF( cp_cfg == 'gyre') THEN ; nsbc = 0 ; ENDIF ! GYRE analytical formulation … … 181 189 IF( nsbc == 4 ) WRITE(numout,*) ' CORE bulk formulation' 182 190 IF( nsbc == 5 ) WRITE(numout,*) ' coupled formulation' 191 IF( nsbc == 6 ) WRITE(numout,*) ' MFS Bulk formulation' 183 192 ENDIF 184 193 ! … … 228 237 ! ! averaged over nf_sbc time-step 229 238 239 IF (ln_cdgw) CALL sbc_wave( kt ) 230 240 !== sbc formulation ==! 231 241 … … 238 248 CASE( 4 ) ; CALL sbc_blk_core( kt ) ! bulk formulation : CORE for the ocean 239 249 CASE( 5 ) ; CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice ) ! coupled formulation 250 CASE( 6 ) ; CALL sbc_blk_ecmwf( kt ) ! bulk formulation : MFS for the ocean 240 251 CASE( -1 ) 241 252 CALL sbc_ana ( kt ) ! ESOPA, test ALL the formulations
Note: See TracChangeset
for help on using the changeset viewer.