- Timestamp:
- 2017-12-04T10:05:16+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/LIM_SRC_3/iceupdate.F90
r8882 r8884 207 207 ! output all fluxes 208 208 !------------------ 209 IF( iom_use('qsr_oce') ) CALL iom_put( "qsr_oce" , qsr_oce(:,:) * ( 1._wp - at_i_b(:,:) ) ) ! solar flux at ocean surface 210 IF( iom_use('qns_oce') ) CALL iom_put( "qns_oce" , qns_oce(:,:) * ( 1._wp - at_i_b(:,:) ) + qemp_oce(:,:) ) ! non-solar flux at ocean surface 211 IF( iom_use('qsr_ice') ) CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! solar flux at ice surface 212 IF( iom_use('qns_ice') ) CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) ) ! non-solar flux at ice surface 213 IF( iom_use('qtr_ice') ) CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! solar flux transmitted thru ice 214 IF( iom_use('qt_oce' ) ) CALL iom_put( "qt_oce" , ( qsr_oce(:,:) + qns_oce(:,:) ) * ( 1._wp - at_i_b(:,:) ) + qemp_oce(:,:) ) 215 IF( iom_use('qt_ice' ) ) CALL iom_put( "qt_ice" , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) & 216 & * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) ) 217 !!gm I don't understand the variable below.... why not multiplied by a_i_b or (1-a_i_b) ??? 218 IF( iom_use('qemp_oce') ) CALL iom_put( "qemp_oce" , qemp_oce(:,:) ) 219 IF( iom_use('qemp_ice') ) CALL iom_put( "qemp_ice" , qemp_ice(:,:) ) 220 IF( iom_use('emp_oce' ) ) CALL iom_put( "emp_oce" , emp_oce (:,:) ) ! emp over ocean (taking into account the snow blown away from the ice) 221 IF( iom_use('emp_ice' ) ) CALL iom_put( "emp_ice" , emp_ice (:,:) ) ! emp over ice (taking into account the snow blown away from the ice) 222 223 CALL iom_put( "snowpre" , sprecip * 86400. ) ! snow precipitation [m/day] 224 225 CALL iom_put( "sfxbog" , sfx_bog ) ! salt flux from bottom growth 226 CALL iom_put( "sfxbom" , sfx_bom ) ! salt flux from bottom melting 227 CALL iom_put( "sfxsum" , sfx_sum ) ! salt flux from surface melting 228 CALL iom_put( "sfxlam" , sfx_lam ) ! salt flux from lateral melting 229 CALL iom_put( "sfxsni" , sfx_sni ) ! salt flux from snow ice formation 230 CALL iom_put( "sfxopw" , sfx_opw ) ! salt flux from open water formation 231 CALL iom_put( "sfxdyn" , sfx_dyn ) ! salt flux from ridging rafting 232 CALL iom_put( "sfxres" , sfx_res ) ! salt flux from corrections (resultant) 233 CALL iom_put( "sfxbri" , sfx_bri ) ! salt flux from brines 234 CALL iom_put( "sfxsub" , sfx_sub ) ! salt flux from sublimation 235 CALL iom_put( "sfx" , sfx ) ! total salt flux 236 237 CALL iom_put( "vfxres" , wfx_res ) ! prod./melting due to corrections 238 CALL iom_put( "vfxopw" , wfx_opw ) ! lateral thermodynamic ice production 239 CALL iom_put( "vfxsni" , wfx_sni ) ! snowice ice production 240 CALL iom_put( "vfxbog" , wfx_bog ) ! bottom thermodynamic ice production 241 CALL iom_put( "vfxdyn" , wfx_dyn ) ! dynamic ice production (rid/raft) 242 CALL iom_put( "vfxsum" , wfx_sum ) ! surface melt 243 CALL iom_put( "vfxbom" , wfx_bom ) ! bottom melt 244 CALL iom_put( "vfxlam" , wfx_lam ) ! lateral melt 245 CALL iom_put( "vfxice" , wfx_ice ) ! total ice growth/melt 246 IF ( ln_pnd_fwb ) CALL iom_put( "vfxpnd", wfx_pnd ) ! melt pond water flux 247 248 IF ( iom_use( "vfxthin" ) ) THEN ! ice production for open water + thin ice (<20cm) => comparable to observations 209 ! 210 ! --- salt fluxes [kg/m2/s] --- ! 211 ! ! sfxice = sfxbog + sfxbom + sfxsum + sfxsni + sfxopw + sfxres + sfxdyn + sfxbri + sfxsub + sfxlam 212 IF( iom_use('sfxice' ) ) CALL iom_put( "sfxice", sfx * 1.e-03 ) ! salt flux from total ice growth/melt 213 IF( iom_use('sfxbog' ) ) CALL iom_put( "sfxbog", sfx_bog * 1.e-03 ) ! salt flux from bottom growth 214 IF( iom_use('sfxbom' ) ) CALL iom_put( "sfxbom", sfx_bom * 1.e-03 ) ! salt flux from bottom melting 215 IF( iom_use('sfxsum' ) ) CALL iom_put( "sfxsum", sfx_sum * 1.e-03 ) ! salt flux from surface melting 216 IF( iom_use('sfxlam' ) ) CALL iom_put( "sfxlam", sfx_lam * 1.e-03 ) ! salt flux from lateral melting 217 IF( iom_use('sfxsni' ) ) CALL iom_put( "sfxsni", sfx_sni * 1.e-03 ) ! salt flux from snow ice formation 218 IF( iom_use('sfxopw' ) ) CALL iom_put( "sfxopw", sfx_opw * 1.e-03 ) ! salt flux from open water formation 219 IF( iom_use('sfxdyn' ) ) CALL iom_put( "sfxdyn", sfx_dyn * 1.e-03 ) ! salt flux from ridging rafting 220 IF( iom_use('sfxbri' ) ) CALL iom_put( "sfxbri", sfx_bri * 1.e-03 ) ! salt flux from brines 221 IF( iom_use('sfxres' ) ) CALL iom_put( "sfxres", sfx_res * 1.e-03 ) ! salt flux from undiagnosed processes 222 IF( iom_use('sfxsub' ) ) CALL iom_put( "sfxsub", sfx_sub * 1.e-03 ) ! salt flux from sublimation 223 224 ! --- mass fluxes [kg/m2/s] --- ! 225 IF( iom_use('emp_oce' ) ) CALL iom_put( "emp_oce", emp_oce ) ! emp over ocean (taking into account the snow blown away from the ice) 226 IF( iom_use('emp_ice' ) ) CALL iom_put( "emp_ice", emp_ice ) ! emp over ice (taking into account the snow blown away from the ice) 227 228 ! ! vfxice = vfxbog + vfxbom + vfxsum + vfxsni + vfxopw + vfxdyn + vfxres + vfxlam + vfxpnd 229 IF( iom_use('vfxice' ) ) CALL iom_put( "vfxice" , wfx_ice ) ! mass flux from total ice growth/melt 230 IF( iom_use('vfxbog' ) ) CALL iom_put( "vfxbog" , wfx_bog ) ! mass flux from bottom growth 231 IF( iom_use('vfxbom' ) ) CALL iom_put( "vfxbom" , wfx_bom ) ! mass flux from bottom melt 232 IF( iom_use('vfxsum' ) ) CALL iom_put( "vfxsum" , wfx_sum ) ! mass flux from surface melt 233 IF( iom_use('vfxlam' ) ) CALL iom_put( "vfxlam" , wfx_lam ) ! mass flux from lateral melt 234 IF( iom_use('vfxsni' ) ) CALL iom_put( "vfxsni" , wfx_sni ) ! mass flux from snow-ice formation 235 IF( iom_use('vfxopw' ) ) CALL iom_put( "vfxopw" , wfx_opw ) ! mass flux from growth in open water 236 IF( iom_use('vfxdyn' ) ) CALL iom_put( "vfxdyn" , wfx_dyn ) ! mass flux from dynamics (ridging) 237 IF( iom_use('vfxres' ) ) CALL iom_put( "vfxres" , wfx_res ) ! mass flux from undiagnosed processes 238 IF( iom_use('vfxpnd' ) ) CALL iom_put( "vfxpnd" , wfx_pnd ) ! mass flux from melt ponds 239 IF( iom_use('vfxsub' ) ) CALL iom_put( "vfxsub" , wfx_ice_sub ) ! mass flux from ice sublimation (ice-atm.) 240 IF( iom_use('vfxsub_err') ) CALL iom_put( "vfxsub_err", wfx_err_sub ) ! "excess" of sublimation sent to ocean 241 242 IF ( iom_use( "vfxthin" ) ) THEN ! mass flux from ice growth in open water + thin ice (<20cm) => comparable to observations 249 243 WHERE( hm_i(:,:) < 0.2 .AND. hm_i(:,:) > 0. ) ; z2d = wfx_bog 250 244 ELSEWHERE ; z2d = 0._wp 251 245 END WHERE 252 CALL iom_put( "vfxthin", ( wfx_opw + z2d ) ) 253 ENDIF 254 255 CALL iom_put( "vfxspr" , wfx_spr ) ! precip (snow) 256 CALL iom_put( "vfxsnw" , wfx_snw ) ! total snw growth/melt 257 CALL iom_put( "vfxsub" , wfx_sub ) ! sublimation (snow/ice) 258 CALL iom_put( "vfxsub_err" , wfx_err_sub ) ! "excess" of sublimation sent to ocean 259 260 CALL iom_put ('hfxthd' , hfx_thd(:,:) ) ! 261 CALL iom_put ('hfxdyn' , hfx_dyn(:,:) ) ! 262 CALL iom_put ('hfxres' , hfx_res(:,:) ) ! 263 CALL iom_put ('hfxout' , hfx_out(:,:) ) ! 264 CALL iom_put ('hfxin' , hfx_in(:,:) ) ! 265 CALL iom_put ('hfxsnw' , hfx_snw(:,:) ) ! 266 CALL iom_put ('hfxsub' , hfx_sub(:,:) ) ! 267 CALL iom_put ('hfxerr' , hfx_err_dif(:,:) ) ! 268 CALL iom_put ('hfxerr_rem' , hfx_err_rem(:,:) ) ! 269 270 CALL iom_put ('hfxsum' , hfx_sum(:,:) ) ! 271 CALL iom_put ('hfxbom' , hfx_bom(:,:) ) ! 272 CALL iom_put ('hfxbog' , hfx_bog(:,:) ) ! 273 CALL iom_put ('hfxdif' , hfx_dif(:,:) ) ! 274 CALL iom_put ('hfxopw' , hfx_opw(:,:) ) ! 275 CALL iom_put ('hfxtur' , fhtur(:,:) * at_i_b(:,:) ) ! turbulent heat flux at ice base 276 CALL iom_put ('hfxdhc' , diag_heat(:,:) ) ! Heat content variation in snow and ice 277 CALL iom_put ('hfxspr' , hfx_spr(:,:) ) ! Heat content of snow precip 246 CALL iom_put( "vfxthin", wfx_opw + z2d ) 247 ENDIF 248 249 ! ! vfxsnw = vfxsnw_sni + vfxsnw_dyn + vfxsnw_sum 250 IF( iom_use('vfxsnw' ) ) CALL iom_put( "vfxsnw" , wfx_snw ) ! mass flux from total snow growth/melt 251 IF( iom_use('vfxsnw_sum' ) ) CALL iom_put( "vfxsnw_sum" , wfx_snw_sum ) ! mass flux from snow melt at the surface 252 IF( iom_use('vfxsnw_sni' ) ) CALL iom_put( "vfxsnw_sni" , wfx_snw_sni ) ! mass flux from snow melt during snow-ice formation 253 IF( iom_use('vfxsnw_dyn' ) ) CALL iom_put( "vfxsnw_dyn" , wfx_snw_dyn ) ! mass flux from dynamics (ridging) 254 IF( iom_use('vfxsnw_sub' ) ) CALL iom_put( "vfxsnw_sub" , wfx_snw_sub ) ! mass flux from snow sublimation (ice-atm.) 255 IF( iom_use('vfxsnw_pre' ) ) CALL iom_put( "vfxsnw_pre" , wfx_spr ) ! snow precip 256 257 ! --- heat fluxes [W/m2] --- ! 258 ! ! qt_atm_oi - qt_oce_ai = hfxdhc - ( dihctrp + dshctrp ) 259 IF( iom_use('qsr_oce' ) ) CALL iom_put( "qsr_oce" , qsr_oce * ( 1._wp - at_i_b ) ) ! solar flux at ocean surface 260 IF( iom_use('qns_oce' ) ) CALL iom_put( "qns_oce" , qns_oce * ( 1._wp - at_i_b ) + qemp_oce ) ! non-solar flux at ocean surface 261 IF( iom_use('qsr_ice' ) ) CALL iom_put( "qsr_ice" , SUM( qsr_ice * a_i_b, dim=3 ) ) ! solar flux at ice surface 262 IF( iom_use('qns_ice' ) ) CALL iom_put( "qns_ice" , SUM( qns_ice * a_i_b, dim=3 ) + qemp_ice ) ! non-solar flux at ice surface 263 IF( iom_use('qtr_ice_bot') ) CALL iom_put( "qtr_ice_bot", SUM( ftr_ice * a_i_b, dim=3 ) ) ! solar flux transmitted thru ice 264 IF( iom_use('qtr_ice_top') ) CALL iom_put( "qtr_ice_top", SUM( qsr_ice_tr * a_i_b, dim=3 ) ) ! solar flux transmitted thru ice surface 265 IF( iom_use('qt_oce' ) ) CALL iom_put( "qt_oce" , ( qsr_oce + qns_oce ) * ( 1._wp - at_i_b ) + qemp_oce ) 266 IF( iom_use('qt_ice' ) ) CALL iom_put( "qt_ice" , SUM( ( qns_ice + qsr_ice ) * a_i_b, dim=3 ) + qemp_ice ) 267 IF( iom_use('qt_oce_ai' ) ) CALL iom_put( "qt_oce_ai" , hfx_out ) ! total heat flux at the ocean surface: interface oce-(ice+atm) 268 IF( iom_use('qt_atm_oi' ) ) CALL iom_put( "qt_atm_oi" , hfx_in ) ! total heat flux at the oce-ice surface: interface atm-(ice+oce) 269 IF( iom_use('qemp_oce' ) ) CALL iom_put( "qemp_oce" , qemp_oce ) ! Downward Heat Flux from E-P over ocean 270 IF( iom_use('qemp_ice' ) ) CALL iom_put( "qemp_ice" , qemp_ice ) ! Downward Heat Flux from E-P over ice 271 272 ! heat fluxes from ice transformations 273 ! ! hfxdhc = hfxbog + hfxbom + hfxsum + hfxopw + hfxdif + hfxsnw - ( hfxthd + hfxdyn + hfxres + hfxsub + hfxspr ) 274 IF( iom_use('hfxbog' ) ) CALL iom_put ("hfxbog" , hfx_bog ) ! heat flux used for ice bottom growth 275 IF( iom_use('hfxbom' ) ) CALL iom_put ("hfxbom" , hfx_bom ) ! heat flux used for ice bottom melt 276 IF( iom_use('hfxsum' ) ) CALL iom_put ("hfxsum" , hfx_sum ) ! heat flux used for ice surface growth 277 IF( iom_use('hfxopw' ) ) CALL iom_put ("hfxopw" , hfx_opw ) ! heat flux used for ice formation in open water 278 IF( iom_use('hfxdif' ) ) CALL iom_put ("hfxdif" , hfx_dif ) ! heat flux used for ice temperature change 279 IF( iom_use('hfxsnw' ) ) CALL iom_put ("hfxsnw" , hfx_snw ) ! heat flux used for snow melt 280 IF( iom_use('hfxerr' ) ) CALL iom_put ("hfxerr" , hfx_err_dif ) ! heat flux error after heat diffusion (included in hfx_out) 281 282 ! heat fluxes associated with mass exchange (freeze/melt/precip...) 283 IF( iom_use('hfxthd' ) ) CALL iom_put ("hfxthd" , hfx_thd ) ! 284 IF( iom_use('hfxdyn' ) ) CALL iom_put ("hfxdyn" , hfx_dyn ) ! 285 IF( iom_use('hfxres' ) ) CALL iom_put ("hfxres" , hfx_res ) ! 286 IF( iom_use('hfxsub' ) ) CALL iom_put ("hfxsub" , hfx_sub ) ! 287 IF( iom_use('hfxspr' ) ) CALL iom_put ("hfxspr" , hfx_spr ) ! Heat flux from snow precip heat content 288 289 ! other heat fluxes 290 IF( iom_use('hfxsensib' ) ) CALL iom_put( "hfxsensib" , -fhtur * at_i_b ) ! Sensible oceanic heat flux 291 IF( iom_use('hfxcndbot' ) ) CALL iom_put( "hfxcndbot" , diag_fc_bo * at_i_b ) ! Bottom conduction flux 292 IF( iom_use('hfxcndtop' ) ) CALL iom_put( "hfxcndtop" , diag_fc_su * at_i_b ) ! Surface conduction flux 293 294 ! diags 295 IF( iom_use('hfxdhc' ) ) CALL iom_put ("hfxdhc" , diag_heat ) ! Heat content variation in snow and ice 278 296 ! 279 297 ! controls
Note: See TracChangeset
for help on using the changeset viewer.