Skip to content

Commit ba27d5e

Browse files
authored
Merge pull request #30 from jbisits/joey-addnoise
Add simple velocity noise
2 parents 97f857d + 536909e commit ba27d5e

5 files changed

Lines changed: 47 additions & 2 deletions

File tree

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "StaircaseShenanigans"
22
uuid = "c2bb06a8-94f3-4279-b990-30bf3ab8ba6f"
33
authors = ["Josef Bisits <jbisits@gmail.com>"]
4-
version = "0.2.2"
4+
version = "0.3"
55

66
[deps]
77
GibbsSeaWater = "9a22fb26-0b63-4589-b28e-8f9d0b5c3d05"

src/StaircaseShenanigans.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ export StaircaseDNS, DNSModel, SDNS_simulation_setup
2222

2323
export StepInitialConditions, SmoothStepInitialConditions, set_staircase_initial_conditions!
2424

25+
export AbstractNoise, VelocityNoise
26+
2527
export OuterStairMask, OuterStairTargets
2628

2729
export CustomLinearRoquetSeawaterPolynomial, CustomLinearEquationOfState
@@ -31,6 +33,7 @@ export save_computed_output!
3133
export animate_tracers, animate_density, visualise_initial_conditions, visualise_initial_density
3234

3335
include("staircase_initial_conditions.jl")
36+
include("staircase_noise.jl")
3437
include("staircase_model.jl")
3538
include("set_staircase_initial_conditions.jl")
3639
include("staircase_restoring.jl")

src/set_staircase_initial_conditions.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,26 @@ function set_staircase_initial_conditions!(model, ics::SmoothStepInitialConditio
3333

3434
return nothing
3535
end
36+
set_noise!(model, noise::Nothing) = nothing
37+
function set_noise!(model, noise::VelocityNoise)
38+
39+
u, v, w = model.velocities
40+
u_m, v_m, w_m = noise.u_magnitude, noise.v_magnitude, noise.w_magnitude
41+
u_noise = u_m * randn(size(u))
42+
v_noise = v_m * randn(size(v))
43+
w_noise = w_m * randn(size(w))
44+
45+
set!(model, u = u_noise, v = v_noise, w = w_noise)
46+
47+
end
48+
"""
49+
function set_staircase_initial_conditions!(sdns::StaircaseDNS)
50+
Set initial staircase and noise for a `StaircaseDNS`.
51+
"""
3652
function set_staircase_initial_conditions!(sdns::StaircaseDNS)
3753

3854
set_staircase_initial_conditions!(sdns.model, sdns.initial_conditions)
55+
set_noise!(sdns.model, sdns.initial_noise)
3956

4057
return nothing
4158
end

src/staircase_initial_conditions.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
abstract type AbstractStaircaseInitialConditions <: AbstractInitialConditions end
22

33
Base.iterate(sics::AbstractStaircaseInitialConditions, state = 1) =
4-
state > length(fieldnames(sics)) ? nothing : (getfield(sdns, state), state + 1)
4+
state > length(fieldnames(sics)) ? nothing : (getfield(sics, state), state + 1)
55

66
"Container for initial conditions that have well mixed layers seperated by sharp step interfaces."
77
struct StepInitialConditions{T} <: AbstractStaircaseInitialConditions

src/staircase_noise.jl

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
struct VelocityNoise{T}
3+
Container for magnitudes for normally distributed noise added to velocity fields.
4+
"""
5+
struct VelocityNoise{T} <: AbstractNoise
6+
"Magnitude for u velocity field"
7+
u_magnitude :: T
8+
"Magnitude for v velocity field"
9+
v_magnitude :: T
10+
"Magnitude for w velocity field"
11+
w_magnitude :: T
12+
end
13+
Base.iterate(noise::AbstractNoise, state = 1) =
14+
state > length(fieldnames(noise)) ? nothing : (getfield(noise, state), state + 1)
15+
16+
function Base.show(io::IO, noise::AbstractNoise)
17+
if noise isa VelocityNoise
18+
println(io, "VelocityNoise")
19+
println(io, "┣━━ u_noise_magnitude: $(noise.u_magnitude)")
20+
println(io, "┣━━ v_noise_magnitude: $(noise.v_magnitude)")
21+
print(io, "┗━━ w_noise_magnitude: $(noise.w_magnitude)")
22+
end
23+
end
24+
"Convenience for all noise at same magnitude `c`, default behaviour is 1e-4"
25+
VelocityNoise(c::Float64=1e-4) = VelocityNoise(c, c, c)

0 commit comments

Comments
 (0)