OpenStudioCore:model
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Protected Types | Protected Member Functions | Related Functions | List of all members
openstudio::model::ModelObject Class Reference

#include <ModelObject.hpp>

Inherits openstudio::WorkspaceObject.

Inherited by openstudio::model::AvailabilityManager, openstudio::model::BuildingStory, openstudio::model::BuildingUnit, openstudio::model::ClimateZones, openstudio::model::CoilHeatingGasMultiStageStageData, openstudio::model::CoilWaterHeatingAirToWaterHeatPumpWrapped, openstudio::model::ComponentData, openstudio::model::Connection, openstudio::model::ControllerMechanicalVentilation, openstudio::model::ConvergenceLimits, openstudio::model::CoolingTowerPerformanceCoolTools, openstudio::model::CoolingTowerPerformanceYorkCalc, openstudio::model::DaylightingDeviceShelf, openstudio::model::DesignSpecificationZoneAirDistribution, openstudio::model::EnergyManagementSystemActuator, openstudio::model::EnergyManagementSystemConstructionIndexVariable, openstudio::model::EnergyManagementSystemCurveOrTableIndexVariable, openstudio::model::EnergyManagementSystemGlobalVariable, openstudio::model::EnergyManagementSystemInternalVariable, openstudio::model::EnergyManagementSystemMeteredOutputVariable, openstudio::model::EnergyManagementSystemOutputVariable, openstudio::model::EnergyManagementSystemProgram, openstudio::model::EnergyManagementSystemProgramCallingManager, openstudio::model::EnergyManagementSystemSensor, openstudio::model::EnergyManagementSystemSubroutine, openstudio::model::EnergyManagementSystemTrendVariable, openstudio::model::ExteriorLights, openstudio::model::GenericModelObject, openstudio::model::HeatBalanceAlgorithm, openstudio::model::InsideSurfaceConvectionAlgorithm, openstudio::model::LifeCycleCost, openstudio::model::LightingDesignDay, openstudio::model::LightingSimulationControl, openstudio::model::LightingSimulationZone, openstudio::model::MeterCustom, openstudio::model::MeterCustomDecrement, openstudio::model::ModelObjectList, openstudio::model::OutputControlReportingTolerances, openstudio::model::OutputEnergyManagementSystem, openstudio::model::OutputMeter, openstudio::model::OutputVariable, openstudio::model::OutsideSurfaceConvectionAlgorithm, openstudio::model::ParentObject, openstudio::model::PhotovoltaicPerformance, openstudio::model::PlantEquipmentOperationScheme, openstudio::model::PortList, openstudio::model::ProgramControl, openstudio::model::RadianceParameters, openstudio::model::RefrigerationCondenserCascade, openstudio::model::RefrigerationDefrostCycleParameters, openstudio::model::RefrigerationSubcoolerLiquidSuction, openstudio::model::RefrigerationSubcoolerMechanical, openstudio::model::RefrigerationSystem, openstudio::model::RefrigerationTranscriticalSystem, openstudio::model::RefrigerationWalkIn, openstudio::model::RefrigerationWalkInZoneBoundary, openstudio::model::RunPeriodControlDaylightSavingTime, openstudio::model::RunPeriodControlSpecialDays, openstudio::model::ShadowCalculation, openstudio::model::SiteGroundReflectance, openstudio::model::SiteGroundTemperatureBuildingSurface, openstudio::model::SiteGroundTemperatureDeep, openstudio::model::SiteGroundTemperatureFCfactorMethod, openstudio::model::SiteGroundTemperatureShallow, openstudio::model::SiteWaterMainsTemperature, openstudio::model::SizingParameters, openstudio::model::SizingPlant, openstudio::model::SizingSystem, openstudio::model::SizingZone, openstudio::model::SkyTemperature, openstudio::model::SolarCollectorPerformanceFlatPlate, openstudio::model::SolarCollectorPerformanceIntegralCollectorStorage, openstudio::model::SolarCollectorPerformancePhotovoltaicThermalSimple, openstudio::model::SpaceItem, openstudio::model::StandardsInformationConstruction, openstudio::model::StandardsInformationMaterial, openstudio::model::SurfacePropertyConvectionCoefficientsMultipleSurface, openstudio::model::Thermostat, openstudio::model::Timestep, openstudio::model::UtilityBill, openstudio::model::Version, openstudio::model::WeatherFile, openstudio::model::ZoneAirContaminantBalance, openstudio::model::ZoneAirHeatBalanceAlgorithm, openstudio::model::ZoneAirMassFlowConservation, openstudio::model::ZoneCapacitanceMultiplierResearchSpecial, openstudio::model::ZoneControlContaminantController, openstudio::model::ZoneControlHumidistat, openstudio::model::ZoneHVACEquipmentList, and openstudio::model::ZoneMixing.

