GCC Code Coverage Report


ernie/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
20 / 20
100.0%
Branches:
14 / 24
58.3%
Functions:
4 / 4
100.0%

physics/solar.cpp
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 /// @file solar.cpp
3 /// @brief The embedded TSIS-1 solar spectrum.
4 #include "ernie/physics/solar.h"
5
6 #include "ernie/physics/solar_table.h"
7
8 #include <utility>
9 #include <vector>
10
11 namespace ernie {
12
13 4 const Spectrum& SolarSpectralIrradiance() {
14 3 static const Spectrum spectrum = [] {
15 3 std::vector<double> wavelengths;
16 3 std::vector<double> values;
17
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 wavelengths.reserve(solar_table::kCount);
18
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 values.reserve(solar_table::kCount);
19
2/2
✓ Branch 0 taken 9141 times.
✓ Branch 1 taken 3 times.
9144 for (int i = 0; i < solar_table::kCount; ++i) {
20
1/2
✓ Branch 1 taken 9141 times.
✗ Branch 2 not taken.
9141 wavelengths.push_back(solar_table::kPairs[2 * i]);
21
1/2
✓ Branch 1 taken 9141 times.
✗ Branch 2 not taken.
9141 values.push_back(solar_table::kPairs[2 * i + 1]);
22 }
23
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 return Spectrum(std::move(wavelengths), std::move(values));
24
4/6
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 time.
✓ Branch 3 taken 3 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
7 }();
25 4 return spectrum;
26 }
27
28 1 double TotalSolarIrradiance() {
29 1 static const double total = [] {
30 1 const Spectrum& sun = SolarSpectralIrradiance();
31 1 const double low = sun.Wavelengths().front();
32 1 const double high = sun.Wavelengths().back();
33 1 return sun.Average(low, high) * (high - low);
34
3/6
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
1 }();
35 1 return total;
36 }
37
38 } // namespace ernie
39