IDF in modeleditor¶
The previous section talks about EpBunch, which deals with a single object from Energyplus. Here we put all the pieces together so that we have the entire IDF file
Class IDF¶
IDF0 is the first class that was written. As the code was refined, it was further refined to by subclassing to IDF1, IDF2, IDF3. Finally the following was set as IDF = IDF3
Class IDF0¶
Some important methods in IDF0
IDF0.setiddname¶
This method has a decorator @classmethod
. This decorator makes the
method a class method. From a stackoverflow comment, I found a brief
description of when this should be used.
"Class methods are essential when you are doing set-up or computation that precedes the creation of an actual instance, because until the instance exists you obviously cannot use the instance as the dispatch point for your method calls"
Having said that, I am outside my comfort zone on trying to explain this in any depth. I will simply explain what I am doing with this here. Below is a brief explanation intent.
- the idd file is a very large file. There is a large overhead in opening more than one idd file.
- A design decision was made to use only one idd file to be used in a script.
- This means that you cannot open two idf files that are of different version (meaning they will use different idd files)
- You can open any number of idf file as long as they are of the same version (meaing, the use the same idd file)
The class method allows us to achieve the objective:
- The class method ‘setiddname’, allows us to set the name of the idd
file, before creating an instance of IDF. It is set by the statement
IDF.setiddname(iddfilename)
- There are other class methods that make sure that this idd name cannot be changed.
- An instance of the class IDF is created using the statement
idf = IDF(idffilename)
. This can be done multiple times, creating multiple instances and they will all use the same idd file
IDF0.__init__
¶
IDF is initialized by passing it the idf file name. I would look like this:
idf1 = IDF(filename) # filename can be a file name, file handle or an StringIO
- Once the class is initialized, it will read the idf file.
- If this the first time the class is inititalized, the idd file set by
setiddname()
will be read too. - the idd file is read only once and then same copy is used.
IDF0.read¶
The read function is called when the class IDF is initialized. The read function calls routines from the original EPlusInterface program to do the actual read. The read get the values for the following variables:
- idfobjects
- model.dt
- model.dtls
- idd_info
The functions within EPlusInterface are not documented here. I wrote them in 2004 and I have no idea how I did them. they have been working really well with some minor updates. I don’t intent to poke at that code yet.
Other IDF methods¶
The other functions in IDF0, IDF1, IDF2 and IDF3 not too complicated. It should be possible to understand them by reading the code.
Sometime in the future, these functions will be documented later in more detail