Public Member Functions

Constructors and Destructors
virtual ~ModelObject ()
 
ModelObject clone () const
 Creates a deep copy of this object, placing it in this object's model(). More...
 
ModelObject clone (Model model) const
 Creates a deep copy of this object, placing it in model. More...
 
Components and Relationships

Once a Component has been created, it can be saved to local and online Building Component Libraries (BCLs) for web-enabled storing and sharing.

(At this time, only select BCL users have permissions to upload, but this capability is to be extended to all users in time.) Components plus Relationships are the preferred method for specifying and swapping out groups of related ModelObjects (e.g. constructions, schedules, etc.) in higher-level libraries such as standardsinterface and analysis. Like Attributes, Relationships provide access to a related getter (required), setter (optional), and reset (optional) method using a single string. Unlike Attributes, the Relationship methods all work off of ModelObjects (not simple alpha or numeric data).

Component createComponent () const
 Method for creating sharable Model snippets. More...
 
std::vector< std::string > relationshipNames () const
 Return all valid relationship names. More...
 
std::vector< Relationshiprelationships () const
 Return all relationships for this ModelObject. More...
 
boost::optional< RelationshipgetRelationship (const std::string &name) const
 Get the relationship named name, if it exists. More...
 
bool setRelationship (const std::string &name, boost::optional< ModelObject > relatedModelObject)
 Set this ModelObject's relationship name to point to relatedModelObject (or clear the relationship if relatedModelObject == boost::none). More...
 
bool setRelationship (const std::string &name, const Component &component)
 Inserts component into this model and sets this ModelObject's relationship name to point to component.primaryObject(). More...
 
Attributes

A single string provides access to a related getter (required), setter (optional), and reset (optional) method for simple pieces of data such as a ThermalZone's lighting power density or a fan's efficiency.

Attributes are the preferred method for accessing basic data (double, int, bool, and string) in higher-level libraries such as standardsinterface and analysis. See the OpenStudio Utilities library documentation for information on the Attribute class.

std::vector< std::string > attributeNames () const
 Return all valid attribute names. More...
 
std::vector
< openstudio::Attribute
attributes () const
 Return all Attributes for this ModelObject. More...
 
boost::optional
< openstudio::Attribute
getAttribute (const std::string &name) const
 Get the attribute named name, if it exists. More...
 
bool isSettableAttribute (const std::string &name) const
 Is the named attribute settable. More...
 
bool isOptionalAttribute (const std::string &name) const
 Is the named attribute optional. More...
 
bool setAttribute (const std::string &name, bool value)
 Set the attribute named name, if it exists. More...
 
bool setAttribute (const std::string &name, int value)
 
bool setAttribute (const std::string &name, unsigned value)
 
bool setAttribute (const std::string &name, double value)
 
bool setAttribute (const std::string &name, const Quantity &value)
 
bool setAttribute (const std::string &name, const std::string &value)
 
bool setAttribute (const std::string &name, const char *value)
 
bool resetAttribute (const std::string &name)
 Reset the attribute named name. More...
 
Getters
Model model () const
 Returns the Model that contains this object. More...
 
boost::optional< ParentObjectparent () const
 Return this object's parent in the hierarchy, if it has one. More...
 
std::vector< ResourceObjectresources () const
 Get the resources directly used by this ModelObject. More...
 
template<typename T >
std::vector< T > getModelObjectSources () const
 Get all objects of type T that point to this object. More...
 
