Analysis

include("main.jl")
┌ Warning: replacing command run in the registry
└ @ Comonicon /Users/zijin/.julia/packages/Comonicon/F3QqZ/src/frontend/utils.jl:35
dim = 1
beta = 2.0
beta = 0.25
theta = 60.0
eta = 10.0

meta = setup(dim, beta, theta, eta)
df = load_field(meta);
Changed to /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0
["Bx", "By", "Bz", "Ex", "Ey", "Ez", "jx", "jy", "jz", "rho", "z", "x", "y", "time", "velocity_th_x", "velocity_th_y", "velocity_th_z", "velocity_th_parp", "velocity_x", "velocity_y", "velocity_z", "velocity_parp", "Bx_1", "By_1", "Bz_1", "Bmag", "velocity_th_perp", "rho_c", "rho_n", "Emag", "jmag", "T_x", "T_y", "T_z", "T_parp", "T_perp", "vA_x", "vA_y", "vA_z", "Λ_temp", "Λ", "vA_p_x", "vA_p_y", "vA_p_z", "rho_n_norm", "time_norm", "z_norm", "T_x_norm", "T_y_norm", "T_z_norm", "T_parp_norm", "T_perp_norm"]
df.Λ_temp
25856-element Vector{Float64}:
 1.1743376725205172
 0.8211958000387959
 0.9888189246945296
 1.038176743108648
 0.9112775155275304
 1.0483614764696185
 1.2513114687478306
 0.9406269742528499
 1.265988800435728
 0.9121869528976408
 ⋮
 1.1943909165262856
 1.4102756580298104
 1.2276640827249292
 1.2582323499395187
 1.1992463437859093
 1.2464404928764194
 1.321745561918275
 1.4842598861579053
 1.3494655140146103
plot_overview_ts(df; window=(; step=16),)
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0/figures/fields/time_0.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0/figures/fields/time_16.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0/figures/fields/time_32.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0/figures/fields/time_48.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0/figures/fields/time_64.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0/figures/fields/time_80.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_0.25_theta_60.0_eta_10.0/figures/fields/time_96.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
if dim == 1
    z = :x
elseif dim== 2
    z = :y
else
    z = :z
end
:x
variables = [B_fields; E_field; j_field]
12-element Vector{String}:
 "Bx"
 "By"
 "Bz"
 "Bmag"
 "Ex"
 "Ey"
 "Ez"
 "Emag"
 "jx"
 "jy"
 "jz"
 "jmag"
plot_fields(df, pressure_f_fields)
# easy_save("pressure_fields")
function plot_field(df, field; ids=ids)
    temp_df = stack(df, field, ids)
    data(temp_df) * mapping(:z_norm => z_norm_lab, :value, color=:variable) * visual(Lines)
end
plot_field (generic function with 1 method)
pressure_cols = names(df, r"pressure")
temp_cols = replace.(pressure_cols, r"pressure" => "T")

# Define a function for the transformation to avoid repetition
calculate_temperature = (p, rho) -> p ./ rho

# Use a loop to transform multiple pressure columns
for (pressure_col, temp_col) in zip(pressure_cols, temp_cols)
    transform!(df, [pressure_col, "rho"] => calculate_temperature => temp_col)
end
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_2.0_theta_60.0_eta_10.0/fields/time_0.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_2.0_theta_60.0_eta_10.0/fields/time_15.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_2.0_theta_60.0_eta_10.0/fields/time_31.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_2.0_theta_60.0_eta_10.0/fields/time_47.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_2.0_theta_60.0_eta_10.0/fields/time_63.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_2.0_theta_60.0_eta_10.0/fields/time_79.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
┌ Info: Saved /Users/zijin/projects/swd_simulation/warpx/01_oblique_linear_alfven/dim_1_beta_2.0_theta_60.0_eta_10.0/fields/time_95.0.png
└ @ beforerr /Users/zijin/.julia/dev/beforerr.jl/src/utils/makie.jl:34
vars = [:Bmag, :By, :rho, :p_zz, :T_z]
fig_options = (size=(2400, 700),)
facet = (; linkxaxes = :all, linkyaxes = :rowwise)

temp_df = df |> select_time $ window
plt = plot_fields_time(temp_df, vars)
plt *= mapping(col=:time_norm, row=:variable)
draw(plt; figure=fig_options, facet=facet)
# easy_save("B_time");
ArgumentError: ArgumentError: column name :p_zz not found in the data frame
plot_fields_time(df, [:Bmag, :rho]; step=8, norm=true)
easy_save("B_rho_time")
function plot_pressure_evolution(; cols = [:P_xx, :P_yy, :P_zz], norm=false)
    df = load_pressure_df()
    normalize_df!(df)
    temp_df = stack(df, cols, ids)

    if norm
        temp_df = @by temp_df :variable begin
            :value = :value / maximum(abs.(:value))
            :time_norm
            :z_norm
        end
    end

    data(temp_df) * mapping(ids..., :value, row = :variable => latexify) * visual(Heatmap) |> draw
end

plot_pressure_evolution()
easy_save("pressure_xyz")
df = load_pressure_df()
describe(df)
plot_pressure_evolution(cols = [:anisotropy], norm=false)
easy_save("pressure_anisotropy")
plot_pressure_evolution(cols = [:p_parp, :p_perp], norm=true)
easy_save("pressure_perp_parp")

Fluid fields

file = "particle.arrow"
path = joinpath(dir, file)
df = path |> Arrow.Table |> DataFrame
df.z_norm = df.particle_position_z / meta["d_i"]
df.py_norm = df.particle_momentum_y / 1e-25
plt = data(df) * mapping(:particle_position_z, :time,:particle_momentum_y) * visual(Heatmap)
draw(plt)
ArgumentError: ArgumentError: column name :particle_position_z not found in the data frame

Non-binned particle data

df.time_norm = CategoricalArray(df.time ./ meta["t_ci"])
z_norm_edge = 0:1:240
py_norm_edge = -1e3:10:1e3
datalimits_f = x -> quantile(x, [0.05, 0.95])
fig_options = (size = (1200, 1000),)

plt = data(df) * mapping(:z_norm, :py_norm, layout=:time_norm) * histogram(datalimits=datalimits_f)
p = draw(plt; figure = fig_options)

Parameters

using Pkg
Pkg.add("Symbolics")
using Symbolics
@variables t x y μ_0 B ρ c n q m ϵ_0

Alfven_speed = B / sqrt(μ_0 * ρ)

# plasma frequency
ω_p = sqrt(n * q / (m * ϵ_0))
# inertial_length
d_i = c / ω_p

# gryofrequency
ω_c = q * B / m


simplify(ω_c / ω_p)
ω_c / ω_p