This PR reverts the O3 VMR reset for O3 production and loss tendency diagnostics from the implicit solver because such reset leads to incorrect low tropospheric column O3.
Details:
This reset was implemented when the implicit solver printed lots of warnings below about non-convergence:
imp_sol: Time step 1.8000000000000E+03 failed to converge @
(lchnk,lev,col,nstep) = 6479 43 1 0
imp_sol : @ (lchnk,lev,col) = 6479 43 1
failed 1 times
Looking into the implicit solver code in mo_imp_sol.F90, this warning is printed when dt=1800s (the number after "Time step") fails to converge and the solver will halve dt up to cut_limit=5 times.
If the solver cannot converge after cutting dt 5 times, warnings will be printed by the following code:
write(iulog,'('' imp_sol: Failed to converge @ (lchnk,lev,col,nstep,dt,time) = '',4i6,1p,2e21.13)') &
lchnk,lev,i,nstep,dt,interval_done+dt
do m = 1,clscnt4
if( .not. converged(m) ) then
write(iulog,'(1x,a8,1x,1pe10.3)') solsym(clsmap(m,4)), max_delta(m)
end if
end do
We don't see the warning from this part of code, so it converges with halved dt. Therefore, the reset after implicit solver is incorrect.
This PR reverts the O3 VMR reset for O3 production and loss tendency diagnostics from the implicit solver because such reset leads to incorrect low tropospheric column O3.
Details: This reset was implemented when the implicit solver printed lots of warnings below about non-convergence: imp_sol: Time step 1.8000000000000E+03 failed to converge @ (lchnk,lev,col,nstep) = 6479 43 1 0 imp_sol : @ (lchnk,lev,col) = 6479 43 1 failed 1 times
Looking into the implicit solver code in mo_imp_sol.F90, this warning is printed when dt=1800s (the number after "Time step") fails to converge and the solver will halve dt up to cut_limit=5 times.
If the solver cannot converge after cutting dt 5 times, warnings will be printed by the following code:
write(iulog,'('' imp_sol: Failed to converge @ (lchnk,lev,col,nstep,dt,time) = '',4i6,1p,2e21.13)') & lchnk,lev,i,nstep,dt,interval_done+dt do m = 1,clscnt4 if( .not. converged(m) ) then write(iulog,'(1x,a8,1x,1pe10.3)') solsym(clsmap(m,4)), max_delta(m) end if end do
We don't see the warning from this part of code, so it converges with halved dt. Therefore, the reset after implicit solver is incorrect.
[NBFB]