template<typename T >
std::vector< T > getModelObjectSources (IddObjectType iddObjectType) const
 Get all objects of type T that point to this object. More...
 
template<typename T >
boost::optional< T > getModelObjectTarget (unsigned index) const
 Get the object of type T pointed to by this object from field index. More...
 
template<typename T >
std::vector< T > getModelObjectTargets () const
 Get all objects of type T to which this object points. More...
 
const std::vector< std::string > & outputVariableNames () const
 Get all output variables names that could be associated with this object. More...
 
std::vector< OutputVariableoutputVariables () const
 Get all output variables associated with this object, must run simulation to generate data. More...
 
boost::optional
< openstudio::TimeSeries
getData (const OutputVariable &variable, const std::string &envPeriod) const
 Get data associated with this output variable and this object. More...
 
std::vector< LifeCycleCostlifeCycleCosts () const
 Returns the list of all LifeCycleCosts that refer to this object. More...
 
std::vector< IdfObjectremoveLifeCycleCosts ()
 Removes all LifeCycleCosts that refer to this object. More...
 
IddObjectType iddObjectType () const
 This is a virtual function that will tell you the type of iddObject you are dealing with. More...
 
Setters
bool setParent (ParentObject &newParent)
 set the parent, child may have to call non-const methods on the parent More...
 
Queries
bool operator< (const ModelObject &right) const
 
bool operator== (const ModelObject &other) const
 equality test More...
 
bool operator!= (const ModelObject &other) const
 inequality test More...
 
std::vector< ScheduleTypeKeygetScheduleTypeKeys (const Schedule &schedule) const
 Return the ScheduleTypeKeys indicating how schedule is used in this object. More...
 
HVAC System Connections
boost::optional< ModelObjectconnectedObject (unsigned port) const
 
boost::optional< unsigned > connectedObjectPort (unsigned port) const
 
- Public Member Functions inherited from openstudio::WorkspaceObject
bool canBeSource () const
 
bool canBeSource (unsigned index, const std::vector< std::string > &refLists=std::vector< std::string >()) const
 
std::vector< std::string > canBeTarget () const
 
std::vector< unsigned > getSourceIndices (const Handle &targetHandle) const
 
std::vector< WorkspaceObjectgetSources (IddObjectType type) const
 
boost::optional< WorkspaceObjectgetTarget (unsigned index) const
 
IdfObject idfObject ()
 
IdfObject idfObject () const
 
bool initialized () const
 
bool isSource () const
 
bool isTarget () const
 
unsigned numSources () const
 
bool objectListFieldsEqual (const WorkspaceObject &other) const
 
bool objectListFieldsNonConflicting (const WorkspaceObject &other) const
 
bool operator< (const WorkspaceObject &right) const
 
std::ostream & operator<< (std::ostream &os, const WorkspaceObject &workspaceObject)
 
std::vector
< openstudio::IdfObject
remove ()
 
bool setPointer (unsigned index, const Handle &targetHandle)
 
std::vector< WorkspaceObjectsources () const
 
std::vector< WorkspaceObjecttargets () const
 
Workspace workspace () const
 
virtual ~WorkspaceObject ()
 
- Public Member Functions inherited from openstudio::IdfObject
std::string briefDescription () const
 
cast () const
 
std::vector< T > castVector (const std::vector< U > &objects)
 
std::vector< std::vector
< std::string > > 
clearExtensibleGroups ()
 
IdfObject clone (bool keepHandle=false) const
 
std::string comment () const
 
boost::optional< std::string > createName (bool overwrite=true)
 
std::vector< unsigned > dataFields () const
 
bool dataFieldsEqual (const IdfObject &other) const
 
std::vector< std::string > eraseExtensibleGroup (unsigned groupIndex)
 
std::vector< IdfExtensibleGroupextensibleGroups () const
 
boost::optional< std::string > fieldComment (unsigned index, bool returnDefault=false) const
 
boost::optional< double > getDouble (unsigned index, bool returnDefault=false) const
 
IdfExtensibleGroup getExtensibleGroup (unsigned groupIndex) const
 
std::vector< Handle > getHandles (const std::vector< T > &objects)
 
boost::optional< intgetInt (unsigned index, bool returnDefault=false) const
 
