Changeset 13981 for NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/SBC/sbcblk.F90
- Timestamp:
- 2020-12-02T11:50:03+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/SBC/sbcblk.F90
r13893 r13981 64 64 65 65 USE sbc_phy ! Catalog of functions for physical/meteorological parameters in the marine boundary layer 66 USE zdfdrg , ONLY : ln_drgice_imp ! to know if we should iom_put wind stress vector (utau,vtau) #laurent67 66 68 67 IMPLICIT NONE … … 856 855 ENDIF 857 856 858 CALL iom_put( "taum_oce", taum*tmask(:,:,1) ) ! output wind stress module 859 IF ( .NOT. (ln_drgice_imp.OR.ln_isfcav) ) THEN 860 ! #Laurent: because otherwize utau and vtau are saved into dyn_atf() of dynatf.F90 861 CALL iom_put( "utau", utau(:,:) ) 862 CALL iom_put( "vtau", vtau(:,:) ) 863 END IF 857 ! Saving open-ocean wind-stress (module and components) on T-points: 858 CALL iom_put( "taum_oce", taum(:,:)*tmask(:,:,1) ) ! output wind stress module 859 !#LB: These 2 lines below mostly here for 'STATION_ASF' test-case, otherwize "utau" (U-grid) and vtau" (V-grid) does the job in: [DYN/dynatf.F90]) 860 CALL iom_put( "utau_oce", ztau_i(:,:)*tmask(:,:,1) ) ! utau at T-points! 861 CALL iom_put( "vtau_oce", ztau_j(:,:)*tmask(:,:,1) ) ! vtau at T-points! 864 862 865 863 IF(sn_cfctl%l_prtctl) THEN … … 1053 1051 !! 1054 1052 END SELECT 1055 1056 IF( iom_use('Cd_ice').OR.iom_use('Ce_ice').OR.iom_use('Ch_ice').OR.iom_use('taum_ ai') ) &1053 1054 IF( iom_use('Cd_ice').OR.iom_use('Ce_ice').OR.iom_use('Ch_ice').OR.iom_use('taum_ice').OR.iom_use('utau_ice').OR.iom_use('vtau_ice') ) & 1057 1055 & ztmp(:,:) = ( 1._wp - MAX(0._wp, SIGN( 1._wp, 1.E-6_wp - fr_i )) )*tmask(:,:,1) ! mask for presence of ice ! 1058 1056 … … 1068 1066 ! supress moving ice in wind stress computation as we don't know how to do it properly... 1069 1067 DO_2D( 0, 1, 0, 1 ) ! at T point 1070 zztmp1 = rhoa(ji,jj) * Cd_ice(ji,jj) * wndm_ice(ji,jj)1071 putaui(ji,jj) = zztmp1 * pwndi(ji,jj)1072 pvtaui(ji,jj) = zztmp1 * pwndj(ji,jj)1068 zztmp1 = rhoa(ji,jj) * Cd_ice(ji,jj) * wndm_ice(ji,jj) 1069 putaui(ji,jj) = zztmp1 * pwndi(ji,jj) 1070 pvtaui(ji,jj) = zztmp1 * pwndj(ji,jj) 1073 1071 END_2D 1074 !#LB: saving the module of the ai wind-stress: NOT weighted by the ice concentration !!! 1075 IF(iom_use('taum_ai')) CALL iom_put( 'taum_ai', SQRT( putaui*putaui + pvtaui*pvtaui )*ztmp ) 1072 1073 !#LB: saving the module, and x-y components, of the ai wind-stress at T-points: NOT weighted by the ice concentration !!! 1074 IF(iom_use('taum_ice')) CALL iom_put('taum_ice', SQRT( putaui*putaui + pvtaui*pvtaui )*ztmp ) 1075 !#LB: These 2 lines below mostly here for 'STATION_ASF' test-case, otherwize "utau_oi" (U-grid) and vtau_oi" (V-grid) does the job in: [ICE/icedyn_rhg_evp.F90]) 1076 IF(iom_use('utau_ice')) CALL iom_put("utau_ice", putaui*ztmp) ! utau at T-points! 1077 IF(iom_use('vtau_ice')) CALL iom_put("vtau_ice", pvtaui*ztmp) ! vtau at T-points! 1078 1076 1079 ! 1077 1080 DO_2D( 0, 0, 0, 0 ) ! U & V-points (same as ocean). 1078 !#LB: QUESTION?? so SI3 expects wind stress vector to be provided at U & V points? Not at T-points ?1079 ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and rheology1080 zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj ,1) )1081 zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji ,jj+1,1) )1082 putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj ) )1083 pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji ,jj+1) )1081 !#LB: QUESTION?? so SI3 expects wind stress vector to be provided at U & V points? Not at T-points ? 1082 ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and rheology 1083 zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj ,1) ) 1084 zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji ,jj+1,1) ) 1085 putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj ) ) 1086 pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji ,jj+1) ) 1084 1087 END_2D 1085 1088 CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp )
Note: See TracChangeset
for help on using the changeset viewer.