Merge(PR/10): Merged PR 10 changes
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
|
||||||
const unsigned char StandardAbundances[] = {
|
const unsigned char StandardMetalFractions[] = {
|
||||||
0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x20, 0x5b, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61,
|
0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x20, 0x5b, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61,
|
||||||
0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x69, 0x73, 0x6f, 0x74, 0x6f, 0x70,
|
0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x69, 0x73, 0x6f, 0x74, 0x6f, 0x70,
|
||||||
0x69, 0x63, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5d, 0x0a, 0x43,
|
0x69, 0x63, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5d, 0x0a, 0x43,
|
||||||
@@ -1458,4 +1458,4 @@ const unsigned char StandardAbundances[] = {
|
|||||||
0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x0a,
|
0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x0a,
|
||||||
};
|
};
|
||||||
|
|
||||||
const size_t StandardAbundances_len = sizeof(StandardAbundances);
|
const size_t StandardMetalFractions_len = sizeof(StandardMetalFractions);
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "fourdst/composition/io/standard_compositions.h"
|
#include "fourdst/composition/io/standard_compositions.h"
|
||||||
#include "fourdst/composition/io/StandardAbundancesBinary.h"
|
#include "fourdst/composition/io/StandardMetalFractionsBinary.h"
|
||||||
|
|
||||||
#include "fourdst/composition/composition.h"
|
#include "fourdst/composition/composition.h"
|
||||||
#include "fourdst/atomic/atomicSpecies.h"
|
#include "fourdst/atomic/atomicSpecies.h"
|
||||||
@@ -252,13 +252,13 @@ namespace fourdst::composition {
|
|||||||
std::vector<char> data;
|
std::vector<char> data;
|
||||||
|
|
||||||
io::ChemicalFileParser parser;
|
io::ChemicalFileParser parser;
|
||||||
io::CompositionData compositions;
|
io::CompositionData metals;
|
||||||
|
|
||||||
io::IsotopicPercentage isotopes;
|
io::IsotopicPercentage isotopes;
|
||||||
|
|
||||||
data = std::ranges::to<std::vector<char>>(StandardAbundances);
|
data = std::ranges::to<std::vector<char>>(StandardMetalFractions);
|
||||||
|
|
||||||
compositions = parser.parse_compositon_data(data,metal_fraction_scheme);
|
metals = parser.parse_compositon_data(data,metal_fraction_scheme);
|
||||||
isotopes = parser.parse_isotopic_percentage(data,isotopic_percentage_scheme);
|
isotopes = parser.parse_isotopic_percentage(data,isotopic_percentage_scheme);
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
@@ -267,7 +267,7 @@ namespace fourdst::composition {
|
|||||||
|
|
||||||
// construct name of the isotopes for all elements
|
// construct name of the isotopes for all elements
|
||||||
for (const auto [E,A] : std::ranges::views::zip(isotopes.elements, isotopes.mass_numbers)){
|
for (const auto [E,A] : std::ranges::views::zip(isotopes.elements, isotopes.mass_numbers)){
|
||||||
if (std::ranges::contains(compositions.elements,E)) {
|
if (std::ranges::contains(metals.elements,E ) || E == "H" || E == "He") {
|
||||||
name = std::format("{}-{}",E,A);
|
name = std::format("{}-{}",E,A);
|
||||||
auto SpeciesObject = atomic::species.at(name);
|
auto SpeciesObject = atomic::species.at(name);
|
||||||
species.push_back(SpeciesObject);
|
species.push_back(SpeciesObject);
|
||||||
@@ -297,7 +297,7 @@ namespace fourdst::composition {
|
|||||||
|
|
||||||
// multiply by atomic weight if needed
|
// multiply by atomic weight if needed
|
||||||
|
|
||||||
if (compositions.requires_atomic_weight){
|
if (metals.requires_atomic_weight){
|
||||||
// get isotope with max abundance for each metal
|
// get isotope with max abundance for each metal
|
||||||
// and store the corresponding mass number
|
// and store the corresponding mass number
|
||||||
auto element_atomic_weight = [&isotopes]() {
|
auto element_atomic_weight = [&isotopes]() {
|
||||||
@@ -316,7 +316,7 @@ namespace fourdst::composition {
|
|||||||
return elem_info;
|
return elem_info;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
for (const auto [E,A] : std::ranges::views::zip(compositions.elements, compositions.abundances)) {
|
for (const auto [E,A] : std::ranges::views::zip(metals.elements, metals.abundances)) {
|
||||||
// std::println("element: {}", E);
|
// std::println("element: {}", E);
|
||||||
auto name = std::format("{}-{}",E,element_atomic_weight.at(E).second);
|
auto name = std::format("{}-{}",E,element_atomic_weight.at(E).second);
|
||||||
// std::println("{}", name);
|
// std::println("{}", name);
|
||||||
@@ -326,7 +326,7 @@ namespace fourdst::composition {
|
|||||||
// std::println("End");
|
// std::println("End");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (const auto [E,A] : std::ranges::views::zip(compositions.elements, compositions.abundances)) {
|
for (const auto [E,A] : std::ranges::views::zip(metals.elements, metals.abundances)) {
|
||||||
metal_fractions.emplace(E,A);
|
metal_fractions.emplace(E,A);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ required_headers = [
|
|||||||
'fourdst/composition/composition_abstract.h',
|
'fourdst/composition/composition_abstract.h',
|
||||||
'fourdst/composition/exceptions/exceptions_composition.h',
|
'fourdst/composition/exceptions/exceptions_composition.h',
|
||||||
'fourdst/composition/io/standard_compositions.h',
|
'fourdst/composition/io/standard_compositions.h',
|
||||||
'fourdst/composition/io/StandardAbundancesBinary.h'
|
'fourdst/composition/io/StandardMetalFractionsBinary.h'
|
||||||
]
|
]
|
||||||
|
|
||||||
foreach h : required_headers
|
foreach h : required_headers
|
||||||
@@ -65,7 +65,7 @@ install_headers(composition_headers_utils, subdir : 'fourdst/composition/utils')
|
|||||||
|
|
||||||
composition_headers_io = files(
|
composition_headers_io = files(
|
||||||
'include/fourdst/composition/io/standard_compositions.h',
|
'include/fourdst/composition/io/standard_compositions.h',
|
||||||
'include/fourdst/composition/io/StandardAbundancesBinary.h'
|
'include/fourdst/composition/io/StandardMetalFractionsBinary.h'
|
||||||
)
|
)
|
||||||
|
|
||||||
install_headers(composition_headers_io, subdir : 'fourdst/composition/io')
|
install_headers(composition_headers_io, subdir : 'fourdst/composition/io')
|
||||||
|
|||||||
@@ -1,21 +1,12 @@
|
|||||||
#include "fourdst/composition/io/standard_compositions.h"
|
#include "fourdst/composition/io/standard_compositions.h"
|
||||||
#include "fourdst/composition/io/StandardAbundancesBinary.h"
|
|
||||||
|
|
||||||
#include "fourdst/composition/composition.h"
|
#include "fourdst/composition/composition.h"
|
||||||
#include "fourdst/atomic/atomicSpecies.h"
|
|
||||||
#include "fourdst/atomic/species.h"
|
#include "fourdst/atomic/species.h"
|
||||||
#include "../../../src/composition/include/fourdst/composition/utils/utils.h"
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
|
||||||
#include <fstream>
|
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
#include <stdexcept>
|
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <print>
|
|
||||||
#include <ranges>
|
#include <ranges>
|
||||||
#include <algorithm>
|
|
||||||
#include "CLI/CLI.hpp"
|
#include "CLI/CLI.hpp"
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
@@ -32,7 +23,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
CLI::App app("Example App To Load Solar Composition");
|
CLI::App app("Example App To Load Solar Composition");
|
||||||
app.add_option("-z,--initial_z", initial_z, "Initial Z")->required();
|
app.add_option("-z,--initial_z", initial_z, "Initial Z")->required();
|
||||||
app.add_option("-c,--solar-composition", metal_fraction_scheme)->
|
app.add_option("-c,--metal-fraction-scheme", metal_fraction_scheme)->
|
||||||
check(
|
check(
|
||||||
CLI::IsMember(
|
CLI::IsMember(
|
||||||
keys,
|
keys,
|
||||||
@@ -46,7 +37,6 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
// the following four should be user input
|
// the following four should be user input
|
||||||
// initial_y can be optional
|
// initial_y can be optional
|
||||||
// initial_z = 0.02;
|
|
||||||
initial_y = 0.24 + 2*initial_z;
|
initial_y = 0.24 + 2*initial_z;
|
||||||
isotopic_percentage_scheme = "L03_data";
|
isotopic_percentage_scheme = "L03_data";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user