text: #ifndef _RENEWABLE_SUBRESOURCE_H_
  #define _RENEWABLE_SUBRESOURCE_H_
  #if defined(_MSC_VER)
  #pragma once
  #endif
  
  /*
  * 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/
  *
  */
  
  
  
  /*! 
  * \file renewable_subresource.h
  * \ingroup Objects
  * \brief The SubRenewableResource class header file.
  * \author Sonny Kim
  */
  #include <xercesc/dom/DOMNode.hpp>
  #include "resources/include/subresource.h"
  
  // Forward declarations.
  class Grade;
  class SubResource;
  class Tabs;
  class IInfo;
  
  /*! 
  * \ingroup Objects
  * \brief A class which defines a SubRenewableResource object, which is a container for multiple grade objects.
  * \author Steve Smith
  * \date $ Date $
  * \version $ Revision $
  */
  class SubRenewableResource: public SubResource {
      friend class CalibrateResourceVisitor;
  public:
      SubRenewableResource();
      virtual ~SubRenewableResource();
      //! Return the XML tag name
      static const std::string& getXMLNameStatic( void );
      virtual void completeInit( const std::string& aRegionName, const std::string& aResourceName,
                                 const IInfo* aSectorInfo );
      virtual void cumulsupply( const std::string& aRegionName, const std::string& aResourceName,
                                double aPrice, int aPeriod );
      virtual void annualsupply( const std::string& aRegionName, const std::string& aResourceName,
                                 int aPeriod, const GDP* aGdp, double aPrice );
      virtual double getVariance() const;
      virtual double getMaxAnnualSubResource( const int aPeriod ) const;
      virtual void accept( IVisitor* aVisitor, const int aPeriod ) const;
      virtual double getLowestPrice( 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(
          SubResource,
  
          //! The maximum achievable resource production at a price of infinity.
          //! This value may change by model period and is the max prior to any GDP
          //! based supply expansion.
          DEFINE_VARIABLE( ARRAY, "maxSubResource", mMaxAnnualSubResource, objects::PeriodVector<double> ),
  
          //! elasticity on GDP growth that controls expansion of the max subresource.
          DEFINE_VARIABLE( SIMPLE, "gdpSupplyElast", mGdpSupplyElasticity, double ),
  
          //! subresource variance now read in rather than computed
          DEFINE_VARIABLE( SIMPLE, "subResourceVariance", mSubResourceVariance, double ),
  
          //! read in average capacity factor for each subresource
          DEFINE_VARIABLE( SIMPLE, "subResourceCapacityFactor", mSubResourceCapacityFactor, double )
      )
  
      virtual const std::string& getXMLName() const;
      virtual bool XMLDerivedClassParse( const std::string& nodeName, const xercesc::DOMNode* node );
  };
  #endif // _RENEWABLE_SUBRESOURCE_H_
  