- 
                Notifications
    You must be signed in to change notification settings 
- Fork 250
Open
Labels
bug 🐞Even a perfect program still has bugsEven a perfect program still has bugsturbulence closures 🎐
Description
Here's the line of issue:
Line 314 in a02649d
| return ϵκR₃₃(i, j, k, grid, κ, clock, sl, b, C) * ∂zᶜᶜᶠ(i, j, k, grid, c) | 
Note that there is no
clock argument being passed into the explicit_R₃₃_∂z_c function.
Here's an MWE to go with:
using Oceananigans
using Oceananigans.Grids
using Oceananigans.Units
using Oceananigans.TurbulenceClosures
using CairoMakie
using Statistics
using JLD2
closure = Oceananigans.TurbulenceClosures.TriadIsopycnalSkewSymmetricDiffusivity(κ_skew=1e3, κ_symmetric=1e3)
grid = RectilinearGrid(CPU(), 
                       size = (16, 16),
                       y = (0, 1),
                       z = (0, 1),
                       topology = (Flat, Bounded, Bounded),
                       halo = (5, 5))
free_surface = SplitExplicitFreeSurface(grid; cfl=0.8, fixed_Δt=105seconds)
model = HydrostaticFreeSurfaceModel(; grid = grid,
                                      coriolis = BetaPlane(f₀ = -0.83e-4, β = 1.87e-11),
                                      buoyancy = SeawaterBuoyancy(),
                                      free_surface = free_surface,
                                      timestepper = :SplitRungeKutta3,
                                      tracers = (:T, :S),
                                      closure = closure)
