Changeset 9943 for NEMO/trunk/src/ICE/icedyn_adv.F90
- Timestamp:
- 2018-07-13T16:15:22+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ICE/icedyn_adv.F90
r9935 r9943 66 66 !!---------------------------------------------------------------------- 67 67 INTEGER, INTENT(in) :: kt ! number of iteration 68 ! 69 INTEGER :: jl ! dummy loop indice 70 REAL(wp), DIMENSION(jpi,jpj) :: zmask ! fraction of time step with v_i < 0 68 71 !!--------------------------------------------------------------------- 69 72 ! … … 98 101 ! Debug the advection schemes 99 102 !---------------------------- 100 ! clem: The 2 advection schemes above are not strictly positive.101 ! In Prather, advected fields are bounded by 0 (not anymore?) in the routine with a MAX(0,field) ==> likely conservation issues102 ! In UM x, advected fields are not bounded and negative values can appear.103 ! clem: At least one advection scheme above is not strictly positive => UM from 3d to 5th order 104 ! In Prather, I am not sure if the fields are bounded by 0 or not (it seems not) 105 ! In UM3-5 , advected fields are not bounded and negative values can appear. 103 106 ! These values are usually very small but in some occasions they can also be non-negligible 104 107 ! Therefore one needs to bound the advected fields by 0 (though this is not a clean fix) 105 ! ==> 1) remove negative ice areas and volumes (conservation is ensure) 106 CALL ice_var_zapsmall 107 ! ==> 2) remove remaining negative advected fields (conservation is not preserved) => conservation issue 108 WHERE( v_s (:,:,:) < 0._wp ) v_s (:,:,:) = 0._wp 109 WHERE( sv_i(:,:,:) < 0._wp ) sv_i(:,:,:) = 0._wp 110 WHERE( e_i (:,:,:,:) < 0._wp ) e_i (:,:,:,:) = 0._wp 111 WHERE( e_s (:,:,:,:) < 0._wp ) e_s (:,:,:,:) = 0._wp 108 ! 109 ! record the negative values resulting from UMx 110 zmask(:,:) = 0._wp ! keep the init to 0 here 111 DO jl = 1, jpl 112 WHERE( v_i(:,:,jl) < 0._wp ) zmask(:,:) = 1._wp 113 END DO 114 IF( iom_use('iceneg_pres') ) CALL iom_put("iceneg_pres", zmask ) ! fraction of time step with v_i < 0 115 IF( iom_use('iceneg_volu') ) CALL iom_put("iceneg_volu", SUM(MIN( v_i, 0. ), dim=3 ) ) ! negative ice volume (only) 116 IF( iom_use('iceneg_hfx' ) ) CALL iom_put("iceneg_hfx" , ( SUM(SUM( MIN( e_i(:,:,1:nlay_i,:), 0. ) & ! negative ice heat content (only) 117 & , dim=4 ), dim=3 ) )* r1_rdtice ) ! -- eq. heat flux [W/m2] 118 ! 119 ! ==> conservation is ensured by calling this routine below, 120 ! however the global ice volume is then changed by advection (but errors are very small) 121 CALL ice_var_zapneg( ato_i, v_i, v_s, sv_i, oa_i, a_i, a_ip, v_ip, e_s, e_i ) 112 122 113 123 !------------
Note: See TracChangeset
for help on using the changeset viewer.