-
Notifications
You must be signed in to change notification settings - Fork 256
Open
Description
See the MWE:
using Oceananigans
grid = RectilinearGrid(CPU(), Float64,
size = (8, 8),
x = (0, 1),
z = (0, 1),
topology = (Bounded, Flat, Bounded))
mask = GaussianMask{:z}(center=grid.Lz, width=grid.Lz/10)
uvw_forcing = Relaxation(rate=0.1, mask=mask)
model = NonhydrostaticModel(; grid, forcing = (u=uvw_forcing, v=uvw_forcing, w=uvw_forcing))
simulation = Simulation(model; Ξt=0.1, stop_time=1)
run!(simulation)which gives an error of
julia> run!(simulation)
[ Info: Initializing simulation...
ERROR: TaskFailedException
nested task error: MethodError: no method matching (::GaussianMask{:z, Float64})(::Float64, ::Float64)
The object of type `GaussianMask{:z, Float64}` exists, but no method is defined for this combination of argument types when trying to treat it as a callable object.
Closest candidates are:
(::GaussianMask{:z})(::Any, ::Any, ::Any)
@ Oceananigans c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Forcings\relaxation.jl:151
Stacktrace:
[1] Relaxation
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Forcings\relaxation.jl:90 [inlined]
[2] ContinuousForcing
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Forcings\continuous_forcing.jl:141 [inlined]
[3] u_velocity_tendency
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Models\NonhydrostaticModels\nonhydrostatic_tendency_kernel_functions.jl:93 [inlined]
[4] cpu_compute_Gu!
@ C:\Users\xinle\.julia\packages\KernelAbstractions\X5fk1\src\macros.jl:314 [inlined]
[5] cpu_compute_Gu!(__ctx__::KernelAbstractions.CompilerMetadata{β¦}, Gu::Field{β¦}, grid::RectilinearGrid{β¦}, args::Tuple{β¦})
@ Oceananigans.Models.NonhydrostaticModels .\none:0
[6] __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\X5fk1\src\cpu.jl:145
[7] (::KernelAbstractions.var"#29#32"{β¦})()
@ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\X5fk1\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\X5fk1\src\cpu.jl:119
[4] (::KernelAbstractions.Kernel{β¦})(::Field{β¦}, ::Vararg{β¦}; ndrange::Nothing, workgroupsize::Nothing)
@ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\X5fk1\src\cpu.jl:46
[5] (::KernelAbstractions.Kernel{β¦})(::Field{β¦}, ::Vararg{β¦})
@ KernelAbstractions C:\Users\xinle\.julia\packages\KernelAbstractions\X5fk1\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\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Utils\kernel_launching.jl:378
[7] _launch!
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Utils\kernel_launching.jl:365 [inlined]
[8] launch!
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Utils\kernel_launching.jl:342 [inlined]
[9] #compute_interior_tendency_contributions!#25
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Models\NonhydrostaticModels\compute_nonhydrostatic_tendencies.jl:97 [inlined]
[10] compute_interior_tendency_contributions!
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Models\NonhydrostaticModels\compute_nonhydrostatic_tendencies.jl:49 [inlined]
[11] compute_tendencies!(model::NonhydrostaticModel{β¦}, callbacks::Vector{β¦})
@ Oceananigans.Models.NonhydrostaticModels c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Models\NonhydrostaticModels\compute_nonhydrostatic_tendencies.jl:36
[12] #apply_regionally!#62
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Utils\multi_region_transformation.jl:88 [inlined]
[13] apply_regionally!
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Utils\multi_region_transformation.jl:85 [inlined]
[14] macro expansion
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Utils\multi_region_transformation.jl:146 [inlined]
[15] update_state!(model::NonhydrostaticModel{β¦}, callbacks::Vector{β¦}; compute_tendencies::Bool)
@ Oceananigans.Models.NonhydrostaticModels c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Models\NonhydrostaticModels\update_nonhydrostatic_model_state.jl:53
[16] update_state! (repeats 2 times)
@ c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Models\NonhydrostaticModels\update_nonhydrostatic_model_state.jl:21 [inlined]
[17] initialize!(sim::Simulation{β¦})
@ Oceananigans.Simulations c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Simulations\run.jl:210
[18] time_step!(sim::Simulation{β¦})
@ Oceananigans.Simulations c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Simulations\run.jl:130
[19] run!(sim::Simulation{β¦}; pickup::Bool)
@ Oceananigans.Simulations c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Simulations\run.jl:105
[20] run!(sim::Simulation{β¦})
@ Oceananigans.Simulations c:\Users\xinle\Dropbox\MIT\main_oceananigans\Oceananigans.jl\src\Simulations\run.jl:92
[21] top-level scope
@ REPL[32]:1
Some type information was truncated. Use `show(err)` to see complete types.The reason is that GaussianMask is only defined for (x, y, z)
Oceananigans.jl/src/Forcings/relaxation.jl
Lines 149 to 151 in 81dc6c5
| @inline (g::GaussianMask{:x})(x, y, z) = exp(-(x - g.center)^2 / (2 * g.width^2)) | |
| @inline (g::GaussianMask{:y})(x, y, z) = exp(-(y - g.center)^2 / (2 * g.width^2)) | |
| @inline (g::GaussianMask{:z})(x, y, z) = exp(-(z - g.center)^2 / (2 * g.width^2)) |
But when some topology is Flat one calls
Oceananigans.jl/src/Forcings/relaxation.jl
Lines 90 to 91 in 81dc6c5
| @inline (f::Relaxation)(xβ, xβ, t, field) = | |
| f.rate * f.mask(xβ, xβ) * (f.target(xβ, xβ, t) - field) |
where mask is only expected to take it 2 arguments.
Metadata
Metadata
Assignees
Labels
No labels