Skip to content

Commit

Permalink
Function to print some dimensional parameters of a simulation
Browse files Browse the repository at this point in the history
  • Loading branch information
johnomotani committed Sep 13, 2023
1 parent fdac38e commit df1bd5b
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 0 deletions.
1 change: 1 addition & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"

[compat]
julia = "1.7.0"
6 changes: 6 additions & 0 deletions docs/src/utils.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
`utils`
===============

```@autodocs
Modules = [moment_kinetics.utils]
```
1 change: 1 addition & 0 deletions src/moment_kinetics.jl
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ include("plot_sequence.jl")
include("makie_post_processing.jl")
include("time_advance.jl")

include("utils.jl")
using TimerOutputs
using Dates
using Glob
Expand Down
93 changes: 93 additions & 0 deletions src/utils.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
"""
Utility functions
"""
module utils

export get_unnormalized_parameters, print_unnormalized_parameters

using ..moment_kinetics_input: mk_input

using OrderedCollections
using TOML
using Unitful

Unitful.@unit eV "eV" "electron volt" 1.602176634e-19*Unitful.J true

function __init__()
Unitful.register(utils)
end

"""
get_unnormalized_parameters(input::Dict)
get_unnormalized_parameters(input_filename::String)
Get many parameters for the simulation setup given by `input` or in the file
`input_filename`, in SI units and eV, returned as an OrderedDict.
"""
function get_unnormalized_parameters end
function get_unnormalized_parameters(input::Dict)
io_input, evolve_moments, t_input, z, z_spectral, r, r_spectral, vpa, vpa_spectral,
vperp, vperp_spectral, gyrophase, gyrophase_spectral, vz, vz_spectral, vr,
vr_spectral, vzeta, vzeta_spectral, composition, species, collisions, geometry,
drive_input, external_source_settings, num_diss_params, manufactured_solns_input,
reference_parameters = mk_input(input)

Nnorm = reference_parameters.Nref * Unitful.m^(-3)
Tnorm = reference_parameters.Tref * eV
Lnorm = reference_parameters.Lref * Unitful.m
Bnorm = reference_parameters.Bref * Unitful.T
cnorm = reference_parameters.cref * Unitful.m / Unitful.s
timenorm = reference_parameters.timeref * Unitful.s

# Assume single ion species so normalised ion mass is always 1
mi = reference_parameters.mnorm * Unitful.kg

parameters = OrderedDict{String,Any}()
parameters["run_name"] = run_name

parameters["Nnorm"] = Nnorm
parameters["Tnorm"] = Tnorm
parameters["Lnorm"] = Lnorm

parameters["Lz"] = Lnorm * z_input.L

parameters["cs0"] = cnorm

dt = t_input.dt * timenorm
parameters["dt"] = dt
parameters["output time step"] = dt * t_input.nwrite
parameters["total simulated time"] = dt * t_input.nstep

parameters["T_e"] = Tnorm * composition.T_e
parameters["T_wall"] = Tnorm * composition.T_wall

parameters["CX_rate_coefficient"] = collisions.charge_exchange / Nnorm / timenorm
parameters["ionization_rate_coefficient"] = collisions.ionization / Nnorm / timenorm

return parameters
end
function get_unnormalized_parameters(input_filename::String, args...; kwargs...)
return get_unnormalized_parameters(TOML.parsefile(input_filename), args...;
kwargs...)
end

"""
print_unnormalized_parameters(input)
Print many parameters for the simulation setup given by `input` (a Dict of parameters or
a String giving a filename), in SI units and eV.
"""
function print_unnormalized_parameters(args...; kwargs...)

parameters = get_unnormalized_parameters(args...; kwargs...)

println("Dimensional parameters for '$(parameters["run_name"])'")

for (k,v) parameters
println("$k = $v")
end

return nothing
end

end #utils

0 comments on commit df1bd5b

Please sign in to comment.