Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Variable Renewable Electricity Backup with Profitability-Adjusted LCOE (PLCOE) #436

Open
wants to merge 19 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
563dd2f
Convert to PLCOE-based competition (non-functional)
mmowers Dec 11, 2022
82e33fe
Add technology value factor intercept and slope variables for clarity
mmowers Dec 16, 2022
a8ae1aa
Initial implementation of value factor in GCAM. Code changes only in…
mbins Feb 3, 2023
2850cb2
Initial implementation of value factor in GCAM. Data changes only in…
mbins Feb 3, 2023
a3dd830
Update to use parsed-in values for value factor equation, rather than…
mbins Feb 14, 2023
c7b30e7
Removing extra qualification ValueFactorCalculator::getValueFactor
mbins Mar 1, 2023
986ec4a
Removing errant declaration of boost::noncopyable.
mbins Mar 6, 2023
9fd62d0
Separate offshore wind from onshore wind trial market
mmowers Mar 10, 2023
5c98b79
Fix electricity technology value factor calculation
mmowers Mar 17, 2023
8509286
Merge GCAM v6 PLCOE with GCAM v7. Code compiles; gcamdata produces a…
mbins Feb 16, 2024
fb86da1
Fix error related to L2233.Elec_tables_globaltech[cost_SWInterp_Fltr]…
mbins Feb 26, 2024
a607cc4
Update comments for new PLCOE and value factor approach
mmowers Mar 18, 2024
5d47ed4
Bugfix for gcam-usa related to PLCOE setup.
mbins Mar 22, 2024
90602c5
Merge branch 'plcoe_v7' of https://github.com/mmowers/gcam-core into …
mbins Mar 22, 2024
7ffc87d
Change subsector shareweight interpolation rules for wind and solar.
mbins Mar 29, 2024
d13a2e4
Minor C++ code cleanup.
mbins Jun 11, 2024
21021d9
Re-incorporate option for using previous backup-capacity approach to …
mbins Oct 9, 2024
6a6152f
Improve comments in C++ code based on pull request review comments.
mbins Oct 10, 2024
72fda79
Minor C++ updates in response to PR review comments.
mbins Nov 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions cvs/objects/build/vc10/objects.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,7 @@
<ClCompile Include="..\..\sectors\source\subsector_add_techcosts.cpp" />
<ClCompile Include="..\..\sectors\source\supply_sector.cpp" />
<ClCompile Include="..\..\sectors\source\tran_subsector.cpp" />
<ClCompile Include="..\..\sectors\source\value_factor_calculator.cpp" />
<ClCompile Include="..\..\solution\solvers\source\bisect_all.cpp" />
<ClCompile Include="..\..\solution\solvers\source\bisect_one.cpp" />
<ClCompile Include="..\..\solution\solvers\source\bisect_policy.cpp" />
Expand Down Expand Up @@ -681,6 +682,7 @@
<ClCompile Include="..\..\target_finder\source\rcp_forcing_target.cpp" />
<ClCompile Include="..\..\target_finder\source\secanter.cpp" />
<ClCompile Include="..\..\technologies\source\ag_production_technology.cpp" />
<ClCompile Include="..\..\technologies\source\backup_intermittent_technology.cpp" />
<ClCompile Include="..\..\technologies\source\base_technology.cpp" />
<ClCompile Include="..\..\technologies\source\cal_data_output.cpp" />
<ClCompile Include="..\..\technologies\source\cal_data_output_percap.cpp" />
Expand Down Expand Up @@ -923,6 +925,7 @@
<ClInclude Include="..\..\sectors\include\subsector_add_techcosts.h" />
<ClInclude Include="..\..\sectors\include\supply_sector.h" />
<ClInclude Include="..\..\sectors\include\tran_subsector.h" />
<ClInclude Include="..\..\sectors\include\value_factor_calculator.h" />
<ClInclude Include="..\..\solution\solvers\include\bisect_all.h" />
<ClInclude Include="..\..\solution\solvers\include\bisect_one.h" />
<ClInclude Include="..\..\solution\solvers\include\bisect_policy.h" />
Expand Down Expand Up @@ -969,6 +972,7 @@
<ClInclude Include="..\..\target_finder\include\rcp_forcing_target.h" />
<ClInclude Include="..\..\target_finder\include\secanter.h" />
<ClInclude Include="..\..\technologies\include\ag_production_technology.h" />
<ClInclude Include="..\..\technologies\include\backup_intermittent_technology.h" />
<ClInclude Include="..\..\technologies\include\base_technology.h" />
<ClInclude Include="..\..\technologies\include\cal_data_output.h" />
<ClInclude Include="..\..\technologies\include\cal_data_output_percap.h" />
Expand Down
38 changes: 25 additions & 13 deletions cvs/objects/build/vc10/objects.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -269,12 +269,6 @@
<ClCompile Include="..\..\resources\source\unlimited_resource.cpp">
<Filter>Source Files\resources</Filter>
</ClCompile>
<ClCompile Include="..\..\sectors\source\capacity_limit_backup_calculator.cpp">
<Filter>Source Files\sectors</Filter>
</ClCompile>
<ClCompile Include="..\..\sectors\source\CSP_backup_calculator.cpp">
<Filter>Source Files\sectors</Filter>
</ClCompile>
<ClCompile Include="..\..\sectors\source\energy_final_demand.cpp">
<Filter>Source Files\sectors</Filter>
</ClCompile>
Expand Down Expand Up @@ -935,6 +929,18 @@
<ClCompile Include="..\..\resources\source\trial_value_resource.cpp">
<Filter>Source Files\resources</Filter>
</ClCompile>
<ClCompile Include="..\..\sectors\source\value_factor_calculator.cpp">
<Filter>Source Files\sectors</Filter>
</ClCompile>
<ClCompile Include="..\..\sectors\source\capacity_limit_backup_calculator.cpp">
<Filter>Source Files\sectors</Filter>
</ClCompile>
<ClCompile Include="..\..\sectors\source\CSP_backup_calculator.cpp">
<Filter>Source Files\sectors</Filter>
</ClCompile>
<ClCompile Include="..\..\technologies\source\backup_intermittent_technology.cpp">
<Filter>Source Files\technology</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\containers\include\batch_runner.h">
Expand Down Expand Up @@ -1072,12 +1078,6 @@
<ClInclude Include="..\..\sectors\include\afinal_demand.h">
<Filter>Header Files\sectors</Filter>
</ClInclude>
<ClInclude Include="..\..\sectors\include\capacity_limit_backup_calculator.h">
<Filter>Header Files\sectors</Filter>
</ClInclude>
<ClInclude Include="..\..\sectors\include\CSP_backup_calculator.h">
<Filter>Header Files\sectors</Filter>
</ClInclude>
<ClInclude Include="..\..\sectors\include\energy_final_demand.h">
<Filter>Header Files\sectors</Filter>
</ClInclude>
Expand Down Expand Up @@ -1897,5 +1897,17 @@
<ClInclude Include="..\..\technologies\include\output_accounting.h">
<Filter>Header Files\technologies</Filter>
</ClInclude>
<ClInclude Include="..\..\sectors\include\value_factor_calculator.h">
<Filter>Header Files\sectors</Filter>
</ClInclude>
<ClInclude Include="..\..\sectors\include\capacity_limit_backup_calculator.h">
<Filter>Header Files\sectors</Filter>
</ClInclude>
<ClInclude Include="..\..\sectors\include\CSP_backup_calculator.h">
<Filter>Header Files\sectors</Filter>
</ClInclude>
<ClInclude Include="..\..\technologies\include\backup_intermittent_technology.h">
<Filter>Header Files\technologies</Filter>
</ClInclude>
</ItemGroup>
</Project>
</Project>
1 change: 1 addition & 0 deletions cvs/objects/functions/include/non_energy_input.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class Tabs;
*/
class NonEnergyInput: public MiniCAMInput
{
friend class BackupIntermittentTechnology;
friend class IntermittentTechnology;
friend class SolarTechnology;
friend class WindTechnology;
Expand Down
13 changes: 7 additions & 6 deletions cvs/objects/sectors/include/ibackup_calculator.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,17 @@ class Tabs;
// Need to forward declare the subclasses as well.
class CapacityLimitBackupCalculator;
class CSPBackupCalculator;
class ValueFactorCalculator;

/*!
* \ingroup Objects
* \brief Interface which defines methods for calculating an average and
* marginal amount of backup capacity required per unit of output.
* \details Defines an interface to an object which determines the backup
* capacity required for a Sector. The backup capacity is determined
* \brief Interface which defines methods for calculating a value factor or
* backup capacity requirement (average and marginal) per unit of output.
* \details Defines an interface to an object which helps determine the value factor of or
* backup capacity required for a technology. The backup capacity is determined
* per unit of output, but may use trial values to allow computation
* based on the total output. Backup requirements are specific to
* sectors that produce electricity.
* technologies that produce electricity.
* \author Josh Lurz
*/
class IBackupCalculator : public INamed, private boost::noncopyable {
Expand Down Expand Up @@ -152,7 +153,7 @@ class IBackupCalculator : public INamed, private boost::noncopyable {
* hierarchy under introspection.
*/
DEFINE_SUBCLASS_FAMILY( IBackupCalculator, CapacityLimitBackupCalculator,
CSPBackupCalculator )
CSPBackupCalculator, ValueFactorCalculator )
)
};

