Opened 2 months ago

#2434 new Bug

Erroneous distribution of radiative fluxes in coupled mode 'oce and ice'

Reported by: phuot Owned by: systeam
Priority: low Milestone:
Component: SBC Version: release-4.0
Severity: minor Keywords: coupling, SBC, coupled_mode
Cc:

Description

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)
ENDDO
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 (0)

(No commits)

Change History (0)

Note: See TracTickets for help on using tickets.