Skip to content

Commit

Permalink
Store nfr auto corrections as diffuse auto scaling
Browse files Browse the repository at this point in the history
  • Loading branch information
dirkvdb committed Mar 27, 2023
1 parent e1f9bf3 commit fd48bf1
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 50 deletions.
2 changes: 1 addition & 1 deletion deps/vcpkg
Submodule vcpkg updated 91 files
+0 −1 ports-x64-linux-cluster.txt
+0 −18 ports/eccodes/CONTROL
+0 −73 ports/eccodes/portfile.cmake
+0 −24 ports/eccodes/static-assert.patch
+0 −34 ports/eccodes/static-linking.patch
+6 −2 ports/gdal/CMakeLists.txt
+2 −2 ports/gdal/CONTROL
+2 −2 ports/gdal/portfile.cmake
+10 −9 ports/gdal/xlsx-error.patch
+0 −17 ports/hdf5/CONTROL
+0 −185 ports/hdf5/TryRunResults-mingw.cmake
+0 −6,515 ports/hdf5/gen/H5LTff_gen.F90
+0 −465 ports/hdf5/gen/H5TBff_gen.F90
+0 −979 ports/hdf5/gen/H5Tinit.c
+0 −7,543 ports/hdf5/gen/H5_gen.F90
+0 −48 ports/hdf5/gen/H5f90i_gen.h
+0 −41 ports/hdf5/gen/H5fortran_types.F90
+0 −117 ports/hdf5/gen/H5lib_settings.c
+31 −0 ports/hdf5/hdf5_config.patch
+0 −39 ports/hdf5/libsettings-cross.patch
+0 −21 ports/hdf5/mingw-libname.patch
+0 −28 ports/hdf5/mingw.patch
+11 −0 ports/hdf5/pkgconfig-link-order.patch
+179 −0 ports/hdf5/pkgconfig-requires.patch
+166 −90 ports/hdf5/portfile.cmake
+21 −0 ports/hdf5/szip.patch
+0 −15 ports/hdf5/transitive-mpi.patch
+0 −36 ports/hdf5/transitive-zlib.patch
+16 −0 ports/hdf5/vcpkg-cmake-wrapper.cmake
+66 −0 ports/hdf5/vcpkg.json
+3 −1 ports/libxlsxwriter/portfile.cmake
+12 −0 ports/libxlsxwriter/zlib.patch
+1 −0 ports/maplibregl-native/portfile.cmake
+0 −15 ports/netcdf-c/CONTROL
+0 −25 ports/netcdf-c/TryRunResults-mingw.cmake
+0 −21 ports/netcdf-c/backtrace.patch
+0 −4 ports/netcdf-c/cacheinit.cmake
+0 −4 ports/netcdf-c/cacheinitpar.cmake
+18 −0 ports/netcdf-c/cmakeconfig.patch
+0 −15 ports/netcdf-c/config-pkg-location.patch
+13 −0 ports/netcdf-c/fix-dependency-libmath.patch
+11 −0 ports/netcdf-c/fix-dependency-mpi.patch
+13 −0 ports/netcdf-c/fix-dependency-zlib.patch
+19 −0 ports/netcdf-c/fix-linkage-error.patch
+13 −0 ports/netcdf-c/fix-manpage-msys.patch
+38 −0 ports/netcdf-c/fix-pkgconfig.patch
+0 −285 ports/netcdf-c/hdf5-path-encoding.patch
+0 −47 ports/netcdf-c/hdf5-targets.patch
+0 −28 ports/netcdf-c/libm.patch
+0 −23 ports/netcdf-c/mingw.patch
+0 −19 ports/netcdf-c/nc-config.patch
+6 −5 ports/netcdf-c/no-install-deps.patch
+72 −69 ports/netcdf-c/portfile.cmake
+0 −13 ports/netcdf-c/transitive-hdf5.patch
+49 −59 ports/netcdf-c/use_targets.patch
+103 −0 ports/netcdf-c/vcpkg.json
+0 −4 ports/netcdf-fortran/CONTROL
+4 −4 ports/netcdf-fortran/portfile.cmake
+8 −0 ports/netcdf-fortran/vcpkg.json
+82 −0 ports/pkgconf/portfile.cmake
+15 −0 ports/pkgconf/vcpkg.json
+4 −2 ports/qt6/portfile.cmake
+13 −0 ports/qt6/qt_debug.conf
+13 −0 ports/qt6/qt_release.conf
+0 −5 ports/qwt/CONTROL
+187 −0 ports/qwt/config.patch
+0 −13 ports/qwt/fix-dynamic-static.patch
+28 −0 ports/qwt/fix_dll_install.patch
+24 −59 ports/qwt/portfile.cmake
+16 −0 ports/qwt/vcpkg.json
+47 −0 ports/szip/fix-linkage-config.patch
+30 −0 ports/szip/mingw-lib-names.patch
+80 −0 ports/szip/portfile.cmake
+16 −0 ports/szip/szip.pc.in
+18 −0 ports/szip/vcpkg.json
+1 −0 ports/vcpkg-cmake/vcpkg_cmake_configure.cmake
+10 −0 ports/vcpkg-qmake/portfile.cmake
+7 −0 ports/vcpkg-qmake/vcpkg-port-config.cmake
+21 −0 ports/vcpkg-qmake/vcpkg.json
+72 −0 ports/vcpkg-qmake/vcpkg_qmake_build.cmake
+160 −0 ports/vcpkg-qmake/vcpkg_qmake_configure.cmake
+46 −0 ports/vcpkg-qmake/vcpkg_qmake_install.cmake
+28 −0 ports/vcpkg-qmake/z_vcpkg_qmake_fix_makefiles.cmake
+3 −3 ports/vcpkg-tool-meson/portfile.cmake
+2 −2 scripts/cmake/vcpkg_acquire_msys.cmake
+1 −1 scripts/cmake/vcpkg_configure_cmake.cmake
+89 −68 scripts/toolchains/windows.cmake
+27 −27 scripts/vcpkgTools.xml
+66 −0 triplets/toolchain-linux-intel.cmake
+7 −0 triplets/x64-linux-inteloneapi.cmake
+8 −0 triplets/x64-windows-static-intel.cmake
49 changes: 31 additions & 18 deletions logic/emissioninventory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,19 +193,19 @@ static void validate_pm10_pm25(const EmissionInventoryEntry& pm10, const Emissio

{
// validate the point emissions, perform validation after the autoscaling, do not take user scalings into account
auto pm10AutoScale = pm10.point_auto_scaling_factor();
auto pm25AutoScale = pm25.point_auto_scaling_factor();
const auto pm10AutoScale = pm10.point_auto_scaling_factor();
const auto pm25AutoScale = pm25.point_auto_scaling_factor();

auto pm10UserScale = pm10.point_user_scaling_factor();
auto pm25UserScale = pm25.point_user_scaling_factor();
const auto pm10UserScale = pm10.point_user_scaling_factor();
const auto pm25UserScale = pm25.point_user_scaling_factor();

zip_point_emissions(pm10.point_emissions(), pm25.point_emissions(), [diffThreshold, pm10AutoScale, pm25AutoScale, pm10UserScale, pm25UserScale](const EmissionEntry& pm10, const EmissionEntry& pm25) {
const auto pm10AutoScaled = pm10.value().amount().value() * pm10AutoScale;
const auto pm25AutoScaled = pm25.value().amount().value() * pm25AutoScale;
if (pm10AutoScaled < pm25AutoScaled) {
const auto diff = pm25AutoScaled - pm10AutoScaled;
if (diff > diffThreshold) {
throw RuntimeError("Invalid PM point data for {} (PM10: {} (auto scale = {}), PM2.5 {} (auto scale = {}))", pm10.id(), *pm10.value().amount(), pm10AutoScale, *pm25.value().amount(), pm25AutoScale);
throw RuntimeError("Invalid PM point data for {} (PM10: {:f} (auto scale = {:f}), PM2.5 {:f} (auto scale = {:f}))", pm10.id(), *pm10.value().amount(), pm10AutoScale, *pm25.value().amount(), pm25AutoScale);
}
}

Expand All @@ -214,29 +214,40 @@ static void validate_pm10_pm25(const EmissionInventoryEntry& pm10, const Emissio
if (pm10UserScaled < pm25UserScaled) {
const auto diff = pm25UserScaled - pm10UserScaled;
if (diff > diffThreshold) {
throw RuntimeError("Invalid PM point data for {} after user scaling (PM10: {} (auto scale = {} user scale = {}), PM2.5 {} (auto scale = {} user scale = {}))", pm10.id(), *pm10.value().amount(), pm10AutoScale, pm10UserScale, *pm25.value().amount(), pm25AutoScale, pm25UserScale);
throw RuntimeError("Invalid PM point data for {} after user scaling (PM10: {:f} (auto scale = {:f} user scale = {:f}), PM2.5 {:f} (auto scale = {:f} user scale = {:f}))", pm10.id(), *pm10.value().amount(), pm10AutoScale, pm10UserScale, *pm25.value().amount(), pm25AutoScale, pm25UserScale);
}
}
});
}

{
// validate the diffuse emissions, do not take user scalings into account
auto pm10Diffuse = pm10.diffuse_emissions();
auto pm25Diffuse = pm25.diffuse_emissions();
const auto pm10AutoScale = pm10.diffuse_auto_scaling_factor();
const auto pm25AutoScale = pm25.diffuse_auto_scaling_factor();

const auto pm10UserScale = pm10.diffuse_user_scaling_factor();
const auto pm25UserScale = pm25.diffuse_user_scaling_factor();

const auto pm10Diffuse = pm10.diffuse_emissions() * pm10AutoScale;
const auto pm25Diffuse = pm25.diffuse_emissions() * pm25AutoScale;

bool autoScaledValueValid = true;
if (pm10Diffuse < pm25Diffuse) {
if (pm25Diffuse - pm10Diffuse > diffThreshold) {
throw RuntimeError("Invalid PM diffuse data for {} (PM10: {}, PM2.5 {})", pm10.id(), pm10Diffuse, pm25Diffuse);
autoScaledValueValid = false;
Log::warn("Invalid PM diffuse data for {} (PM10: {}, PM2.5 {})", pm10.id(), pm10Diffuse, pm25Diffuse);
}
}

const auto pm10UserScaled = pm10Diffuse * pm10.diffuse_scaling_factor();
const auto pm25UserScaled = pm25Diffuse * pm25.diffuse_scaling_factor();
const auto pm10UserScaled = pm10Diffuse * pm10UserScale;
const auto pm25UserScaled = pm25Diffuse * pm25UserScale;

if (pm10UserScaled < pm25UserScaled) {
if (pm25UserScaled - pm10UserScaled > diffThreshold) {
throw RuntimeError("Invalid PM diffuse data after user scaling for {} (PM10: {} (user scale = {}), PM2.5 {} (user scale = {}))", pm10.id(), pm10Diffuse, pm10.diffuse_scaling_factor(), pm25Diffuse, pm25.diffuse_scaling_factor());
if (autoScaledValueValid) {
// Invalid value is caused by the user scaling
throw RuntimeError("Invalid PM diffuse data after user scaling for {} (PM10: {} (auto scale = {} user scale = {}), PM2.5 {} (auto scale = {} user scale = {}))", pm10.id(), pm10Diffuse, pm10AutoScale, pm10UserScale, pm25Diffuse, pm25AutoScale, pm25UserScale);
}
}
}
}
Expand Down Expand Up @@ -313,9 +324,10 @@ static EmissionInventory create_emission_inventory_impl(const SingleEmissions& t
for (const auto& em : totalEmissionsNfr) {
assert(em.sector().type() == EmissionSector::Type::Nfr);

double diffuseEmission = em.value().amount().value_or(0.0);
double pointEmissionSum = 0.0;
double pointEmissionAutoScale = 1.0;
double diffuseEmission = em.value().amount().value_or(0.0);
double diffuseEmissionAutoScale = 1.0;
double pointEmissionSum = 0.0;
double pointEmissionAutoScale = 1.0;
std::vector<EmissionEntry> pointSourceEntries;

if (em.country().is_belgium()) {
Expand Down Expand Up @@ -360,15 +372,16 @@ static EmissionInventory create_emission_inventory_impl(const SingleEmissions& t
diffuseEmission = 0.0;
}

diffuseEmission *= find_in_map_optional(correctionRatios, convert_emission_id_to_gnfr_level(em.id())).value_or(1.0);
diffuseEmissionAutoScale = find_in_map_optional(correctionRatios, convert_emission_id_to_gnfr_level(em.id())).value_or(1.0);
}

diffuseEmission = std::max(0.0, diffuseEmission - (pointEmissionSum * pointEmissionAutoScale));

EmissionInventoryEntry entry(em.id(), diffuseEmission, std::move(pointSourceEntries));
entry.set_diffuse_scaling(scalings.diffuse_scaling_for_id(em.id(), result.year()).value_or(1.0));
entry.set_point_user_scaling(scalings.point_scaling_for_id(em.id(), result.year()).value_or(1.0));
entry.set_diffuse_auto_scaling(diffuseEmissionAutoScale);
entry.set_diffuse_user_scaling(scalings.diffuse_scaling_for_id(em.id(), result.year()).value_or(1.0));
entry.set_point_auto_scaling(pointEmissionAutoScale);
entry.set_point_user_scaling(scalings.point_scaling_for_id(em.id(), result.year()).value_or(1.0));
entries.push_back(entry);
}

Expand Down
10 changes: 7 additions & 3 deletions logic/emissionvalidation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,13 @@ std::vector<EmissionValidation::SummaryEntry> EmissionValidation::create_summary
for (auto& pol : includedPollutants) {
const auto path = _cfg.output_path() / fmt::format("{}_OPS_{}{}.brn", pol.code(), static_cast<int>(_cfg.year()), _cfg.output_filename_suffix());
try {
const auto brnEntries = read_brn_output(path);
BrnAnalyzer analyzer(brnEntries);
brnTotals.emplace(pol, analyzer.create_totals());
if (fs::exists(path)) {
const auto brnEntries = read_brn_output(path);
BrnAnalyzer analyzer(brnEntries);
brnTotals.emplace(pol, analyzer.create_totals());
} else {
brnTotals.emplace(pol, std::unordered_map<CountrySector, double>());
}
} catch (const std::exception& e) {
throw RuntimeError("Error parsing brn {}: ({})", path, e.what());
}
Expand Down
27 changes: 19 additions & 8 deletions logic/include/emap/emissioninventory.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class EmissionInventoryEntry

double scaled_diffuse_emissions_sum() const noexcept
{
return _diffuseEmission * _diffuseScaling;
return _diffuseEmission * _diffuseUserScaling * _diffuseAutoScaling;
}

double scaled_point_emissions_sum() const noexcept
Expand All @@ -94,9 +94,14 @@ class EmissionInventoryEntry
_pointUserScaling = factor;
}

void set_diffuse_scaling(double factor) noexcept
void set_diffuse_auto_scaling(double factor) noexcept
{
_diffuseScaling = factor;
_diffuseAutoScaling = factor;
}

void set_diffuse_user_scaling(double factor) noexcept
{
_diffuseUserScaling = factor;
}

double point_auto_scaling_factor() const noexcept
Expand All @@ -109,18 +114,24 @@ class EmissionInventoryEntry
return _pointUserScaling;
}

double diffuse_scaling_factor() const noexcept
double diffuse_auto_scaling_factor() const noexcept
{
return _diffuseAutoScaling;
}

double diffuse_user_scaling_factor() const noexcept
{
return _diffuseScaling;
return _diffuseUserScaling;
}

private:
EmissionIdentifier _id;
double _diffuseEmission = 0.0;
std::vector<EmissionEntry> _pointEmissionEntries;
double _pointAutoScaling = 1.0; // Automatic correction of the point sources when they exceed the total emission
double _pointUserScaling = 1.0; // User defined scaling of the point sources
double _diffuseScaling = 1.0;
double _pointAutoScaling = 1.0; // Automatic correction of the point sources when they exceed the total emission
double _pointUserScaling = 1.0; // User defined scaling of the point sources
double _diffuseAutoScaling = 1.0;
double _diffuseUserScaling = 1.0;
};

template <typename TEmission>
Expand Down
8 changes: 4 additions & 4 deletions logic/modelrun.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,9 +228,9 @@ static void spread_emissions(const EmissionInventory& emissionInv, const Spatial
const auto spatPatInfo = apply_emission_to_spatial_pattern(spatialPattern, emissionToSpread, gridData.meta, cellCoverageInfo);
if (isCoursestGrid) {
if (spatPatInfo.status == SpatialPatternProcessInfo::Status::FallbackToUniformSpread) {
summary.add_spatial_pattern_source_without_data(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, emission->scaled_point_emissions_sum(), emission->diffuse_scaling_factor(), emission->point_user_scaling_factor(), emission->point_auto_scaling_factor());
summary.add_spatial_pattern_source_without_data(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, *emission);
} else {
summary.add_spatial_pattern_source(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, emission->scaled_point_emissions_sum(), emission->diffuse_scaling_factor(), emission->point_user_scaling_factor(), emission->point_auto_scaling_factor());
summary.add_spatial_pattern_source(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, *emission);
}
}

Expand Down Expand Up @@ -317,9 +317,9 @@ static void spread_emissions(const EmissionInventory& emissionInv, const Spatial

if (spatialPattern.source.patternAvailableButWithoutData) {
Log::debug("No spatial pattern information available for {}: falling back to uniform spread", emissionId);
summary.add_spatial_pattern_source_without_data(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, emission->scaled_point_emissions_sum(), emission->diffuse_scaling_factor(), emission->point_user_scaling_factor(), emission->point_auto_scaling_factor());
summary.add_spatial_pattern_source_without_data(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, *emission);
} else {
summary.add_spatial_pattern_source(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, emission->scaled_point_emissions_sum(), emission->diffuse_scaling_factor(), emission->point_user_scaling_factor(), emission->point_auto_scaling_factor());
summary.add_spatial_pattern_source(spatialPattern.source, spatPatInfo.diffuseEmissions, spatPatInfo.emissionsWithinOutput, *emission);
}

if (validator) {
Expand Down
31 changes: 18 additions & 13 deletions logic/runsummary.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "runsummary.h"
#include "emap/emissioninventory.h"

#include "enuminfo.h"
#include "infra/cast.h"
Expand All @@ -25,31 +26,33 @@ RunSummary::RunSummary(const RunConfiguration& cfg)
{
}

void RunSummary::add_spatial_pattern_source(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, double scaledPointEmissions, double diffuseScale, double pointScaleUser, double pointScaleAuto)
void RunSummary::add_spatial_pattern_source(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, const EmissionInventoryEntry& emission)
{
SpatialPatternSummaryInfo info;
info.source = source;
info.scaledDiffuseEmissions = scaledDiffuseEmissions;
info.scaledDiffuseEmissionsWithinGrid = scaledDiffuseEmissionsWithinGrid;
info.scaledPointEmissions = scaledPointEmissions;
info.diffuseScaling = diffuseScale;
info.pointScalingUser = pointScaleUser;
info.pointScalingAuto = pointScaleAuto;
info.scaledPointEmissions = emission.scaled_point_emissions_sum();
info.diffuseScalingUser = emission.diffuse_user_scaling_factor();
info.diffuseScalingAuto = emission.diffuse_auto_scaling_factor();
info.pointScalingUser = emission.point_user_scaling_factor();
info.pointScalingAuto = emission.point_auto_scaling_factor();

std::scoped_lock lock(_mutex);
_spatialPatterns.push_back(info);
}

void RunSummary::add_spatial_pattern_source_without_data(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, double scaledPointEmissions, double diffuseScale, double pointScaleUser, double pointScaleAuto)
void RunSummary::add_spatial_pattern_source_without_data(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, const EmissionInventoryEntry& emission)
{
SpatialPatternSummaryInfo info;
info.source = source;
info.scaledDiffuseEmissions = scaledDiffuseEmissions;
info.scaledDiffuseEmissionsWithinGrid = scaledDiffuseEmissionsWithinGrid;
info.scaledPointEmissions = scaledPointEmissions;
info.diffuseScaling = diffuseScale;
info.pointScalingUser = pointScaleUser;
info.pointScalingAuto = pointScaleAuto;
info.scaledPointEmissions = emission.scaled_point_emissions_sum();
info.diffuseScalingUser = emission.diffuse_user_scaling_factor();
info.diffuseScalingAuto = emission.diffuse_auto_scaling_factor();
info.pointScalingUser = emission.point_user_scaling_factor();
info.pointScalingAuto = emission.point_auto_scaling_factor();

std::scoped_lock lock(_mutex);
_spatialPatternsWithoutData.push_back(info);
Expand Down Expand Up @@ -106,7 +109,7 @@ static std::string spatial_pattern_source_type_to_string(SpatialPatternSource::T

void RunSummary::sources_to_spreadsheet(lxw_workbook* wb, const std::string& tabName, std::span<const SpatialPatternSummaryInfo> sources, std::span<const SpatialPatternSummaryInfo> sourcesWithoutData) const
{
const std::array<ColumnInfo, 17> headers = {
const std::array<ColumnInfo, 18> headers = {
ColumnInfo{"Country", 15.0},
ColumnInfo{"Sector", 15.0},
ColumnInfo{"GNFR", 15.0},
Expand All @@ -117,7 +120,8 @@ void RunSummary::sources_to_spreadsheet(lxw_workbook* wb, const std::string& tab
ColumnInfo{"Uniform spread fallback", 25.0},
ColumnInfo{"From exceptions", 25.0},
ColumnInfo{"Year", 15.0},
ColumnInfo{"Diffuse scaling", 15.0},
ColumnInfo{"Diffuse scaling user", 15.0},
ColumnInfo{"Diffuse scaling auto", 15.0},
ColumnInfo{"Point scaling user", 15.0},
ColumnInfo{"Point scaling auto", 15.0},
ColumnInfo{"Path", 125.0},
Expand Down Expand Up @@ -170,7 +174,8 @@ void RunSummary::sources_to_spreadsheet(lxw_workbook* wb, const std::string& tab
} else {
++index;
}
worksheet_write_number(ws, row, index++, info.diffuseScaling, formatNumber);
worksheet_write_number(ws, row, index++, info.diffuseScalingUser, formatNumber);
worksheet_write_number(ws, row, index++, info.diffuseScalingAuto, formatNumber);
worksheet_write_number(ws, row, index++, info.pointScalingUser, formatNumber);
worksheet_write_number(ws, row, index++, info.pointScalingAuto, formatNumber);
worksheet_write_string(ws, row, index++, str::from_u8(info.source.path.generic_u8string()).c_str(), nullptr);
Expand Down
9 changes: 6 additions & 3 deletions logic/runsummary.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ struct lxw_workbook;

namespace emap {

class EmissionInventoryEntry;

class RunSummary
{
public:
RunSummary() = default;
RunSummary(const RunConfiguration& cfg);

void add_spatial_pattern_source(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, double scaledPointEmissions, double diffuseScale, double pointScaleUser, double pointScaleAuto);
void add_spatial_pattern_source_without_data(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, double scaledPointEmissions, double diffuseScale, double pointScaleUser, double pointScaleAuto);
void add_spatial_pattern_source(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, const EmissionInventoryEntry& emission);
void add_spatial_pattern_source_without_data(const SpatialPatternSource& source, double scaledDiffuseEmissions, double scaledDiffuseEmissionsWithinGrid, const EmissionInventoryEntry& emission);
void add_point_source(const fs::path& pointSource);
void add_totals_source(const fs::path& totalsSource);

Expand Down Expand Up @@ -59,7 +61,8 @@ class RunSummary
double scaledDiffuseEmissions = 0.0;
double scaledDiffuseEmissionsWithinGrid = 0.0;
double scaledPointEmissions = 0.0;
double diffuseScaling = 1.0;
double diffuseScalingUser = 1.0;
double diffuseScalingAuto = 1.0;
double pointScalingUser = 1.0;
double pointScalingAuto = 1.0;
};
Expand Down

0 comments on commit fd48bf1

Please sign in to comment.