Changeset 13189 for NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/src/OCE/SBC/sbcblk.F90
- Timestamp:
- 2020-07-01T11:27:25+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback
- Property svn:externals
-
old new 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@12931 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/src/OCE/SBC/sbcblk.F90
r12565 r13189 658 658 659 659 END SELECT 660 660 661 IF( iom_use('Cd_oce') ) CALL iom_put("Cd_oce", zcd_oce * tmask(:,:,1)) 662 IF( iom_use('Ce_oce') ) CALL iom_put("Ce_oce", zce_oce * tmask(:,:,1)) 663 IF( iom_use('Ch_oce') ) CALL iom_put("Ch_oce", zch_oce * tmask(:,:,1)) 664 !! LB: mainly here for debugging purpose: 665 IF( iom_use('theta_zt') ) CALL iom_put("theta_zt", (ztpot-rt0) * tmask(:,:,1)) ! potential temperature at z=zt 666 IF( iom_use('q_zt') ) CALL iom_put("q_zt", zqair * tmask(:,:,1)) ! specific humidity " 667 IF( iom_use('theta_zu') ) CALL iom_put("theta_zu", (t_zu -rt0) * tmask(:,:,1)) ! potential temperature at z=zu 668 IF( iom_use('q_zu') ) CALL iom_put("q_zu", q_zu * tmask(:,:,1)) ! specific humidity " 669 IF( iom_use('ssq') ) CALL iom_put("ssq", pssq * tmask(:,:,1)) ! saturation specific humidity at z=0 670 IF( iom_use('wspd_blk') ) CALL iom_put("wspd_blk", zU_zu * tmask(:,:,1)) ! bulk wind speed at z=zu 671 661 672 IF( ln_skin_cs .OR. ln_skin_wl ) THEN 662 673 !! ptsk and pssq have been updated!!! … … 670 681 END IF 671 682 672 !! CALL iom_put( "Cd_oce", zcd_oce) ! output value of pure ocean-atm. transfer coef.673 !! CALL iom_put( "Ch_oce", zch_oce) ! output value of pure ocean-atm. transfer coef.674 675 IF( ABS(rn_zu - rn_zqt) < 0.1_wp ) THEN676 !! If zu == zt, then ensuring once for all that:677 t_zu(:,:) = ztpot(:,:)678 q_zu(:,:) = zqair(:,:)679 ENDIF680 681 682 683 ! Turbulent fluxes over ocean => BULK_FORMULA @ sbcblk_phy.F90 683 684 ! ------------------------------------------------------------- 684 685 685 686 IF( ln_abl ) THEN !== ABL formulation ==! multiplication by rho_air and turbulent fluxes computation done in ablstp 686 !! FL do we need this multiplication by tmask ... ???687 687 DO_2D_11_11 688 zztmp = zU_zu(ji,jj) !* tmask(ji,jj,1)688 zztmp = zU_zu(ji,jj) 689 689 wndm(ji,jj) = zztmp ! Store zU_zu in wndm to compute ustar2 in ablmod 690 690 pcd_du(ji,jj) = zztmp * zcd_oce(ji,jj) 691 691 psen(ji,jj) = zztmp * zch_oce(ji,jj) 692 692 pevp(ji,jj) = zztmp * zce_oce(ji,jj) 693 rhoa(ji,jj) = rho_air( ptair(ji,jj), phumi(ji,jj), pslp(ji,jj) ) 693 694 END_2D 694 695 ELSE !== BLK formulation ==! turbulent fluxes computation 695 696 CALL BULK_FORMULA( rn_zu, ptsk(:,:), pssq(:,:), t_zu(:,:), q_zu(:,:), & 696 & zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:), &697 & wndm(:,:), zU_zu(:,:), pslp(:,:), &698 & taum(:,:), psen(:,:), zqla(:,:), &699 & pEvap=pevp(:,:), prhoa=rhoa(:,:) )697 & zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:), & 698 & wndm(:,:), zU_zu(:,:), pslp(:,:), & 699 & taum(:,:), psen(:,:), zqla(:,:), & 700 & pEvap=pevp(:,:), prhoa=rhoa(:,:), pfact_evap=rn_efac ) 700 701 701 702 zqla(:,:) = zqla(:,:) * tmask(:,:,1) … … 732 733 ! ... utau, vtau at U- and V_points, resp. 733 734 ! Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 734 ! Note th e use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves735 ! Note that coastal wind stress is not used in the code... so this extra care has no effect 735 736 DO_2D_00_00 ! start loop at 2, in case ln_crt_fbk = T 736 737 utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( ztau_i(ji,jj) + ztau_i(ji+1,jj ) ) & … … 940 941 Ce_ice(:,:) = Ch_ice(:,:) ! sensible and latent heat transfer coef. are considered identical 941 942 ENDIF 942 943 !! IF ( iom_use("Cd_ice") ) CALL iom_put("Cd_ice", Cd_ice) ! output value of pure ice-atm. transfer coef. 944 !! IF ( iom_use("Ch_ice") ) CALL iom_put("Ch_ice", Ch_ice) ! output value of pure ice-atm. transfer coef. 945 943 944 IF( iom_use('Cd_ice') ) CALL iom_put("Cd_ice", Cd_ice) 945 IF( iom_use('Ce_ice') ) CALL iom_put("Ce_ice", Ce_ice) 946 IF( iom_use('Ch_ice') ) CALL iom_put("Ch_ice", Ch_ice) 947 946 948 ! local scalars ( place there for vector optimisation purposes) 947 !IF (ln_abl) rhoa (:,:) = rho_air( ptair(:,:), phumi(:,:), pslp(:,:) ) !!GS: rhoa must be (re)computed here with ABL to avoid division by zero after (TBI)948 949 zcd_dui(:,:) = wndm_ice(:,:) * Cd_ice(:,:) 949 950 950 951 IF( ln_blk ) THEN 951 ! ------------------------------------------------------------ ! 952 ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 953 ! ------------------------------------------------------------ ! 954 ! C-grid ice dynamics : U & V-points (same as ocean) 955 DO_2D_00_00 956 putaui(ji,jj) = 0.25_wp * ( rhoa(ji+1,jj) * zcd_dui(ji+1,jj) + rhoa(ji,jj) * zcd_dui(ji,jj) ) & 957 & * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) 958 pvtaui(ji,jj) = 0.25_wp * ( rhoa(ji,jj+1) * zcd_dui(ji,jj+1) + rhoa(ji,jj) * zcd_dui(ji,jj) ) & 959 & * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) 952 ! ---------------------------------------------------- ! 953 ! Wind stress relative to nonmoving ice ( U10m ) ! 954 ! ---------------------------------------------------- ! 955 ! supress moving ice in wind stress computation as we don't know how to do it properly... 956 DO_2D_01_01 ! at T point 957 putaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * pwndi(ji,jj) 958 pvtaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * pwndj(ji,jj) 959 END_2D 960 ! 961 DO_2D_00_00 ! U & V-points (same as ocean). 962 ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and rheology 963 zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj ,1) ) 964 zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji ,jj+1,1) ) 965 putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj ) ) 966 pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji ,jj+1) ) 960 967 END_2D 961 968 CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. ) … … 1096 1103 evap_ice (:,:,:) = rn_efac * qla_ice (:,:,:) * z1_rLsub ! sublimation 1097 1104 devap_ice(:,:,:) = rn_efac * dqla_ice(:,:,:) * z1_rLsub ! d(sublimation)/dT 1098 zevap (:,:) = rn_efac * ( emp(:,:) + tprecip(:,:) ) ! evaporation over ocean1105 zevap (:,:) = emp(:,:) + tprecip(:,:) ! evaporation over ocean !LB: removed rn_efac here, correct??? 1099 1106 1100 1107 ! --- evaporation minus precipitation --- !
Note: See TracChangeset
for help on using the changeset viewer.