- Timestamp:
- 2019-12-10T15:44:23+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/ICE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/ICE/icesbc.F90
r11575 r12154 27 27 USE lbclnk ! lateral boundary conditions (or mpp links) 28 28 USE timing ! Timing 29 USE fldread !!GS: needed by agrif 29 30 30 31 IMPLICIT NONE … … 71 72 SELECT CASE( ksbc ) 72 73 CASE( jp_usr ) ; CALL usrdef_sbc_ice_tau( kt ) ! user defined formulation 73 CASE( jp_blk ) ; CALL blk_ice_tau ! Bulk formulation 74 CASE( jp_blk ) ; CALL blk_ice_1( sf(jp_wndi)%fnow(:,:,1), sf(jp_wndj)%fnow(:,:,1), & 75 & sf(jp_tair)%fnow(:,:,1), sf(jp_humi)%fnow(:,:,1), & 76 & sf(jp_slp )%fnow(:,:,1), u_ice, v_ice, tm_su , & ! inputs 77 & putaui = utau_ice, pvtaui = vtau_ice ) ! outputs 78 ! CASE( jp_abl ) utau_ice & vtau_ice are computed in ablmod 74 79 CASE( jp_purecpl ) ; CALL sbc_cpl_ice_tau( utau_ice , vtau_ice ) ! Coupled formulation 75 80 END SELECT … … 143 148 CASE( jp_usr ) !--- user defined formulation 144 149 CALL usrdef_sbc_ice_flx( kt, h_s, h_i ) 145 CASE( jp_blk ) !--- bulk formulation 146 CALL blk_ice_flx ( t_su, h_s, h_i, alb_ice ) ! 150 CASE( jp_blk, jp_abl ) !--- bulk formulation & ABL formulation 151 CALL blk_ice_2 ( t_su, h_s, h_i, alb_ice, sf(jp_tair)%fnow(:,:,1), sf(jp_humi)%fnow(:,:,1), & 152 & sf(jp_slp)%fnow(:,:,1), sf(jp_qlw)%fnow(:,:,1), sf(jp_prec)%fnow(:,:,1), sf(jp_snow)%fnow(:,:,1) ) ! 147 153 IF( ln_mixcpl ) CALL sbc_cpl_ice_flx( picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su, phs=h_s, phi=h_i ) 148 154 IF( nn_flxdist /= -1 ) CALL ice_flx_dist ( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_flxdist ) -
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/ICE/icevar.F90
r11732 r12154 115 115 ! 116 116 ato_i(:,:) = 1._wp - at_i(:,:) ! open water fraction 117 117 ! 118 !!GS: tm_su always needed by ABL over sea-ice 119 ALLOCATE( z1_at_i(jpi,jpj) ) 120 WHERE( at_i(:,:) > epsi20 ) ; z1_at_i(:,:) = 1._wp / at_i(:,:) 121 ELSEWHERE ; z1_at_i(:,:) = 0._wp 122 END WHERE 123 tm_su(:,:) = SUM( t_su(:,:,:) * a_i(:,:,:) , dim=3 ) * z1_at_i(:,:) 124 WHERE( at_i(:,:)<=epsi20 ) tm_su(:,:) = rt0 125 ! 118 126 ! The following fields are calculated for diagnostics and outputs only 119 127 ! ==> Do not use them for other purposes 120 128 IF( kn > 1 ) THEN 121 129 ! 122 ALLOCATE( z1_at_i(jpi,jpj) , z1_vt_i(jpi,jpj) , z1_vt_s(jpi,jpj) ) 123 WHERE( at_i(:,:) > epsi20 ) ; z1_at_i(:,:) = 1._wp / at_i(:,:) 124 ELSEWHERE ; z1_at_i(:,:) = 0._wp 125 END WHERE 130 ALLOCATE( z1_vt_i(jpi,jpj) , z1_vt_s(jpi,jpj) ) 126 131 WHERE( vt_i(:,:) > epsi20 ) ; z1_vt_i(:,:) = 1._wp / vt_i(:,:) 127 132 ELSEWHERE ; z1_vt_i(:,:) = 0._wp … … 136 141 ! 137 142 ! ! mean temperature (K), salinity and age 138 tm_su(:,:) = SUM( t_su(:,:,:) * a_i(:,:,:) , dim=3 ) * z1_at_i(:,:)139 143 tm_si(:,:) = SUM( t_si(:,:,:) * a_i(:,:,:) , dim=3 ) * z1_at_i(:,:) 140 144 om_i (:,:) = SUM( oa_i(:,:,:) , dim=3 ) * z1_at_i(:,:) … … 154 158 ! ! put rt0 where there is no ice 155 159 WHERE( at_i(:,:)<=epsi20 ) 156 tm_su(:,:) = rt0157 160 tm_si(:,:) = rt0 158 161 tm_i (:,:) = rt0 … … 165 168 END WHERE 166 169 ! 167 DEALLOCATE( z1_ at_i , z1_vt_i , z1_vt_s )170 DEALLOCATE( z1_vt_i , z1_vt_s ) 168 171 ! 169 172 ENDIF 173 ! 174 DEALLOCATE( z1_at_i ) 170 175 ! 171 176 END SUBROUTINE ice_var_agg
Note: See TracChangeset
for help on using the changeset viewer.