Skip to content

Commit 8a2fd66

Browse files
authored
Merge pull request #4 from lanl/brryan/units
Units
2 parents c4ecc92 + 3e3f6cd commit 8a2fd66

File tree

6 files changed

+40
-13
lines changed

6 files changed

+40
-13
lines changed

env/bash

-1
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,5 @@ function build_jaybenne {
295295
make -j
296296
make_status=$?
297297

298-
echo "${ABS_BUILD_DIR}"
299298
return $make_status
300299
}

src/mcblock/mcblock.cpp

+31-5
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,36 @@ std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {
8181
pkg->AddParam<>("eos_h", eos_h);
8282
pkg->AddParam<>("eos_d", eos_h.GetOnDevice());
8383

84+
// Units (conversion factors from code to CGS)
85+
const Real time_scale = pin->GetOrAddReal("mcblock", "time_scale", 1.);
86+
const Real mass_scale = pin->GetOrAddReal("mcblock", "mass_scale", 1.);
87+
const Real length_scale = pin->GetOrAddReal("mcblock", "length_scale", 1.);
88+
const Real temperature_scale = pin->GetOrAddReal("mcblock", "temperature_scale", 1.);
89+
pkg->AddParam<>("time_scale", time_scale);
90+
pkg->AddParam<>("mass_scale", mass_scale);
91+
pkg->AddParam<>("length_scale", length_scale);
92+
pkg->AddParam<>("temperature_scale", temperature_scale);
93+
8494
// Absorption opacity model
8595
OpacityModel opacity_model;
8696
Opacity opacity;
8797
std::string opacity_model_name = pin->GetString("mcblock", "opacity_model");
8898
if (opacity_model_name == "none") {
8999
opacity_model = OpacityModel::none;
90-
opacity = singularity::photons::Gray(0.0);
100+
opacity = singularity::photons::NonCGSUnits<singularity::photons::Gray>(
101+
singularity::photons::Gray(0.0), time_scale, mass_scale, length_scale,
102+
temperature_scale);
91103
} else if (opacity_model_name == "constant") {
92104
opacity_model = OpacityModel::constant;
93105
Real kappa = pin->GetReal("mcblock", "opacity_constant_value");
94-
opacity = singularity::photons::Gray(kappa);
106+
opacity = singularity::photons::NonCGSUnits<singularity::photons::Gray>(
107+
singularity::photons::Gray(kappa), time_scale, mass_scale, length_scale,
108+
temperature_scale);
109+
} else if (opacity_model_name == "ep_bremss") {
110+
opacity_model = OpacityModel::epbremss;
111+
opacity = singularity::photons::NonCGSUnits<singularity::photons::EPBremss>(
112+
singularity::photons::EPBremss(), time_scale, mass_scale, length_scale,
113+
temperature_scale);
95114
} else {
96115
// nothing else supported for now
97116
PARTHENON_FAIL("Only none or constant opacity models supported!");
@@ -100,18 +119,25 @@ std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {
100119
pkg->AddParam<>("opacity_h", opacity);
101120

102121
// Scattering opacity model
122+
// TODO(BRR) Remove apm with switch in singularity-opac to cm^2/g opacities?
123+
const Real apm =
124+
pin->GetOrAddReal("mcblock", "apm", 1.); // Average particle mass (code units)
125+
pkg->AddParam<>("apm", apm);
103126
ScatteringModel scattering_model;
104127
Scattering scattering;
105128
std::string scattering_model_name =
106129
pin->GetOrAddString("mcblock", "scattering_model", "none");
107130
if (scattering_model_name == "none") {
108131
scattering_model = ScatteringModel::none;
109-
scattering = singularity::photons::GrayS(0.0, 1.0);
132+
scattering = singularity::photons::NonCGSUnitsS<singularity::photons::GrayS>(
133+
singularity::photons::GrayS(0.0, apm), time_scale, mass_scale, length_scale,
134+
temperature_scale);
110135
} else if (scattering_model_name == "constant") {
111-
// TODO(BRR): parse 2nd argument: average particle mass?
112136
scattering_model = ScatteringModel::constant;
113137
Real kappa_s = pin->GetReal("mcblock", "scattering_constant_value");
114-
scattering = singularity::photons::GrayS(kappa_s, 1.0);
138+
scattering = singularity::photons::NonCGSUnitsS<singularity::photons::GrayS>(
139+
singularity::photons::GrayS(kappa_s, apm), time_scale, mass_scale, length_scale,
140+
temperature_scale);
115141
} else {
116142
PARTHENON_FAIL("Only none or constant scattering models supported!");
117143
}

src/mcblock/mcblock.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace mcblock {
2929

3030
// Model enums
3131
enum class InitialRadiation { none, thermal };
32-
enum class OpacityModel { none, constant };
32+
enum class OpacityModel { none, constant, epbremss };
3333
enum class ScatteringModel { none, constant };
3434

3535
std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin);

src/mcblock/opacity.hpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@
2020
namespace mcblock {
2121

2222
// Reduced absorption variant just for jaybenne
23-
using Opacity = singularity::photons::impl::Variant<singularity::photons::Gray,
24-
singularity::photons::EPBremss>;
23+
using Opacity = singularity::photons::impl::Variant<
24+
singularity::photons::NonCGSUnits<singularity::photons::Gray>,
25+
singularity::photons::NonCGSUnits<singularity::photons::EPBremss>>;
2526

2627
// Reduced scattering variant just for jaybenne
27-
using Scattering = singularity::photons::impl::S_Variant<singularity::photons::GrayS,
28-
singularity::photons::ThomsonS>;
28+
using Scattering = singularity::photons::impl::S_Variant<
29+
singularity::photons::NonCGSUnitsS<singularity::photons::GrayS>,
30+
singularity::photons::NonCGSUnitsS<singularity::photons::ThomsonS>>;
2931

3032
} // namespace mcblock
3133

0 commit comments

Comments
 (0)