OSOptionalQuantity getQuantity (unsigned index, bool returnDefault=false, bool returnIP=false) const
 
boost::optional< std::string > getString (unsigned index, bool returnDefault=false, bool returnUninitializedEmpty=false) const
 
boost::optional< unsigned > getUnsigned (unsigned index, bool returnDefault=false) const
 
boost::optional< QUrl > getURL (unsigned index, bool returnDefault=false) const
 
Handle handle () const
 
IddObject iddObject () const
 
 IdfObject (IddObjectType type, bool fastName=false)
 
 IdfObject (const IddObject &, bool fastName=false)
 
 IdfObject (const IdfObject &other)
 
IdfExtensibleGroup insertExtensibleGroup (unsigned groupIndex)
 
IdfExtensibleGroup insertExtensibleGroup (unsigned groupIndex, const std::vector< std::string > &values)
 
bool isDataField (unsigned index) const
 
bool isEmpty (unsigned index) const
 
bool isObjectListField (unsigned index) const
 
bool isValid (StrictnessLevel level) const
 
boost::optional< unsigned > maxExtensibleGroups () const
 
boost::optional< unsigned > maxFields () const
 
unsigned minExtensibleGroups () const
 
unsigned minFields () const
 
boost::optional< std::string > name (bool returnDefault=false) const
 
std::string nameString (bool returnDefault=false) const
 
unsigned numExtensibleGroups () const
 
unsigned numFields () const
 
unsigned numNonextensibleFields () const
 
std::vector< unsigned > objectListFields () const
 
bool objectListFieldsEqual (const IdfObject &other) const
 
bool objectListFieldsNonConflicting (const IdfObject &other) const
 
bool operator!= (const IdfObject &other) const
 
std::ostream & operator<< (std::ostream &os, const IdfObject &IdfObject)
 
bool operator== (const IdfObject &other) const
 
boost::optional< T > optionalCast () const
 
std::vector< std::string > popExtensibleGroup ()
 
std::ostream & print (std::ostream &os) const
 
std::ostream & printField (std::ostream &os, unsigned index, bool isLastField=false) const
 
std::ostream & printName (std::ostream &os, bool hasFields=true) const
 
IdfExtensibleGroup pushExtensibleGroup ()
 
IdfExtensibleGroup pushExtensibleGroup (const std::vector< std::string > &values)
 
std::vector< unsigned > requiredFields () const
 
void setComment (const std::string &msg)
 
bool setDouble (unsigned index, double value)
 
bool setFieldComment (unsigned index, const std::string &cmnt)
 
bool setInt (unsigned index, int value)
 
boost::optional< std::string > setName (const std::string &newName)
 
bool setQuantity (unsigned index, const Quantity &q)
 
bool setString (unsigned index, const std::string &value)
 
bool setUnsigned (unsigned index, unsigned value)
 
std::vector< T > subsetCastVector (const std::vector< U > &original)
 
ValidityReport validityReport (StrictnessLevel level, bool checkNames=true) const
 
virtual ~IdfObject ()
 

Protected Types

typedef detail::ModelObject_Impl ImplType
 
- Protected Types inherited from openstudio::WorkspaceObject
typedef
detail::WorkspaceObject_Impl 
ImplType
 
- Protected Types inherited from openstudio::IdfObject
typedef detail::IdfObject_Impl ImplType
 

Protected Member Functions

 ModelObject (IddObjectType type, const Model &model, bool fastName=false)
 
 ModelObject (std::shared_ptr< detail::ModelObject_Impl > impl)
 
- Protected Member Functions inherited from openstudio::WorkspaceObject
 WorkspaceObject (std::shared_ptr< detail::WorkspaceObject_Impl > impl)
 
- Protected Member Functions inherited from openstudio::IdfObject
 IdfObject (std::shared_ptr< detail::IdfObject_Impl > impl)
 

Related Functions

(Note that these are not member functions.)

std::vector< ResourceObjectgetRecursiveResources (const ModelObject &object)
 Returns all ResourceObjects accessible by recursively calling .resources() starting from object. More...
 
