New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
#2434 (Erroneous distribution of radiative fluxes in coupled mode 'oce and ice') – NEMO

Opened 4 years ago

Closed 4 years ago

Last modified 2 years ago

#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)

ChangesetAuthorTimeChangeLog
13066smasson2020-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)

I agree.
I addition, the following line should be deleted.

   qns_tot(:,:) = qns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1)

comment:2 Changed 4 years ago by smasson

In 13066:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found

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 2 years ago by nemo

  • Keywords v4.0 added
Note: See TracTickets for help on using tickets.