#2434 closed Bug (fixed)
Erroneous distribution of radiative fluxes in coupled mode 'oce and ice'
Reported by: | phuot | Owned by: | systeam |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | SBC | Version: | v4.0 |
Severity: | minor | Keywords: | SBC coupled_mode coupling v4.0 |
Cc: |
Description (last modified by smasson)
Context
The management of radiative fluxes in coupled mode produces erroneous air-sea flux in ice covered regions if the option 'oce and ice' is used without specific treatment of multi-categories.
Analysis
In sbccpl.f90:
If clcat='no', the non solar heat air-ice heat flux is added to the total non solar heat flux inside the loop on sea ice categories. The air-ice heat flux is added 'jpl' times to the total non solar heat flux.
CASE( 'oce and ice' ) ! the total flux is computed from ocean and ice fluxes zqns_tot(:,:) = ziceld(:,:) * frcv(jpr_qnsoce)%z3(:,:,1) IF ( TRIM(sn_rcv_qns%clcat) == 'yes' ) THEN DO jl=1,jpl zqns_tot(:,: ) = zqns_tot(:,:) + a_i(:,:,jl) * frcv(jpr_qnsice)%z3(:,:,jl) zqns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,jl) END DO ELSE qns_tot(:,:) = qns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) DO jl = 1, jpl zqns_tot(:,: ) = zqns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) zqns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,1) END DO ENDIF
Later:
WHERE( ziceld /= 0._wp ) zqns_oce(:,:) = ( zqns_tot(:,:) - SUM( a_i * zqns_ice, dim=3 ) ) / ziceld(:,:)
leading to erroneous non solar heat flux over the ocean.
The same treatment is applied to solar heat flux.
Fix
A way of fixing this is to move the computation of the total non solar heat flux out of the loop over categories.
ELSE qns_tot(:,:) = qns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) zqns_tot(:,: ) = zqns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) DO jl = 1, jpl zqns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,1) END DO ENDIF
Commit History (1)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
13066 | smasson | 2020-06-09T09:16:47+02:00 | r4.0-HEAD: sbccpl bugfix when sending 'oce and ice' without ice categories, see #2434 |
Change History (4)
comment:1 Changed 4 years ago by smasson
- Description modified (diff)
comment:2 Changed 4 years ago by smasson
In 13066:
comment:3 Changed 4 years ago by smasson
- Resolution set to fixed
- Status changed from new to closed
we could also had replace
DO jl = 1, jpl zqns_tot(:,: ) = zqns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) zqns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,1) END DO
by
DO jl = 1, jpl zqns_tot(:,: ) = zqns_tot(:,:) + a_i(:,:,jl) * frcv(jpr_qnsice)%z3(:,:,1) zqns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,1) END DO
as picefr = SUM(a_i, dim=3).
but the proposed solution is better.
fixed in [13066]
comment:4 Changed 3 years ago by nemo
- Keywords v4.0 added
I agree.
I addition, the following line should be deleted.