#1054 closed Bug (fixed)
Artificial ice source in limupdate.F90
Reported by: | barthele | Owned by: | nemo |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | LIM3 | Version: | v3.4 |
Severity: | Keywords: | LIM* v3.4 | |
Cc: | vancop |
Description
In the lim_update routine, the sea ice concentration is limited by zamax (corresponding to the namelist parameter amax, by default equal to 0.999). This is done in the loop starting at line 813.
The concentration in each category is decreased, but the volume should not be affected. However, as is, an increase of the sea ice volume in each category is coded. This bug creates an artificial source of ice.
The correction is easy, the two following lines in the loop must be commented :
z_dv_i = v_i(ji,jj,jl) * z_da_i / MAX( at_i(ji,jj), epsi06 )
v_i(ji,jj,jl) = v_i(ji,jj,jl) + z_dv_i
and the following declaration must be shortened, since we don't need the z_dv_i anymore :
REAL(wp) :: zweight, zesum, zhimax, z_da_i, z_dv_i
The effect of this bug is to create, in some of our simulations, huge ice accumulations (tens of meters thick after ~ 50 years). In some other runs, I don't know why, it doesn't seem to have a large impact ... In any case, the bug is very clear and can (and should) be corrected right away !
Commit History (3)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
3838 | gm | 2013-03-14T13:06:40+01:00 | dev_MERGE_2012: #1054, LIM3: more simple and efficient correction of the reported bug |
3817 | clevy | 2013-02-20T16:39:33+01:00 | Bugfix on articifial ice source, see ticket:#1054 |
3816 | clevy | 2013-02-20T16:30:12+01:00 | Bugfix on articifial ice source, see ticket:#1054 |
Change History (6)
comment:1 Changed 11 years ago by clevy
- Resolution set to fixed
- Status changed from new to closed
comment:2 Changed 11 years ago by gm
The rescaling performed in this part of limupdate.F90 can be rewritten in a much more simple and efficient way.
What is currently done is (with the bug corrected) :
zamax = amax ... DO jj = 1, jpj DO ji = 1, jpi ! 0) Excessive area ? z_da_ex = MAX( at_i(ji,jj) - zamax , 0.0 ) ! 1) Count the number of existing categories DO jl = 1, jpl zindb = MAX( rzero, SIGN( rone, v_i(ji,jj,jl) - epsi03 ) ) zindb = MAX( rzero, SIGN( rone, v_i(ji,jj,jl) ) ) z_da_i = a_i(ji,jj,jl) * z_da_ex / MAX( at_i(ji,jj), epsi06 ) * zindb a_i(ji,jj,jl) = a_i(ji,jj,jl) - z_da_i END DO END DO !ji END DO !jj at_i(:,:) = a_i(:,:,1) DO jl = 2, jpl at_i(:,:) = a_i(:,:,jl) + at_i(:,:) END DO
The requirement is that at_i, the total ice concentration (i.e. sum over the categories) is always less than amax. So, if at_i > amax then rescale the area of each ice category, elsewhere nothing to do.
This can be obtained by the following lines:
DO jl = 1, jpl ! if at_i > amax, set at_i=amax by a rescale of the area of each category a_i(:,:,jl) = a_i(:,:,jl) * amax / MAX( at_i(:,:), amax ) END DO at_i(:,:) = MIN( at_i(:,:), amax ) ! total concentration becomes less than amax by construction
that is using a rescale factor of amax/at_i if at_i>amax, and of 1. (=amax/amax) otherwise. No need to recompute at_i, since the only change in at_i value will be at_i=amax when at_i>amax.
This changes have been introduced in v3.5 alpha only
see Changeset 3838
comment:3 Changed 7 years ago by nemo
- Keywords LIM* added
comment:4 Changed 7 years ago by nemo
- Keywords release-3.4* added
comment:5 Changed 7 years ago by nemo
- Keywords release-3.4* removed
comment:6 Changed 2 years ago by nemo
- Keywords v3.4 added
Following Martin's advice, bug has been fixed as suggested in branches 2012/dev_v3_4_STABLE_2012 and 2012/dev_MERGE_2012