Skip to content

Commit

Permalink
Add enrichment to calculate impurity conc in core
Browse files Browse the repository at this point in the history
  • Loading branch information
tbody-cfs committed Nov 29, 2023
1 parent d651ad3 commit 903b5ca
Show file tree
Hide file tree
Showing 7 changed files with 658 additions and 627 deletions.
12 changes: 11 additions & 1 deletion cfspopcon/algorithms/edge_impurity_concentration.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
"""Run the two point model with a fixed sheath entrance temperature."""


import xarray as xr
from ..atomic_data import read_atomic_data
from ..formulas.scrape_off_layer_model import build_L_int_integrator, calc_required_edge_impurity_concentration
from ..named_options import Impurity
from ..unit_handling import Unitfull, convert_to_default_units, ureg
from .algorithm_class import Algorithm
from ..helpers import extend_impurities_array

RETURN_KEYS = [
"edge_impurity_concentration",
"edge_impurity_concentration_in_core",
"impurities",
]


Expand All @@ -21,6 +24,8 @@ def run_calc_edge_impurity_concentration(
upstream_electron_density: Unitfull,
kappa_e0: Unitfull,
lengyel_overestimation_factor: Unitfull,
edge_impurity_enrichment: Unitfull,
impurities: xr.DataArray,
reference_electron_density: Unitfull = 1.0 * ureg.n20,
reference_ne_tau: Unitfull = 1.0 * ureg.n20 * ureg.ms,
) -> dict[str, Unitfull]:
Expand All @@ -36,7 +41,9 @@ def run_calc_edge_impurity_concentration(
upstream_electron_temp: :term:`glossary link<upstream_electron_temp>`
upstream_electron_density: :term:`glossary link<upstream_electron_density>`
kappa_e0: :term:`glossary link<kappa_e0>`
impurities: :term:`glossary link<impurities>`
lengyel_overestimation_factor: :term:`glossary link<lengyel_overestimation_factor>`
edge_impurity_enrichment: :term:`glossary link<edge_impurity_enrichment>`
Returns:
:term:`edge_impurity_concentration`
Expand All @@ -61,6 +68,9 @@ def run_calc_edge_impurity_concentration(
lengyel_overestimation_factor=lengyel_overestimation_factor,
)

edge_impurity_concentration_in_core = edge_impurity_concentration / edge_impurity_enrichment
impurities = extend_impurities_array(impurities, edge_impurity_species, edge_impurity_concentration_in_core)

local_vars = locals()
return {key: convert_to_default_units(local_vars[key], key) for key in RETURN_KEYS}

Expand Down
2 changes: 1 addition & 1 deletion cfspopcon/file_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,4 @@ def write_point_to_file(dataset: xr.Dataset, point_key: str, point_params: dict,
output_dir.mkdir(parents=True, exist_ok=True)

with open(output_dir / f"{point_key}.json", "w") as file:
json.dump(point.to_dict(), file, indent=4)
json.dump(point.to_dict(), file, indent=4, sort_keys=True)
3 changes: 3 additions & 0 deletions cfspopcon/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ def extend_impurities_array(array: xr.DataArray, species: Union[str, Impurity],
N.b. You can also 'extend' an empty array, constructed via xr.DataArray()
"""
if isinstance(species, xr.DataArray):
species = species.item()

if not isinstance(species, Impurity):
species = Impurity[species.capitalize()]

Expand Down
2 changes: 2 additions & 0 deletions cfspopcon/unit_handling/default_units.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@
lengyel_overestimation_factor="",
upstream_electron_density="n19",
edge_impurity_concentration="",
edge_impurity_concentration_in_core="",
edge_impurity_enrichment="",
)


Expand Down
2 changes: 2 additions & 0 deletions example_cases/SPARC_PRD/input.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -173,3 +173,5 @@ target_electron_temp: 25.0
edge_impurity_species: Argon
# Factor applied to the result of the Lengyel model to give an absolute low-Z impurity concentration.
lengyel_overestimation_factor: 4.3
# Ratio of edge impurity concentration in the edge to in the core (c_edge / c_core)
edge_impurity_enrichment: 5.0
Loading

0 comments on commit 903b5ca

Please sign in to comment.