Skip to content
Open
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
8595656
fix @show typeof(dd)
adrianaghiozzi May 3, 2024
ffceb5d
fix working with dd{Real}
adrianaghiozzi May 3, 2024
28d93f0
cache precompiled dd
adrianaghiozzi May 3, 2024
643cd9c
dd{Real}
adrianaghiozzi May 3, 2024
c5b76fa
dd._ddR and uncertain(dd)
adrianaghiozzi May 3, 2024
33fcbe9
Merge branch 'master' of github.com:ProjectTorreyPines/IMASDD.jl
adrianaghiozzi May 16, 2024
84c531b
Merge branch 'master' of github.com:ProjectTorreyPines/IMASDD.jl into…
adrianaghiozzi Aug 5, 2024
f783bd0
Add risk.json
adrianaghiozzi Aug 15, 2024
7817996
Add costing.model for use in risk
adrianaghiozzi Aug 15, 2024
dc30e1c
Add units in dd.risk
adrianaghiozzi Sep 5, 2024
61c6400
Remove lazycopy
adrianaghiozzi Sep 7, 2024
c4c5c42
Update dd.jl file
Sep 7, 2024
9ac0f75
Merge branch 'master' of github.com:ProjectTorreyPines/IMASDD.jl into…
adrianaghiozzi Sep 9, 2024
cb997fa
Merge branch 'risk' of github.com:ProjectTorreyPines/IMASDD.jl into risk
adrianaghiozzi Sep 9, 2024
d0542ba
Merge branch 'master' of github.com:ProjectTorreyPines/IMASDD.jl into…
adrianaghiozzi Oct 3, 2024
4f88485
Add edge collisionality stability limit to identifiers
adrianaghiozzi Oct 23, 2024
51cbcb5
oops
adrianaghiozzi Oct 23, 2024
9432f8c
Merge branch 'master' of github.com:ProjectTorreyPines/IMASDD.jl into…
adrianaghiozzi Oct 30, 2024
1f24b82
bug fix
adrianaghiozzi Nov 11, 2024
0af05cc
Merge branch 'master' of github.com:ProjectTorreyPines/IMASDD.jl into…
adrianaghiozzi Nov 12, 2024
57390b9
Remove dd.costing.model
adrianaghiozzi Nov 12, 2024
d1d2179
Update dd.jl file
Nov 12, 2024
a045ab1
Remove dd.costing.model
adrianaghiozzi Nov 12, 2024
8f3655b
Merge branch 'risk' of github.com:ProjectTorreyPines/IMASDD.jl into risk
adrianaghiozzi Nov 12, 2024
67fe9d3
Update dd.jl file
Nov 12, 2024
08c7f6a
Add field failure_mode to risk
adrianaghiozzi Nov 14, 2024
48c2513
Merge branch 'risk' of github.com:ProjectTorreyPines/IMASDD.jl into risk
adrianaghiozzi Nov 14, 2024
a830eca
Update dd.jl file
Nov 14, 2024
69dab4a
Merge branch 'master' of https://github.com/ProjectTorreyPines/IMASdd…
adrianaghiozzi Mar 5, 2025
a3ba88b
Merge branch 'master' of https://github.com/ProjectTorreyPines/IMASdd…
adrianaghiozzi Mar 12, 2025
30f66ef
FilledFields__risk in dd.jl
adrianaghiozzi Mar 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion data_dictionary/data_structures_extra/costing.json
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,15 @@
},
"costing.levelized_CoE": {
"data_type": "FLT_0D",
"documentation": "Levelized cost of electiricity (total cost / total electricy generated)",
"documentation": "Levelized cost of electiricity (total cost / total electricity generated)",
"type": "static",
"units": "$/kWh"
},
"costing.model": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adrianaghiozzi if you want to add the model name, we should try to conform to what IMAS generally does for all of its IDSs. I'll add some logic to generate_dd to copy the .code tree under the IDSs that we have added. This should allow you to use costing.code.name.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@orso82 Thanks, that would be great - this is just needed for the risk actor because the costs are grouped differently depending on whether it's ARIES or Sheffield (costing each coil system separately vs. all together) so the model determines how many fields are needed in dd.risk.engineering.loss

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uhm... I have not taken a look at the code, but it sounds like you are hardcoding the number of fields based on the model, which is definitely not a robust thing to do. Perhaps it would be best to just pick a model (say ARIES), and use the TF costs from that model for the evaluation of risk.