Expand Down
114 changes: 114 additions & 0 deletions cvs/objects/sectors/include/value_factor_calculator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/*
* LEGAL NOTICE
* This computer software was prepared by Battelle Memorial Institute,
* hereinafter the Contractor, under Contract No. DE-AC05-76RL0 1830
* with the Department of Energy (DOE). NEITHER THE GOVERNMENT NOR THE
* CONTRACTOR MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY
* LIABILITY FOR THE USE OF THIS SOFTWARE. This notice including this
* sentence must appear on any copies of this computer software.
*
* EXPORT CONTROL
* User agrees that the Software will not be shipped, transferred or
* exported into any country or used in any manner prohibited by the
* United States Export Administration Act or any other applicable
* export laws, restrictions or regulations (collectively the "Export Laws").
* Export of the Software may require some form of license or other
* authority from the U.S. Government, and failure to obtain such
* export control license may result in criminal liability under
* U.S. laws. In addition, if the Software is identified as export controlled
* items under the Export Laws, User represents and warrants that User
* is not a citizen, or otherwise located within, an embargoed nation
* (including without limitation Iran, Syria, Sudan, Cuba, and North Korea)
* and that User is not otherwise prohibited
* under the Export Laws from receiving the Software.
*
* Copyright 2011 Battelle Memorial Institute. All Rights Reserved.
* Distributed as open-source under the terms of the Educational Community
* License version 2.0 (ECL 2.0). http://www.opensource.org/licenses/ecl2.php
*
* For further details, see: http://www.globalchange.umd.edu/models/gcam/
*
*/


