forked from celeritas-project/celeritas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MaterialTestBase.hh
93 lines (84 loc) · 3.25 KB
/
MaterialTestBase.hh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//----------------------------------*-C++-*----------------------------------//
// Copyright 2023-2024 UT-Battelle, LLC, and other Celeritas developers.
// See the top-level COPYRIGHT file for details.
// SPDX-License-Identifier: (Apache-2.0 OR MIT)
//---------------------------------------------------------------------------//
//! \file celeritas/mat/MaterialTestBase.hh
//---------------------------------------------------------------------------//
#include "celeritas/Quantities.hh"
#include "celeritas/mat/MaterialParams.hh"
#include "celeritas_test.hh"
namespace celeritas
{
namespace test
{
//---------------------------------------------------------------------------//
class MaterialTestBase
{
protected:
using SPConstMaterial = std::shared_ptr<MaterialParams const>;
SPConstMaterial build_material()
{
using namespace celeritas::units;
MaterialParams::Input inp;
// Using nuclear masses provided by Geant4 11.0.3
inp.isotopes = {
// H
{AtomicNumber{1}, AtomicNumber{1}, MevMass{938.272}, "1H"},
{AtomicNumber{1}, AtomicNumber{2}, MevMass{1875.61}, "2H"},
// Al
{AtomicNumber{13}, AtomicNumber{27}, MevMass{25126.5}, "27Al"},
{AtomicNumber{13}, AtomicNumber{28}, MevMass{26058.3}, "28Al"},
// Na
{AtomicNumber{11}, AtomicNumber{23}, MevMass{21409.2}, "23Na"},
// I
{AtomicNumber{53}, AtomicNumber{125}, MevMass{116321}, "125I"},
{AtomicNumber{53}, AtomicNumber{126}, MevMass{117253}, "126I"},
{AtomicNumber{53}, AtomicNumber{127}, MevMass{118184}, "127I"}};
inp.elements = {
// H
{AtomicNumber{1},
AmuMass{1.008},
{{IsotopeId{0}, 0.9}, {IsotopeId{1}, 0.1}},
"H"},
// Al
{AtomicNumber{13},
AmuMass{26.9815385},
{{IsotopeId{2}, 0.7}, {IsotopeId{3}, 0.3}},
"Al"},
// Na
{AtomicNumber{11}, AmuMass{22.98976928}, {{IsotopeId{4}, 1}}, "Na"},
// I
{AtomicNumber{53},
AmuMass{126.90447},
{{IsotopeId{5}, 0.05}, {IsotopeId{6}, 0.15}, {IsotopeId{7}, 0.8}},
"I"},
};
inp.materials = {
// Sodium iodide
{native_value_from(InvCcDensity{2.948915064677e+22}),
293.0,
MatterState::solid,
{{ElementId{2}, 0.5}, {ElementId{3}, 0.5}},
"NaI"},
// Void
{0, 0, MatterState::unspecified, {}, "hard vacuum"},
// Diatomic hydrogen
{native_value_from(InvCcDensity{1.0739484359044669e+20}),
100.0,
MatterState::gas,
{{ElementId{0}, 1.0}},
Label{"H2", "1"}},
// Diatomic hydrogen with the same name and different properties
{native_value_from(InvCcDensity{1.072e+20}),
110.0,
MatterState::gas,
{{ElementId{0}, 1.0}},
Label{"H2", "2"}},
};
return std::make_shared<MaterialParams const>(std::move(inp));
}
};
//---------------------------------------------------------------------------//
} // namespace test
} // namespace celeritas