typedef std::pair< std::string,
std::string > 
ScheduleTypeKey
 Typedef for ScheduleTypeRegistry key. More...
 

Additional Inherited Members

- Public Types inherited from openstudio::WorkspaceObject
typedef boost::optional
< WorkspaceObject
OptionalWorkspaceObject
 
typedef std::vector
< WorkspaceObject
WorkspaceObjectVector
 
- Public Types inherited from openstudio::IdfObject
typedef std::pair< IdfObject,
IdfObject
IdfObjectPair
 
typedef std::vector< IdfObjectIdfObjectVector
 
typedef boost::optional
< IdfObject
OptionalIdfObject
 
- Static Public Member Functions inherited from openstudio::IdfObject
static boost::optional< IdfObjectload (const std::string &text)
 
static boost::optional< IdfObjectload (const std::string &text, const IddObject &iddObject)
 
static int printedFieldSpace ()
 

Detailed Description

Base class for the OpenStudio Building Model hierarchy.

Derives from WorkspaceObject, just as Model derives from Workspace. Each concrete class in the hierarchy wraps a specific IddObject. (See the OpenStudio Utilities and Utilities Idd documentation for information on Workspace, WorkspaceObject, and IddObject.)

Member Typedef Documentation

typedef detail::ModelObject_Impl openstudio::model::ModelObject::ImplType
protected

Constructor & Destructor Documentation

virtual openstudio::model::ModelObject::~ModelObject ( )
inlinevirtual
openstudio::model::ModelObject::ModelObject ( IddObjectType  type,
const Model model,
bool  fastName = false 
)
explicitprotected
openstudio::model::ModelObject::ModelObject ( std::shared_ptr< detail::ModelObject_Impl >  impl)
explicitprotected

Member Function Documentation

std::vector<std::string> openstudio::model::ModelObject::attributeNames ( ) const

Return all valid attribute names.

std::vector<openstudio::Attribute> openstudio::model::ModelObject::attributes ( ) const

Return all Attributes for this ModelObject.

ModelObject openstudio::model::ModelObject::clone ( ) const

Creates a deep copy of this object, placing it in this object's model().

Virtual implementation.

ModelObject openstudio::model::ModelObject::clone ( Model  model) const

Creates a deep copy of this object, placing it in model.

Virtual implementation.

boost::optional<ModelObject> openstudio::model::ModelObject::connectedObject ( unsigned  port) const
boost::optional<unsigned> openstudio::model::ModelObject::connectedObjectPort ( unsigned  port) const
Component openstudio::model::ModelObject::createComponent ( ) const

Method for creating sharable Model snippets.

Creates a Component with this ModelObject as the primary object. Uses the clone(Model&) method to select Component contents.

boost::optional<openstudio::Attribute> openstudio::model::ModelObject::getAttribute ( const std::string &  name) const

Get the attribute named name, if it exists.

boost::optional<openstudio::TimeSeries> openstudio::model::ModelObject::getData ( const OutputVariable variable,
const std::string &  envPeriod 
) const

Get data associated with this output variable and this object.

template<typename T >
std::vector<T> openstudio::model::ModelObject::getModelObjectSources ( ) const
inline

Get all objects of type T that point to this object.

This method is preferred over the WorkspaceObject equivalent, as its use does not require knowledge of the IddObjectType.

template<typename T >
std::vector<T> openstudio::model::ModelObject::getModelObjectSources ( IddObjectType  iddObjectType) const
inline

Get all objects of type T that point to this object.

Preferred usage (do not use with abstract classes):

PeopleVector myZonesPeople = zone.getModelObjectSources<People>(People::iddObjectType());
template<typename T >
boost::optional<T> openstudio::model::ModelObject::getModelObjectTarget ( unsigned  index) const
inline

Get the object of type T pointed to by this object from field index.

template<typename T >
std::vector<T> openstudio::model::ModelObject::getModelObjectTargets ( ) const
inline

Get all objects of type T to which this object points.

This method is preferred over the WorkspaceObject equivalent, as its use does not require knowledge of the IddObjectType.

boost::optional<Relationship> openstudio::model::ModelObject::getRelationship ( const std::string &  name) const

Get the relationship named name, if it exists.