#ifndef _VALUE_FACTOR_CALCULATOR_H_
#define _VALUE_FACTOR_CALCULATOR_H_
#if defined(_MSC_VER)
#pragma once
#endif

/*!
* \file value_factor_calculator.h
* \ingroup Objects
* \brief The ValueFactorCalculator class header file.
* \author Matthew Binsted, Matt Mowers
*/

#include <string>
#include "sectors/include/ibackup_calculator.h"


// Forward declaration
class IInfo;

/*!
* \ingroup Objects
* \brief Interface which defines methods for calculating value factor
* of a technology depending on its market share.
* \details Defines an interface to an object which determines the value
* factor for a technology. The value factor may use trial values of
* market share. Value factors are specific to electricity sector
* technologies.
* \author Matthew Binsted, Matt Mowers
*/
class ValueFactorCalculator : public IBackupCalculator {
public:
ValueFactorCalculator();
virtual ValueFactorCalculator* clone() const;
static const std::string& getXMLNameStatic();
virtual const std::string& getXMLName() const;
virtual bool isSameType(const std::string& aType) const;
virtual const std::string& getName() const;
virtual void toDebugXML(const int aPeriod, std::ostream& aOut, Tabs* aTabs) const;
virtual void initCalc(const IInfo* aTechInfo);

virtual double getMarginalBackupCapacity(const std::string& aSector,
const std::string& aElectricSector,
const std::string& aResource,
const std::string& aRegion,
const double aTechCapacityFactor,
const double aReserveMargin,
const double aAverageGridCapacityFactor,
const int aPeriod) const;

virtual double getAverageBackupCapacity(const std::string& aSector,
const std::string& aElectricSector,
const std::string& aResource,
const std::string& aRegion,
const double aTechCapacityFactor,
const double aReserveMargin,
const double aAverageGridCapacityFactor,
const int aPeriod) const;

virtual double getValueFactor(const std::string& aSector,
const std::string& aElectricSector,
const std::string& aRegion,
const int aPeriod) const;

protected:

// Define data such that introspection utilities can process the data from this
// subclass together with the data members of the parent classes.
DEFINE_DATA_WITH_PARENT(
IBackupCalculator,

//! Y-inercept of linear function which equates intermittent technology share to value factor
DEFINE_VARIABLE( SIMPLE, "value-factor-intercept", mValueFactorIntercept, double ),

//! Slope of linear function which equates intermittent technology share to value factor
DEFINE_VARIABLE( SIMPLE, "value-factor-slope", mValueFactorSlope, double )

)
};

#endif // _VALUE_FACTOR_CALCULATOR_H_
Loading