Changeset 14822 for NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/ICE/iceupdate.F90
- Timestamp:
- 2021-05-10T13:32:16+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining
- Property svn:externals
-
old new 1 ^/utils/build/arch@ 14122arch2 ^/utils/build/makenemo@ 14122makenemo3 ^/utils/build/mk@ 14122mk4 ^/utils/tools@ 14122tools5 ^/vendors/AGRIF/dev@ 14122ext/AGRIF6 ^/vendors/FCM@ 14122ext/FCM7 ^/vendors/IOIPSL@ 14122ext/IOIPSL8 ^/vendors/PPR@ 14122ext/PPR1 ^/utils/build/arch@HEAD arch 2 ^/utils/build/makenemo@HEAD makenemo 3 ^/utils/build/mk@HEAD mk 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev@HEAD ext/AGRIF 6 ^/vendors/FCM@HEAD ext/FCM 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 ^/vendors/PPR@HEAD ext/PPR 9 9 10 10 # SETTE 11 ^/utils/CI/sette _wave@13990sette11 ^/utils/CI/sette@14244 sette
-
- Property svn:externals
-
NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/ICE/iceupdate.F90
r14072 r14822 104 104 ! Net heat flux on top of the ice-ocean (W.m-2) 105 105 !---------------------------------------------- 106 qt_atm_oi(:,:) = qns_tot(:,:) + qsr_tot(:,:) 106 IF( ln_cndflx ) THEN ! ice-atm interface = conduction (and melting) fluxes 107 qt_atm_oi(:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) + & 108 & SUM( a_i_b * ( qcn_ice + qml_ice + qtr_ice_top ), dim=3 ) + qemp_ice(:,:) 109 ELSE ! ice-atm interface = solar and non-solar fluxes 110 qt_atm_oi(:,:) = qns_tot(:,:) + qsr_tot(:,:) 111 ENDIF 107 112 108 113 ! --- case we bypass ice thermodynamics --- ! … … 119 124 ! Solar heat flux reaching the ocean (max) = zqsr (W.m-2) 120 125 !--------------------------------------------------- 121 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) 126 IF( ln_cndflx ) THEN ! ice-atm interface = conduction (and melting) fluxes 127 zqsr = ( 1._wp - at_i_b(ji,jj) ) * qsr_oce(ji,jj) + SUM( a_i_b (ji,jj,:) * qtr_ice_bot(ji,jj,:) ) 128 ELSE ! ice-atm interface = solar and non-solar fluxes 129 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) 130 ENDIF 122 131 123 132 ! Total heat flux reaching the ocean = qt_oce_ai (W.m-2) 124 133 !--------------------------------------------------- 125 qt_oce_ai(ji,jj) = qt_atm_oi(ji,jj) - hfx_sum(ji,jj) - hfx_bom(ji,jj) - hfx_bog(ji,jj) & 126 & - hfx_dif(ji,jj) - hfx_opw(ji,jj) - hfx_snw(ji,jj) & 127 & + hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) & 128 & + hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) + hfx_spr(ji,jj) 129 134 IF( ln_icethd ) THEN 135 qt_oce_ai(ji,jj) = qt_atm_oi(ji,jj) - hfx_sum(ji,jj) - hfx_bom(ji,jj) - hfx_bog(ji,jj) & 136 & - hfx_dif(ji,jj) - hfx_opw(ji,jj) - hfx_snw(ji,jj) & 137 & + hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) & 138 & + hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) + hfx_spr(ji,jj) 139 ENDIF 140 130 141 ! New qsr and qns used to compute the oceanic heat flux at the next time step 131 142 !---------------------------------------------------------------------------- … … 144 155 ! 145 156 ! the non-solar is simply derived from the solar flux 146 qns(ji,jj) = qt_oce_ai(ji,jj) - zqsr157 qns(ji,jj) = qt_oce_ai(ji,jj) - qsr(ji,jj) 147 158 148 159 ! Mass flux at the atm. surface … … 275 286 276 287 ! other heat fluxes 277 IF( iom_use('hfxsensib' ) ) CALL iom_put( 'hfxsensib' , -qsb_ice_bot * at_i_b ) ! Sensible oceanic heat flux288 IF( iom_use('hfxsensib' ) ) CALL iom_put( 'hfxsensib' , qsb_ice_bot * at_i_b ) ! Sensible oceanic heat flux 278 289 IF( iom_use('hfxcndbot' ) ) CALL iom_put( 'hfxcndbot' , SUM( qcn_ice_bot * a_i_b, dim=3 ) ) ! Bottom conduction flux 279 290 IF( iom_use('hfxcndtop' ) ) CALL iom_put( 'hfxcndtop' , SUM( qcn_ice_top * a_i_b, dim=3 ) ) ! Surface conduction flux 291 IF( iom_use('hfxmelt' ) ) CALL iom_put( 'hfxmelt' , SUM( qml_ice * a_i_b, dim=3 ) ) ! Surface melt flux 292 IF( iom_use('hfxldmelt' ) ) CALL iom_put( 'hfxldmelt' , fhld * at_i_b ) ! Heat in lead for ice melting 293 IF( iom_use('hfxldgrow' ) ) CALL iom_put( 'hfxldgrow' , qlead * r1_Dt_ice ) ! Heat in lead for ice growth 280 294 281 295 ! controls … … 345 359 tmod_io(ji,jj) = zrhoco * SQRT( zmodt ) ! rhoco * |U_ice-U_oce| at T-point 346 360 END_2D 347 CALL lbc_lnk _multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp )361 CALL lbc_lnk( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 348 362 ! 349 363 utau_oce(:,:) = utau(:,:) !* save the air-ocean stresses at ice time-step … … 374 388 vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 375 389 END_2D 376 CALL lbc_lnk _multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp ) ! lateral boundary condition390 CALL lbc_lnk( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp ) ! lateral boundary condition 377 391 ! 378 392 IF( ln_timing ) CALL timing_stop('ice_update')
Note: See TracChangeset
for help on using the changeset viewer.