simulation = Simulation(model, Δt=100seconds, stop_iteration=5)
run!(simulation)with an output message of
Internal error: during type inference of
run!(Oceananigans.Simulations.Simulation{Oceananigans.Models.HydrostaticFreeSurfaceModels.HydrostaticFreeSurfaceModel{Oceananigans.TimeSteppers.SplitRungeKutta3TimeStepper{Float64, NamedTuple{(:u, :v, :U, :V, :T, :S), Tuple{Oceananigans.Fields.Field{Oceananigans.Grids.Face, 
...[redacted]
Oceananigans.AbstractOutputWriter}, OrderedCollections.OrderedDict{Symbol, Oceananigans.Simulations.Callback{P, F, S, CS} where CS where S where F where P}, Float64, Bool})
Encountered stack overflow.
This might be caused by recursion over very long tuples or argument lists.
[ Info: Initializing simulation...
ERROR: TaskFailedException
    nested task error: UndefVarError: `clock` not defined in `Oceananigans.TurbulenceClosures`
    Suggestion: check for spelling errors or missing imports.
    Stacktrace:
      [1] explicit_R₃₃_∂z_c
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\TurbulenceClosures\turbulence_closure_implementations\isopycnal_skew_symmetric_diffusivity_with_triads.jl:314 [inlined]
      [2] diffusive_flux_z
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\TurbulenceClosures\turbulence_closure_implementations\isopycnal_skew_symmetric_diffusivity_with_triads.jl:285 [inlined]
      [3] diffusive_flux_z
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\TurbulenceClosures\implicit_explicit_time_discretization.jl:41 [inlined]
      [4] _diffusive_flux_z
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\TurbulenceClosures\closure_kernel_operators.jl:16 [inlined]
      [5] Az_qᶜᶜᶠ
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Operators\products_between_fields_and_grid_metrics.jl:12 [inlined]
      [6] δzᵃᵃᶜ
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Operators\difference_operators.jl:26 [inlined]
      [7] ∇_dot_qᶜ
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\TurbulenceClosures\closure_kernel_operators.jl:45 [inlined]
      [8] hydrostatic_free_surface_tracer_tendency
        @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Models\HydrostaticFreeSurfaceModels\hydrostatic_free_surface_tendency_kernel_functions.jl:135 [inlined]
      [9] cpu_compute_hydrostatic_free_surface_Gc!
        @ C:\Users\xinle\.julia\packages\KernelAbstractions\lGrz7\src\macros.jl:306 [inlined]
     [10] cpu_compute_hydrostatic_free_surface_Gc!(__ctx__::KernelAbstractions.CompilerMetadata{…}, Gc::Field{…}, grid::RectilinearGrid{…}, args::Tuple{…})
        @ Oceananigans.Models.HydrostaticFreeSurfaceModels .\none:0
     [11] __thread_run(tid::Int64, len::Int64, rem::Int64, obj::KernelAbstractions.Kernel{…}, ndrange::Nothing, iterspace::KernelAbstractions.NDIteration.NDRange{…}, args::Tuple{…}, dynamic::KernelAbstractions.NDIteration.NoDynamicCheck)
        @ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\lGrz7\src\cpu.jl:145
     [12] (::KernelAbstractions.var"#29#32"{…})()
        @ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\lGrz7\src\cpu.jl:120
...and 1 more exception.
Stacktrace:
  [1] sync_end(c::Channel{Any})
    @ Base .\task.jl:466
  [2] macro expansion
    @ .\task.jl:499 [inlined]
  [3] __run(obj::KernelAbstractions.Kernel{…}, ndrange::Nothing, iterspace::KernelAbstractions.NDIteration.NDRange{…}, args::Tuple{…}, dynamic::KernelAbstractions.NDIteration.NoDynamicCheck, static_threads::Bool)
    @ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\lGrz7\src\cpu.jl:119
  [4] (::KernelAbstractions.Kernel{…})(::Field{…}, ::Vararg{…}; ndrange::Nothing, workgroupsize::Nothing)
    @ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\lGrz7\src\cpu.jl:46
  [5] (::KernelAbstractions.Kernel{…})(::Field{…}, ::Vararg{…})
    @ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\lGrz7\src\cpu.jl:39
  [6] _launch!(::CPU, ::RectilinearGrid{…}, ::Symbol, ::Function, ::Field{…}, ::RectilinearGrid{…}, ::Vararg{…}; exclude_periphery::Bool, reduced_dimensions::Tuple{}, active_cells_map::Nothing)
    @ Oceananigans.Utils C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Utils\kernel_launching.jl:376
  [7] _launch!
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Utils\kernel_launching.jl:363 [inlined]
  [8] launch!
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Utils\kernel_launching.jl:340 [inlined]
  [9] compute_hydrostatic_free_surface_tendency_contributions!(model::HydrostaticFreeSurfaceModel{…}, kernel_parameters::Symbol; active_cells_map::Nothing)
    @ Oceananigans.Models.HydrostaticFreeSurfaceModels C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Models\HydrostaticFreeSurfaceModels\compute_hydrostatic_free_surface_tendencies.jl:86
 [10] compute_hydrostatic_free_surface_tendency_contributions!
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Models\HydrostaticFreeSurfaceModels\compute_hydrostatic_free_surface_tendencies.jl:57 [inlined]
 [11] compute_tendencies!(model::HydrostaticFreeSurfaceModel{…}, callbacks::Vector{…})
    @ Oceananigans.Models.HydrostaticFreeSurfaceModels C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Models\HydrostaticFreeSurfaceModels\compute_hydrostatic_free_surface_tendencies.jl:33
 [12] #apply_regionally!#76
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Utils\multi_region_transformation.jl:135 [inlined]
 [13] apply_regionally!
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Utils\multi_region_transformation.jl:132 [inlined]
 [14] macro expansion
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Utils\multi_region_transformation.jl:224 [inlined]
 [15] update_state!(model::HydrostaticFreeSurfaceModel{…}, grid::RectilinearGrid{…}, callbacks::Vector{…}; compute_tendencies::Bool)
    @ Oceananigans.Models.HydrostaticFreeSurfaceModels C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Models\HydrostaticFreeSurfaceModels\update_hydrostatic_free_surface_model_state.jl:53
 [16] update_state!
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Models\HydrostaticFreeSurfaceModels\update_hydrostatic_free_surface_model_state.jl:32 [inlined]
 [17] update_state! (repeats 2 times)
    @ C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Models\HydrostaticFreeSurfaceModels\update_hydrostatic_free_surface_model_state.jl:29 [inlined]
 [18] initialize!(sim::Simulation{…})
    @ Oceananigans.Simulations C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Simulations\run.jl:210
 [19] time_step!(sim::Simulation)
    @ Oceananigans.Simulations C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Simulations\run.jl:136
 [20] run!(sim::Any; pickup::Any)
    @ Oceananigans.Simulations C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Simulations\run.jl:105
 [21] run!(sim::Any)
    @ Oceananigans.Simulations C:\Users\xinle\.julia\packages\Oceananigans\Xjsq1\src\Simulations\run.jl:92
 [22] top-level scope
    @ c:\Users\xinle\Dropbox\MIT\1deg_simulation\ClimaOcean.jl\isopycnal_skew_symmetric_triads_MWE.jl:29
Some type information was truncated. Use `show(err)` to see complete types.Metadata
Metadata
Assignees
Labels
bug 🐞Even a perfect program still has bugsEven a perfect program still has bugsturbulence closures 🎐