#include "Model.hpp"
Public Member Functions | |
void | applySizingValues () |
void | autosize () |
void | connect (ModelObject sourceObject, unsigned sourcePort, ModelObject targetObject, unsigned targetPort) const |
void | disconnect (ModelObject object, unsigned port) |
template<> | |
Building | getUniqueModelObject () |
template<> | |
FoundationKivaSettings | getUniqueModelObject () |
template<> | |
OutputControlFiles | getUniqueModelObject () |
template<> | |
OutputTableSummaryReports | getUniqueModelObject () |
template<> | |
LifeCycleCostParameters | getUniqueModelObject () |
template<> | |
PerformancePrecisionTradeoffs | getUniqueModelObject () |
template<> | |
RunPeriod | getUniqueModelObject () |
template<> | |
YearDescription | getUniqueModelObject () |
template<> | |
WeatherFile | getUniqueModelObject () |
boost::optional< ComponentData > | insertComponent (const Component &component) |
std::vector< ModelObject > | modelObjects (bool sorted=false) const |
bool | operator== (const Model &other) const |
std::vector < openstudio::IdfObject > | purgeUnusedResourceObjects () |
std::vector < openstudio::IdfObject > | purgeUnusedResourceObjects (IddObjectType iddObjectType) |
Model () | |
Model (const openstudio::IdfFile &idfFile) | |
Model (const openstudio::Workspace &workspace) | |
virtual | ~Model () |
WorkflowJSON | workflowJSON () const |
boost::optional< SqlFile > | sqlFile () const |
boost::optional< Building > | building () const |
boost::optional < FoundationKivaSettings > | foundationKivaSettings () const |
boost::optional < OutputControlFiles > | outputControlFiles () const |
boost::optional < OutputTableSummaryReports > | outputTableSummaryReports () const |
boost::optional < PerformancePrecisionTradeoffs > | performancePrecisionTradeoffs () const |
boost::optional < LifeCycleCostParameters > | lifeCycleCostParameters () const |
boost::optional< RunPeriod > | runPeriod () const |
boost::optional< YearDescription > | yearDescription () const |
boost::optional< int > | calendarYear () const |
std::string | dayofWeekforStartDay () const |
bool | isDayofWeekforStartDayDefaulted () const |
bool | isLeapYear () const |
bool | isIsLeapYearDefaulted () const |
bool | setCalendarYear (int calendarYear) |
void | resetCalendarYear () |
bool | setDayofWeekforStartDay (std::string dayofWeekforStartDay) |
void | resetDayofWeekforStartDay () |
bool | setIsLeapYear (bool isLeapYear) |
void | resetIsLeapYear () |
int | assumedYear () |
openstudio::Date | makeDate (openstudio::MonthOfYear monthOfYear, unsigned dayOfMonth) |
openstudio::Date | makeDate (unsigned monthOfYear, unsigned dayOfMonth) |
openstudio::Date | makeDate (openstudio::NthDayOfWeekInMonth n, openstudio::DayOfWeek dayOfWeek, openstudio::MonthOfYear monthOfYear) |
openstudio::Date | makeDate (unsigned dayOfYear) |
boost::optional< WeatherFile > | weatherFile () const |
Schedule | alwaysOnDiscreteSchedule () const |
std::string | alwaysOnDiscreteScheduleName () const |
Schedule | alwaysOffDiscreteSchedule () const |
std::string | alwaysOffDiscreteScheduleName () const |
Schedule | alwaysOnContinuousSchedule () const |
std::string | alwaysOnContinuousScheduleName () const |
Node | outdoorAirNode () const |
SpaceType | plenumSpaceType () const |
std::string | plenumSpaceTypeName () const |
bool | setWorkflowJSON (const WorkflowJSON &workflowJSON) |
void | resetWorkflowJSON () |
bool | setSqlFile (const SqlFile &sqlFile) |
bool | resetSqlFile () |
template<typename T > | |
boost::optional< T > | getModelObject (const Handle &handle) const |
template<typename T > | |
T | getUniqueModelObject () |
template<typename T > | |
boost::optional< T > | getOptionalUniqueModelObject () const |
template<typename T > | |
std::vector< T > | getModelObjects (bool sorted=false) const |
template<typename T > | |
std::vector< T > | getConcreteModelObjects () const |
template<typename T > | |
std::vector< T > | getModelObjects (const std::vector< openstudio::Handle > &handles) const |
template<typename T > | |
boost::optional< T > | getModelObjectByName (const std::string &name) const |
template<typename T > | |
std::vector< T > | getModelObjectsByName (const std::string &name, bool exactMatch=true) const |
template<typename T > | |
boost::optional< T > | getConcreteModelObjectByName (const std::string &name) const |
template<typename T > | |
std::vector< T > | getConcreteModelObjectsByName (const std::string &name) const |
Static Public Member Functions | |
static boost::optional< Model > | load (const path &osmPath) |
static boost::optional< Model > | load (const path &osmPath, const path &workflowJSONPath) |
Related Functions | |
bool | compareInputAndOutput (const ModelObject &object, const std::string &attributeName, double inputResult, double outputResult, double tol, LogLevel logLevel=LogLevel::Debug) |
typedef std::vector< Model > | ModelVector |
typedef boost::optional< Model > | OptionalModel |
Model derives from Workspace and is a container for ModelObjects as defined by the OpenStudio IDD.
The OpenStudio Model is primarily a container for ModelObjects which together define a complete or partial model of a building for energy simulation. A ModelObject cannot exist outside of a Model which ensures that each ModelObject can access the full Model to search for related ModelObjects. Model also accepts a connection to EnergyPlus simulation output through the SqlFile access to the SQLite output of EnergyPlus. Each ModelObject may then access simulation output in its own context. Connection to simulation data from other simulation engines is planned for the future.
The OpenStudio Model input data model is based on the schema defined by the OpenStudio IDD. Each concrete ModelObject wraps a particular data type in the OpenStudio IDD and Model enforces collection level constraints such as preventing multiple definitions of unique objects, updating reference fields that point from one ModelObject to another when the target's name changes, etc. Most of Model's capabilities for managing data according to an IDD schema are implemented in the Workspace base class. See the Workspace documentation in the utilities sub-project for more information about Workspace.
openstudio::model::Model::Model | ( | ) |
Creates a new, empty Model.
|
explicit |
Creates a new Model with one ModelObject for each IdfObject in the given IdfFile.
Any unwrapped IDD types will be wrapped with GenericModelObject.
|
explicit |
Creates a new Model with one ModelObject for each WorkspaceObjects in the given Workspace.
Any unwrapped IDD types will be wrapped with GenericModelObject.
|
inlinevirtual |
Schedule openstudio::model::Model::alwaysOffDiscreteSchedule | ( | ) | const |
Get an always off schedule with discrete type limits if there is one.
create a new schedule if necessary and add it to the model
std::string openstudio::model::Model::alwaysOffDiscreteScheduleName | ( | ) | const |
Get the always off schedule with discrete type limits name.
Schedule openstudio::model::Model::alwaysOnContinuousSchedule | ( | ) | const |
Get an always on schedule with continuous type limits if there is one.
create a new schedule if necessary and add it to the model
std::string openstudio::model::Model::alwaysOnContinuousScheduleName | ( | ) | const |
Get the always on schedule with continuous type limits name.
Schedule openstudio::model::Model::alwaysOnDiscreteSchedule | ( | ) | const |
Get an always on schedule with discrete type limits if there is one.
create a new schedule if necessary and add it to the model
std::string openstudio::model::Model::alwaysOnDiscreteScheduleName | ( | ) | const |
Get the always on schedule with discrete type limits name.
void openstudio::model::Model::applySizingValues | ( | ) |
For each object in the model with autosizable fields, retrieves the autosized values from the sizing run and then sets these values in the object explicitly.
Requires a sql file with sizing run results from a previous simulation. For example, if a ChillerElectricEIR's Reference Capacity was previously autosized to 120,000W by the sizing run, this method would find the 120,000W in the sql file and then set the Reference Capacity field to 120,000W explicitly. Next time a simulation is run, the chiller's capacity will be 120,000W, it will not be autosized during the sizing run.
int openstudio::model::Model::assumedYear | ( | ) |
void openstudio::model::Model::autosize | ( | ) |
For each object in the model with autosizable fields, sets all autosizable fields to 'autosize'.
Fields that previously contained hard-sized values will be overwritten by 'autosize.'
boost::optional<Building> openstudio::model::Model::building | ( | ) | const |
Get the Building object if there is one, this implementation uses a cached reference to the Building object which can be significantly faster than calling getOptionalUniqueModelObject<Building>().
boost::optional<int> openstudio::model::Model::calendarYear | ( | ) | const |
Get or create the YearDescription object if there is one, then call method from YearDescription.
void openstudio::model::Model::connect | ( | ModelObject | sourceObject, |
unsigned | sourcePort, | ||
ModelObject | targetObject, | ||
unsigned | targetPort | ||
) | const |
Connects the sourcePort on the source ModelObject to the targetPort on the target ModelObject.
std::string openstudio::model::Model::dayofWeekforStartDay | ( | ) | const |
void openstudio::model::Model::disconnect | ( | ModelObject | object, |
unsigned | port | ||
) |
Disconnects the port on the given ModelObject.
boost::optional<FoundationKivaSettings> openstudio::model::Model::foundationKivaSettings | ( | ) | const |
Get the FoundationKivaSettings object if there is one, this implementation uses a cached reference to the FoundationKivaSettings object which can be significantly faster than calling getOptionalUniqueModelObject<FoundationKivaSettings>().
|
inline |
|
inline |
Returns all ModelObjects of type T, using T::iddObjectType() to speed up the search.
This method will only work for concrete model objects (leaves in the ModelObject inheritance tree), hence the name.
|
inline |
|
inline |
Returns the ModelObject referenced by handle if it is of type T.
This method can be used with T as a concrete type (e.g. Zone) or as an abstract class (e.g. ParentObject).
|
inline |
Returns the ModelObjects of type T with name (exactMatch).
This method can be used with T as a concrete type (e.g. Zone) or as an abstract class (e.g. ParentObject), but please see getConcreteModelObjectByName if T is concrete.
|
inline |
Returns all ModelObjects of type T.
This method can be used with T as a concrete type (e.g. Zone) or as an abstract class (e.g. ParentObject).
|
inline |
Returns the subset of ModelObjects referenced by handles which are of type T.
This method can be used with T as a concrete type (e.g. Zone) or as an abstract class (e.g. ParentObject).
|
inline |
Returns all ModelObjects of type T with given name.
This method can be used with T as a concrete type (e.g. Zone) or as an abstract class (e.g. ParentObject).
|
inline |
Returns the unique ModelObject of type T if it is found.
|
inline |
Returns the unique ModelObject of type T, creates a one if none are found.
Note that template specilizations are provided below for objects were there is a performance gain to be had by caching the unique model object eg: getUniqueModelObject<YearDescription>()
Building openstudio::model::Model::getUniqueModelObject | ( | ) |
FoundationKivaSettings openstudio::model::Model::getUniqueModelObject | ( | ) |
OutputControlFiles openstudio::model::Model::getUniqueModelObject | ( | ) |
OutputTableSummaryReports openstudio::model::Model::getUniqueModelObject | ( | ) |
LifeCycleCostParameters openstudio::model::Model::getUniqueModelObject | ( | ) |
PerformancePrecisionTradeoffs openstudio::model::Model::getUniqueModelObject | ( | ) |
RunPeriod openstudio::model::Model::getUniqueModelObject | ( | ) |
YearDescription openstudio::model::Model::getUniqueModelObject | ( | ) |
WeatherFile openstudio::model::Model::getUniqueModelObject | ( | ) |
boost::optional<ComponentData> openstudio::model::Model::insertComponent | ( | const Component & | component | ) |
bool openstudio::model::Model::isDayofWeekforStartDayDefaulted | ( | ) | const |
bool openstudio::model::Model::isIsLeapYearDefaulted | ( | ) | const |
bool openstudio::model::Model::isLeapYear | ( | ) | const |
boost::optional<LifeCycleCostParameters> openstudio::model::Model::lifeCycleCostParameters | ( | ) | const |
Get the LifeCycleCostParameters object if there is one, this implementation uses a cached reference to the LifeCycleCostParameters object which can be significantly faster than calling getOptionalUniqueModelObject<LifeCycleCostParameters>().
|
static |
Load Model from file, attempts to load WorkflowJSON from standard path.
|
static |
Load Model and WorkflowJSON from files, fails if either osm or workflowJSON cannot be loaded.
openstudio::Date openstudio::model::Model::makeDate | ( | openstudio::MonthOfYear | monthOfYear, |
unsigned | dayOfMonth | ||
) |
openstudio::Date openstudio::model::Model::makeDate | ( | unsigned | monthOfYear, |
unsigned | dayOfMonth | ||
) |
openstudio::Date openstudio::model::Model::makeDate | ( | openstudio::NthDayOfWeekInMonth | n, |
openstudio::DayOfWeek | dayOfWeek, | ||
openstudio::MonthOfYear | monthOfYear | ||
) |
openstudio::Date openstudio::model::Model::makeDate | ( | unsigned | dayOfYear | ) |
std::vector<ModelObject> openstudio::model::Model::modelObjects | ( | bool | sorted = false | ) | const |
Get all model objects.
If sorted, then the objects are returned in the preferred order.
bool openstudio::model::Model::operator== | ( | const Model & | other | ) | const |
Equality test, tests if this Model shares the same implementation object with other.
Node openstudio::model::Model::outdoorAirNode | ( | ) | const |
boost::optional<OutputControlFiles> openstudio::model::Model::outputControlFiles | ( | ) | const |
Get the OutputControlFiles object if there is one, this implementation uses a cached reference to the OutputControlFiles object which can be significantly faster than calling getOptionalUniqueModelObject<OutputControlFiles>().
boost::optional<OutputTableSummaryReports> openstudio::model::Model::outputTableSummaryReports | ( | ) | const |
Get the OutputTableSummaryReports object if there is one, this implementation uses a cached reference to the OutputTableSummaryReports object which can be significantly faster than calling getOptionalUniqueModelObject<OutputTableSummaryReports>().
boost::optional<PerformancePrecisionTradeoffs> openstudio::model::Model::performancePrecisionTradeoffs | ( | ) | const |
Get the PerformancePrecisionTradeoffs object if there is one, this implementation uses a cached reference to the PerformancePrecisionTradeoffs object which can be significantly faster than calling getOptionalUniqueModelObject<PerformancePrecisionTradeoffs>().
SpaceType openstudio::model::Model::plenumSpaceType | ( | ) | const |
Get the space type used for plenums if there is one.
Create a new space type if necessary and add it to the model
std::string openstudio::model::Model::plenumSpaceTypeName | ( | ) | const |
Get the space type name used for plenums.
std::vector<openstudio::IdfObject> openstudio::model::Model::purgeUnusedResourceObjects | ( | ) |
Removes all ResourceObjects with nonResourceObjectUseCount() == 0.
All objects removed in the course of the purge are returned to support undos. Note that ResourceObjects may have children that are not ResourceObjects, and these may be removed as well.
std::vector<openstudio::IdfObject> openstudio::model::Model::purgeUnusedResourceObjects | ( | IddObjectType | iddObjectType | ) |
Removes all ResourceObjects of given IddObjectType with directUseCount() == 0.
All objects removed in the course of the purge are returned to support undos. Note that ResourceObjects may have children that are not ResourceObjects, and these may be removed as well.
void openstudio::model::Model::resetCalendarYear | ( | ) |
void openstudio::model::Model::resetDayofWeekforStartDay | ( | ) |
void openstudio::model::Model::resetIsLeapYear | ( | ) |
bool openstudio::model::Model::resetSqlFile | ( | ) |
Resets the EnergyPlus output SqlFile.
void openstudio::model::Model::resetWorkflowJSON | ( | ) |
Reset the WorkflowJSON.
boost::optional<RunPeriod> openstudio::model::Model::runPeriod | ( | ) | const |
Get the RunPeriod object if there is one, this implementation uses a cached reference to the RunPeriod object which can be significantly faster than calling getOptionalUniqueModelObject<RunPeriod>().
bool openstudio::model::Model::setCalendarYear | ( | int | calendarYear | ) |
bool openstudio::model::Model::setDayofWeekforStartDay | ( | std::string | dayofWeekforStartDay | ) |
bool openstudio::model::Model::setIsLeapYear | ( | bool | isLeapYear | ) |
bool openstudio::model::Model::setSqlFile | ( | const SqlFile & | sqlFile | ) |
Sets the EnergyPlus output SqlFile.
SqlFile must correspond to EnergyPlus simulation of this Model.
bool openstudio::model::Model::setWorkflowJSON | ( | const WorkflowJSON & | workflowJSON | ) |
Set the WorkflowJSON.
boost::optional<SqlFile> openstudio::model::Model::sqlFile | ( | ) | const |
Returns the EnergyPlus output SqlFile if set.
boost::optional<WeatherFile> openstudio::model::Model::weatherFile | ( | ) | const |
Get the WeatherFile object if there is one, this implementation uses a cached reference to the WeatherFile object which can be significantly faster than calling getOptionalUniqueModelObject<WeatherFile>().
WorkflowJSON openstudio::model::Model::workflowJSON | ( | ) | const |
Get the WorkflowJSON.
boost::optional<YearDescription> openstudio::model::Model::yearDescription | ( | ) | const |
Get the YearDescription object if there is one, this implementation uses a cached reference to the YearDescription object which can be significantly faster than calling getOptionalUniqueModelObject<YearDescription>().
|
related |
Compare inputResult to outputResult.
The intention is for inputResult to be the value of attributeName calculated using input data, and for outputResult to be the value of attributeName extracted from the Model::sqlFile(). Returns false and logs a message on the Model log channel at logLevel if the (relative) error is greater than tol.
|
related |
|
related |