"data_type": "STR_0D",
"documentation": "Name of costing model",
"type": "static"
},
"costing.plant_lifetime": {
"data_type": "FLT_0D",
"documentation": "Lifetime of the plant",
Expand Down
107 changes: 107 additions & 0 deletions data_dictionary/data_structures_extra/risk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
{
"risk": {
"documentation": "Risk quantification of plasma and engineering components"
},
"risk.engineering.loss": {
"coordinates": [
"1...N"
],
"data_type": "STRUCT_ARRAY",
"documentation": "List of engineering-related losses",
"type": "static"
},
"risk.engineering.loss[:].description": {
"data_type": "STR_0D",
"documentation": "Description of loss channel",
"type": "static"
},
"risk.engineering.loss[:].probability": {
"data_type": "FLT_0D",
"documentation": "Probability of failure",
"type": "static"
},
"risk.engineering.loss[:].risk": {
"data_type": "FLT_0D",
"documentation": "Product of loss probability and severity",
"type": "static"
},
"risk.engineering.loss[:].severity": {
"data_type": "FLT_0D",
"documentation": "Severity of failure",
"type": "static",
"units": "M$"
},
"risk.engineering.risk": {
"data_type": "FLT_0D",
"documentation": "Total engineering risk",
"type": "static",
"units": "M$"
},
"risk.plasma.loss": {
"coordinates": [
"1...N"
],
"data_type": "STRUCT_ARRAY",
"documentation": "List of plasma-related losses",
"type": "static"
},
"risk.plasma.loss[:].description": {
"data_type": "STR_0D",
"documentation": "Description of loss channel",
"type": "static"
},
"risk.plasma.loss[:].probability": {
"data_type": "FLT_0D",
"documentation": "Probability of failure",
"type": "static"
},
"risk.plasma.loss[:].risk": {
"data_type": "FLT_0D",
"documentation": "Product of loss probability and severity",
"type": "static",
"units": "$/kWh"
},
"risk.plasma.risk": {
"data_type": "FLT_0D",
"documentation": "Total plasma risk",
"type": "static",
"units": "$/kWh"
},
"risk.plasma.severity.average_severity": {
"data_type": "FLT_0D",
"documentation": "Average severity of disruption-induced events",
"type": "static"
},
"risk.plasma.severity.current_quench": {
"data_type": "FLT_0D",
"documentation": "Severity of disruption-induced current quench",
"type": "static"
},
"risk.plasma.severity.thermal_quench": {
"data_type": "FLT_0D",
"documentation": "Severity of disruption-induced thermal quench",
"type": "static"
},
"risk.plasma.severity.vertical_forces": {
"data_type": "FLT_0D",
"documentation": "Severity of disruption-induced vertical forces",
"type": "static"
},
"risk.time": {
"units": "s",
"coordinates": [
"1...N"
],
"lifecycle_status": "active",
"data_type": "FLT_1D_TYPE",
"full_path": "risk/time(:)",
"timebasepath": "time",
"documentation": "Generic time",
"type": "dynamic"
},
"risk.total_risk": {
"data_type": "FLT_0D",
"documentation": "Sum of risks",
"type": "static"
}
}
170 changes: 167 additions & 3 deletions src/dd.jl
Original file line number Diff line number Diff line change
Expand Up @@ -36348,6 +36348,133 @@ end

runaway_electrons() = runaway_electrons{Float64}()

mutable struct risk__plasma__severity{T} <: IDS{T}
var"average_severity" :: T
var"average_severity_σ" :: T
var"current_quench" :: T
var"current_quench_σ" :: T
var"thermal_quench" :: T
var"thermal_quench_σ" :: T
var"vertical_forces" :: T
var"vertical_forces_σ" :: T
_filled::Set{Symbol}
_frozen::Bool
_in_expression::Vector{Symbol}
_ref :: Union{Nothing,risk__plasma__severity}
_parent :: WeakRef
end

function risk__plasma__severity{T}() where T
ids = risk__plasma__severity{T}(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
return ids
end

risk__plasma__severity() = risk__plasma__severity{Float64}()

mutable struct risk__plasma__loss{T} <: IDSvectorStaticElement{T}
var"description" :: String
var"probability" :: T
var"probability_σ" :: T
var"risk" :: T
var"risk_σ" :: T
_filled::Set{Symbol}
_frozen::Bool
_in_expression::Vector{Symbol}
_ref :: Union{Nothing,risk__plasma__loss}
_parent :: WeakRef
end

function risk__plasma__loss{T}() where T
ids = risk__plasma__loss{T}("", 0.0, 0.0, 0.0, 0.0, Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
return ids
end

risk__plasma__loss() = risk__plasma__loss{Float64}()

mutable struct risk__plasma{T} <: IDS{T}
var"loss" :: IDSvector{risk__plasma__loss{T}}
var"risk" :: T
var"risk_σ" :: T
var"severity" :: risk__plasma__severity{T}
_filled::Set{Symbol}
_frozen::Bool
_in_expression::Vector{Symbol}
_ref :: Union{Nothing,risk__plasma}
_parent :: WeakRef
end

function risk__plasma{T}() where T
ids = risk__plasma{T}(IDSvector{risk__plasma__loss{T}}(), 0.0, 0.0, risk__plasma__severity{T}(), Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
setfield!(ids.loss, :_parent, WeakRef(ids))
setfield!(ids.severity, :_parent, WeakRef(ids))
return ids
end

risk__plasma() = risk__plasma{Float64}()

mutable struct risk__engineering__loss{T} <: IDSvectorStaticElement{T}
var"description" :: String
var"probability" :: T
var"probability_σ" :: T
var"risk" :: T
var"risk_σ" :: T
var"severity" :: T
var"severity_σ" :: T
_filled::Set{Symbol}
_frozen::Bool
_in_expression::Vector{Symbol}
_ref :: Union{Nothing,risk__engineering__loss}
_parent :: WeakRef
end

function risk__engineering__loss{T}() where T
ids = risk__engineering__loss{T}("", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
return ids
end

risk__engineering__loss() = risk__engineering__loss{Float64}()

mutable struct risk__engineering{T} <: IDS{T}
var"loss" :: IDSvector{risk__engineering__loss{T}}
var"risk" :: T
var"risk_σ" :: T
_filled::Set{Symbol}
_frozen::Bool
_in_expression::Vector{Symbol}
_ref :: Union{Nothing,risk__engineering}
_parent :: WeakRef
end

function risk__engineering{T}() where T
ids = risk__engineering{T}(IDSvector{risk__engineering__loss{T}}(), 0.0, 0.0, Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
setfield!(ids.loss, :_parent, WeakRef(ids))
return ids
end

risk__engineering() = risk__engineering{Float64}()

mutable struct risk{T} <: IDStop{T}
var"engineering" :: risk__engineering{T}
var"plasma" :: risk__plasma{T}
var"time" :: Vector{Float64}
var"total_risk" :: T
var"total_risk_σ" :: T
_filled::Set{Symbol}
_frozen::Bool
_in_expression::Vector{Symbol}
_ref :: Union{Nothing,risk}
_parent :: WeakRef
end

function risk{T}() where T
ids = risk{T}(risk__engineering{T}(), risk__plasma{T}(), T[], 0.0, 0.0, Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
setfield!(ids.engineering, :_parent, WeakRef(ids))
setfield!(ids.plasma, :_parent, WeakRef(ids))
return ids
end

risk() = risk{Float64}()

mutable struct requirements{T} <: IDStop{T}
var"Psol_R" :: T
var"Psol_R_σ" :: T
Expand Down Expand Up @@ -88135,6 +88262,7 @@ mutable struct costing{T} <: IDStop{T}
var"future" :: costing__future{T}
var"levelized_CoE" :: T
var"levelized_CoE_σ" :: T
var"model" :: String
var"plant_lifetime" :: T
var"plant_lifetime_σ" :: T
var"time" :: Vector{Float64}
Expand All @@ -88146,7 +88274,7 @@ mutable struct costing{T} <: IDStop{T}
end

function costing{T}() where T
ids = costing{T}(0.0, 0.0, 0.0, 0.0, costing__cost_decommissioning{T}(), costing__cost_direct_capital{T}(), 0.0, 0.0, costing__cost_operations{T}(), costing__future{T}(), 0.0, 0.0, 0.0, 0.0, T[], Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
ids = costing{T}(0.0, 0.0, 0.0, 0.0, costing__cost_decommissioning{T}(), costing__cost_direct_capital{T}(), 0.0, 0.0, costing__cost_operations{T}(), costing__future{T}(), 0.0, 0.0, "", 0.0, 0.0, T[], Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
setfield!(ids.cost_decommissioning, :_parent, WeakRef(ids))
setfield!(ids.cost_direct_capital, :_parent, WeakRef(ids))
setfield!(ids.cost_operations, :_parent, WeakRef(ids))
Expand Down Expand Up @@ -102882,6 +103010,7 @@ mutable struct dd{T} <: DD{T}
var"reflectometer_profile" :: reflectometer_profile{T}
var"refractometer" :: refractometer{T}
var"requirements" :: requirements{T}
var"risk" :: risk{T}
var"runaway_electrons" :: runaway_electrons{T}
var"sawteeth" :: sawteeth{T}
var"soft_x_rays" :: soft_x_rays{T}
Expand Down Expand Up @@ -102911,7 +103040,7 @@ mutable struct dd{T} <: DD{T}
end

function dd{T}() where T
ids = dd{T}(amns_data{T}(), b_field_non_axisymmetric{T}(), balance_of_plant{T}(), barometry{T}(), blanket{T}(), bolometer{T}(), bremsstrahlung_visible{T}(), build{T}(), calorimetry{T}(), camera_ir{T}(), camera_visible{T}(), camera_x_rays{T}(), charge_exchange{T}(), coils_non_axisymmetric{T}(), controllers{T}(), core_instant_changes{T}(), core_profiles{T}(), core_sources{T}(), core_transport{T}(), costing{T}(), cryostat{T}(), dataset_description{T}(), dataset_fair{T}(), disruption{T}(), distribution_sources{T}(), distributions{T}(), divertors{T}(), ec_launchers{T}(), ece{T}(), edge_profiles{T}(), edge_sources{T}(), edge_transport{T}(), em_coupling{T}(), equilibrium{T}(), ferritic{T}(), focs{T}(), gas_injection{T}(), gas_pumping{T}(), gyrokinetics_local{T}(), hard_x_rays{T}(), ic_antennas{T}(), interferometer{T}(), iron_core{T}(), langmuir_probes{T}(), lh_antennas{T}(), magnetics{T}(), mhd{T}(), mhd_linear{T}(), mse{T}(), nbi{T}(), neutron_diagnostic{T}(), neutronics{T}(), ntms{T}(), operational_instrumentation{T}(), pellets{T}(), pf_active{T}(), pf_passive{T}(), pf_plasma{T}(), plasma_initiation{T}(), polarimeter{T}(), pulse_schedule{T}(), radiation{T}(), real_time_data{T}(), reflectometer_fluctuation{T}(), reflectometer_profile{T}(), refractometer{T}(), requirements{T}(), runaway_electrons{T}(), sawteeth{T}(), soft_x_rays{T}(), solid_mechanics{T}(), spectrometer_mass{T}(), spectrometer_uv{T}(), spectrometer_visible{T}(), spectrometer_x_ray_crystal{T}(), spi{T}(), stability{T}(), summary{T}(), temporary{T}(), tf{T}(), thomson_scattering{T}(), transport_solver_numerics{T}(), turbulence{T}(), wall{T}(), waves{T}(), workflow{T}(), 0.0, Dict(), Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
ids = dd{T}(amns_data{T}(), b_field_non_axisymmetric{T}(), balance_of_plant{T}(), barometry{T}(), blanket{T}(), bolometer{T}(), bremsstrahlung_visible{T}(), build{T}(), calorimetry{T}(), camera_ir{T}(), camera_visible{T}(), camera_x_rays{T}(), charge_exchange{T}(), coils_non_axisymmetric{T}(), controllers{T}(), core_instant_changes{T}(), core_profiles{T}(), core_sources{T}(), core_transport{T}(), costing{T}(), cryostat{T}(), dataset_description{T}(), dataset_fair{T}(), disruption{T}(), distribution_sources{T}(), distributions{T}(), divertors{T}(), ec_launchers{T}(), ece{T}(), edge_profiles{T}(), edge_sources{T}(), edge_transport{T}(), em_coupling{T}(), equilibrium{T}(), ferritic{T}(), focs{T}(), gas_injection{T}(), gas_pumping{T}(), gyrokinetics_local{T}(), hard_x_rays{T}(), ic_antennas{T}(), interferometer{T}(), iron_core{T}(), langmuir_probes{T}(), lh_antennas{T}(), magnetics{T}(), mhd{T}(), mhd_linear{T}(), mse{T}(), nbi{T}(), neutron_diagnostic{T}(), neutronics{T}(), ntms{T}(), operational_instrumentation{T}(), pellets{T}(), pf_active{T}(), pf_passive{T}(), pf_plasma{T}(), plasma_initiation{T}(), polarimeter{T}(), pulse_schedule{T}(), radiation{T}(), real_time_data{T}(), reflectometer_fluctuation{T}(), reflectometer_profile{T}(), refractometer{T}(), requirements{T}(), risk{T}(), runaway_electrons{T}(), sawteeth{T}(), soft_x_rays{T}(), solid_mechanics{T}(), spectrometer_mass{T}(), spectrometer_uv{T}(), spectrometer_visible{T}(), spectrometer_x_ray_crystal{T}(), spi{T}(), stability{T}(), summary{T}(), temporary{T}(), tf{T}(), thomson_scattering{T}(), transport_solver_numerics{T}(), turbulence{T}(), wall{T}(), waves{T}(), workflow{T}(), 0.0, Dict(), Set{Symbol}(), false, Symbol[], nothing, WeakRef(nothing))
setfield!(ids.amns_data, :_parent, WeakRef(ids))
setfield!(ids.b_field_non_axisymmetric, :_parent, WeakRef(ids))
setfield!(ids.balance_of_plant, :_parent, WeakRef(ids))
Expand Down Expand Up @@ -102979,6 +103108,7 @@ function dd{T}() where T
setfield!(ids.reflectometer_profile, :_parent, WeakRef(ids))
setfield!(ids.refractometer, :_parent, WeakRef(ids))
setfield!(ids.requirements, :_parent, WeakRef(ids))
setfield!(ids.risk, :_parent, WeakRef(ids))
setfield!(ids.runaway_electrons, :_parent, WeakRef(ids))
setfield!(ids.sawteeth, :_parent, WeakRef(ids))
setfield!(ids.soft_x_rays, :_parent, WeakRef(ids))
Expand Down Expand Up @@ -107333,8 +107463,9 @@ const _all_info = Dict{String,Info}(
"costing.future.learning.hts.learning_rate_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of costing.future.learning.hts.learning_rate", true),
"costing.future.learning.hts.production_increase" => Info{Tuple{}}((), "-", "FLT_0D", "Factor by which production of ReBCO multiplies", true),
"costing.future.learning.hts.production_increase_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of costing.future.learning.hts.production_increase", true),
"costing.levelized_CoE" => Info{Tuple{}}((), "\$/kWh", "FLT_0D", "Levelized cost of electiricity (total cost / total electricy generated)", true),
"costing.levelized_CoE" => Info{Tuple{}}((), "\$/kWh", "FLT_0D", "Levelized cost of electiricity (total cost / total electricity generated)", true),
"costing.levelized_CoE_σ" => Info{Tuple{}}((), "\$/kWh", "FLT_0D", "error of costing.levelized_CoE", true),
"costing.model" => Info{Tuple{}}((), "-", "STR_0D", "Name of costing model", true),
"costing.plant_lifetime" => Info{Tuple{}}((), "year", "FLT_0D", "Lifetime of the plant", true),
"costing.plant_lifetime_σ" => Info{Tuple{}}((), "year", "FLT_0D", "error of costing.plant_lifetime", true),
"costing.time" => Info{Tuple{String}}(("1...N",), "s", "FLT_1D", "Generic time", true),
Expand Down Expand Up @@ -122150,6 +122281,39 @@ const _all_info = Dict{String,Info}(
"requirements.time" => Info{Tuple{String}}(("1...N",), "s", "FLT_1D", "Generic time", true),
"requirements.tritium_breeding_ratio" => Info{Tuple{}}((), "-", "FLT_0D", "Tritium breeding ratio of the whole plant", true),
"requirements.tritium_breeding_ratio_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of requirements.tritium_breeding_ratio", true),
"risk" => Info{Tuple{}}((), "-", "STRUCTURE", "Risk quantification of plasma and engineering components", true),
"risk.engineering" => Info{Tuple{}}((), "-", "STRUCTURE", "", true),
"risk.engineering.loss[:]" => Info{Tuple{String}}(("1...N",), "-", "STRUCT_ARRAY", "List of engineering-related losses", true),
"risk.engineering.loss[:].description" => Info{Tuple{}}((), "-", "STR_0D", "Description of loss channel", true),
"risk.engineering.loss[:].probability" => Info{Tuple{}}((), "-", "FLT_0D", "Probability of failure", true),
"risk.engineering.loss[:].probability_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.engineering.loss[:].probability", true),
"risk.engineering.loss[:].risk" => Info{Tuple{}}((), "-", "FLT_0D", "Product of loss probability and severity", true),
"risk.engineering.loss[:].risk_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.engineering.loss[:].risk", true),
"risk.engineering.loss[:].severity" => Info{Tuple{}}((), "M\$", "FLT_0D", "Severity of failure", true),
"risk.engineering.loss[:].severity_σ" => Info{Tuple{}}((), "M\$", "FLT_0D", "error of risk.engineering.loss[:].severity", true),
"risk.engineering.risk" => Info{Tuple{}}((), "M\$", "FLT_0D", "Total engineering risk", true),
"risk.engineering.risk_σ" => Info{Tuple{}}((), "M\$", "FLT_0D", "error of risk.engineering.risk", true),
"risk.plasma" => Info{Tuple{}}((), "-", "STRUCTURE", "", true),
"risk.plasma.loss[:]" => Info{Tuple{String}}(("1...N",), "-", "STRUCT_ARRAY", "List of plasma-related losses", true),
"risk.plasma.loss[:].description" => Info{Tuple{}}((), "-", "STR_0D", "Description of loss channel", true),
"risk.plasma.loss[:].probability" => Info{Tuple{}}((), "-", "FLT_0D", "Probability of failure", true),
"risk.plasma.loss[:].probability_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.plasma.loss[:].probability", true),
"risk.plasma.loss[:].risk" => Info{Tuple{}}((), "\$/kWh", "FLT_0D", "Product of loss probability and severity", true),
"risk.plasma.loss[:].risk_σ" => Info{Tuple{}}((), "\$/kWh", "FLT_0D", "error of risk.plasma.loss[:].risk", true),
"risk.plasma.risk" => Info{Tuple{}}((), "\$/kWh", "FLT_0D", "Total plasma risk", true),
"risk.plasma.risk_σ" => Info{Tuple{}}((), "\$/kWh", "FLT_0D", "error of risk.plasma.risk", true),
"risk.plasma.severity" => Info{Tuple{}}((), "-", "STRUCTURE", "", true),
"risk.plasma.severity.average_severity" => Info{Tuple{}}((), "-", "FLT_0D", "Average severity of disruption-induced events", true),
"risk.plasma.severity.average_severity_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.plasma.severity.average_severity", true),
"risk.plasma.severity.current_quench" => Info{Tuple{}}((), "-", "FLT_0D", "Severity of disruption-induced current quench", true),
"risk.plasma.severity.current_quench_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.plasma.severity.current_quench", true),
"risk.plasma.severity.thermal_quench" => Info{Tuple{}}((), "-", "FLT_0D", "Severity of disruption-induced thermal quench", true),
"risk.plasma.severity.thermal_quench_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.plasma.severity.thermal_quench", true),
"risk.plasma.severity.vertical_forces" => Info{Tuple{}}((), "-", "FLT_0D", "Severity of disruption-induced vertical forces", true),
"risk.plasma.severity.vertical_forces_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.plasma.severity.vertical_forces", true),
"risk.time" => Info{Tuple{String}}(("1...N",), "s", "FLT_1D", "Generic time", true),
"risk.total_risk" => Info{Tuple{}}((), "-", "FLT_0D", "Sum of risks", true),
"risk.total_risk_σ" => Info{Tuple{}}((), "-", "FLT_0D", "error of risk.total_risk", true),
"runaway_electrons" => Info{Tuple{}}((), "-", "STRUCTURE", "Description of runaway electrons", false),
"runaway_electrons.code" => Info{Tuple{}}((), "-", "STRUCTURE", "Generic decription of the code-specific parameters for the code that has produced this IDS", false),
"runaway_electrons.code.commit" => Info{Tuple{}}((), "-", "STR_0D", "Unique commit reference of software", false),
Expand Down
1 change: 1 addition & 0 deletions src/identifiers.jl
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ const index_2_name__stability__model = Dict(
202 => :q08_gt_2, # q(@rho=0.8) > 2.
# 300s: Density Limit Models
301 => :gw_density, # Density limit defined by Greenwald fraction
302 => :edge_collisionality,
# 400s: Shaping Limit Models
401 => :κ_controllability,
# 900s: Stability Codes
Expand Down