std::vector<ScheduleTypeKey> openstudio::model::ModelObject::getScheduleTypeKeys ( const Schedule schedule) const

Return the ScheduleTypeKeys indicating how schedule is used in this object.

If schedule is not directly used by this object, return value will be .empty(). Used to maintain compatibility between schedule's ScheduleTypeLimits and how schedule is used by other objects.

IddObjectType openstudio::model::ModelObject::iddObjectType ( ) const

This is a virtual function that will tell you the type of iddObject you are dealing with.

While not labeled virtual here, it IS virtual in the impl.

bool openstudio::model::ModelObject::isOptionalAttribute ( const std::string &  name) const

Is the named attribute optional.

bool openstudio::model::ModelObject::isSettableAttribute ( const std::string &  name) const

Is the named attribute settable.

std::vector<LifeCycleCost> openstudio::model::ModelObject::lifeCycleCosts ( ) const

Returns the list of all LifeCycleCosts that refer to this object.

Model openstudio::model::ModelObject::model ( ) const

Returns the Model that contains this object.

bool openstudio::model::ModelObject::operator!= ( const ModelObject other) const

inequality test

bool openstudio::model::ModelObject::operator< ( const ModelObject right) const
bool openstudio::model::ModelObject::operator== ( const ModelObject other) const

equality test

const std::vector<std::string>& openstudio::model::ModelObject::outputVariableNames ( ) const

Get all output variables names that could be associated with this object.

These variables may or may not be available for each simulation, need to check report variable dictionary to see if the variable is available. Each concrete class should override this method.

std::vector<OutputVariable> openstudio::model::ModelObject::outputVariables ( ) const

Get all output variables associated with this object, must run simulation to generate data.

boost::optional<ParentObject> openstudio::model::ModelObject::parent ( ) const

Return this object's parent in the hierarchy, if it has one.

std::vector<std::string> openstudio::model::ModelObject::relationshipNames ( ) const

Return all valid relationship names.

std::vector<Relationship> openstudio::model::ModelObject::relationships ( ) const

Return all relationships for this ModelObject.

std::vector<IdfObject> openstudio::model::ModelObject::removeLifeCycleCosts ( )

Removes all LifeCycleCosts that refer to this object.

Returns removed objects.

bool openstudio::model::ModelObject::resetAttribute ( const std::string &  name)

Reset the attribute named name.

Provided for optional types.

std::vector<ResourceObject> openstudio::model::ModelObject::resources ( ) const

Get the resources directly used by this ModelObject.

bool openstudio::model::ModelObject::setAttribute ( const std::string &  name,
bool  value 
)

Set the attribute named name, if it exists.

bool openstudio::model::ModelObject::setAttribute ( const std::string &  name,
int  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool openstudio::model::ModelObject::setAttribute ( const std::string &  name,
unsigned  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool openstudio::model::ModelObject::setAttribute ( const std::string &  name,
double  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool openstudio::model::ModelObject::setAttribute ( const std::string &  name,
const Quantity value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool openstudio::model::ModelObject::setAttribute ( const std::string &  name,
const std::string &  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool openstudio::model::ModelObject::setAttribute ( const std::string &  name,
const char *  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool openstudio::model::ModelObject::setParent ( ParentObject newParent)

set the parent, child may have to call non-const methods on the parent

bool openstudio::model::ModelObject::setRelationship ( const std::string &  name,
boost::optional< ModelObject relatedModelObject 
)

Set this ModelObject's relationship name to point to relatedModelObject (or clear the relationship if relatedModelObject == boost::none).

bool openstudio::model::ModelObject::setRelationship ( const std::string &  name,
const Component component 
)

Inserts component into this model and sets this ModelObject's relationship name to point to component.primaryObject().

Friends And Related Function Documentation

std::vector< ResourceObject > getRecursiveResources ( const ModelObject object)
related

Returns all ResourceObjects accessible by recursively calling .resources() starting from object.

Will not return object even if object is a ResourceObject.

typedef std::pair<std::string,std::string> ScheduleTypeKey
related

Typedef for ScheduleTypeRegistry key.

First is a string representation of the class name. Second is a display name for the schedule.