Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

control_flake and rap_control_flake do not run the flake model due to lack of lake input data #1075

Closed
SamuelTrahanNOAA opened this issue Mar 2, 2022 · 1 comment
Assignees
Labels
bug Something isn't working

Comments

@SamuelTrahanNOAA
Copy link
Collaborator

SamuelTrahanNOAA commented Mar 2, 2022

Description

The control_flake and rap_control_flake tests purport to test the flake model, but they don't actually run it. The input data lacks lakefrac, so the flake model never runs. In a way, that's good, since the input also lacks lakedepth, and hence the results would be gibberish. This different than issue #936 which points out that the control_flake regression test also disables the flake model via a namelist setting. In other words, control_flake regression test doubly disable flake: via namelist and via missing input data. Whereas, the rap_control_flake enables it via namelist but disables it through lack of input data.

In the below code from GFS_surface_composites.F90, you can see that lakefrac must be greater than 0.15 to run the flake model. This is controlled by a per-gridpoint use_flake flag array:

! to prepare to separate lake from ocean under water category
      do i = 1, im
        if ((wet(i) .or. icy(i)) .and. lakefrac(i) > zero) then
          lake(i) = .true.
          if (lkm == 1 .and. lakefrac(i) >= 0.15 .and. lakedepth(i) > one) then
            use_flake(i) = .true.
          else
            use_flake(i) = .false.
          endif
        else
          lake(i) = .false.
          use_flake(i) = .false.
        endif
      enddo

The flake_driver.F90 returns immediately if use_flake is off everywhere:

      do_flake = .false.
      do i = 1, im
        flag(i) = wet(i) .and. flag_iter(i) .and. use_flake(i)
        do_flake  = flag(i) .or. do_flake
      enddo

      if (.not. do_flake) return

To Reproduce:

What compilers/machines are you seeing this with?

I only examined this on Hera. The input data is the same for Intel and GNU.

Give explicit steps to reproduce the behavior.

  1. Run control_flake and rap_control_flake regression tests.
  2. Examine the input fields and see there is no lakefrac or lakedepth

Additional context

The flake model is also explicitly disabled in control_flake via namelist as described by #936.

Output

Screenshots
If applicable, drag and drop screenshots to help explain your problem.

output logs
If applicable, include relevant output logs.
Either drag and drop the entire log file here (if a long log) or

paste the code here (if a short section of log)
@zach1221
Copy link
Collaborator

zach1221 commented Jun 5, 2023

Hi, @SamuelTrahanNOAA. Taking a look at this issue as well. It appears that your merged PR #1509 added lakedepth and lakefrac input data and input data fields to the input.nml file, so just want to confirm with you whether this issue can now be closed?

@github-project-automation github-project-automation bot moved this from In Progress to Done in Backlog: platforms and RT Jun 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: Done
Development

No branches or pull requests

2 participants