Releases: hongyuanjia/eplusr
eplusr v0.13.0
New features
-
Idf$add()
andIdf$set()
have new features:# refer to field using '..' idf$add(Material = list(..1 = "mat", ..7 = 0.95)) idf$set(mat = list(..6 = 0.5)) # using vector field values idf$add(Material := list(..1 = sprintf("mat%i", 1:10))) idf$set(c(sprintf("mat%i", 1:10)) := list(..6 = runif(10)))
-
Idf$to_table()
gains a new parameterforce
. The default value isFALSE
. IfTRUE
, you can convert object data from any classes into a wide data.table. This may be useful when you know that target classes have the exact same fields, e.g.Ceiling:Adiabatic
andFloor:Adiabatic
(#202). -
A new method
Idf$purge()
has been added (#223). It can be used to delete any resource objects that are not referenced by other objects. Here resource objects indicate all objects that can be referenced by other objects, e.g. all schedules.$purge()
will ignore any inputs that are not resources. If inputs contain objects from multiple classes, references among them are also taken into account, which means purging is performed hierarchically. If both materials and constructions are specified, the latter will be purged first, because it is possible that input constructions reference input materials.Idf$purge()
makes it quite straightforward to perform IDF cleaning. Actions like removing all materials, constructions and schedules can be easily achieved viaIdf$purge(class = c("Material", "Construction"), group = "Schedules")
-
New methods
Idf$duplicatd()
andIdf$unique()
have been added. They can be used to detect and remove duplicated objects, respectively. Here duplicated objects refer to objects whose field values are the same except the names. Object comments are ignored during comparison. These two methods can be useful when doing model cleaning (#227). -
Now if
class
is set toNULL
inIdf$definition()
, the underlyingIdd
object is returned (#237). -
Internal helper functions
with_option()
,with_silent()
,with_verbose()
,with_speed()
andwithout_checking()
have been exported. They can be used to evaluate an expression with temporary eplusr options (#240). -
Now
Idf$insert()
can directly take anIdf
object or a list ofIdf
objects as input. And alsoVersion
objects in input will be directly skipped instead of giving an error (#245). -
A new option
all
has been added inIdfObject$print()
with default beingFALSE
. IfTRUE
, all fields defined in [Idd] are printed even they do not exist in current object (#247). -
New S3 methods of
==
for all classes are added, i.e.==.Idf
,==.IdfObject
,==.Idd
,==.IddObject
,==.Epw
,==.EplusJob
,==.EplusSql
,==.EplusGroupJob
,==.ParametricJob
. The negate methods are also added. This makes it quite easy to check the equality of R6 objects of these types (#250). -
A new Generic function
reload()
is added. eplusr relies heavily on thedata.table
package. The core data of all main classes in eplusr are saved asdata.table
s. This introduces a problem when loading savedIdf
objects or other class objects via an*.RDS
and*.RData
file on disk: the storeddata.table
s lose their column over-allocation.reload()
is a helper function that callsdata.table::setDT()
on all internaldata.table
s to make sure they are initialized properly. It is recommended to callreload()
on eachIdd
,Idf
and other class object in eplusr loaded withreadRDS()
orload()
, to make sure all eplusr's functionaries works properly (#251). -
The implementation of
EplusSql$report_data()
has been refactored, resulting in a ~200% speed-up (#259). -
Now
day_type
inEplusSql$report_data()
has a few new options (#259): -"Weekday"
: All working days, i.e. from Monday to Friday -"Weekend"
: Saturday and Sunday -"DesignDay"
: Equivalent to"SummerDesignDay"
plus"WinterDesignDay"
-"CustomDay"
: CustomDay1 and CustomDay2 -"SpecialDay"
: Equivalent to"DesignDay"
plus"CustomDay"
-"NormalDay"
: Equivalent to"Weekday"
and"Weekend"
plus"Holiday"
-
Some internal functions have been exported. They are mainly useful for developers to handle internal IDD and IDF data more efficiently (#260).
-
A new
IdfScheduleCompact
class is introduced. A constructor functionschedule_compact()
is added.IdfScheduleCompact
class provides more detailed methods to add, modify and extract schedule values. For more details, seevignette("schedule")
(#256). -
New
IdfGeometry
andIdfViewer
classes are introduced.IdfGeometry
is designed to extract data for all geometry objects and perform geometric operations on them, whileIdfViewer
is to view IDF geoemtry in 3D using the rgl package in a similar way as OpenStudio SketchUp Plugin.Idf$geometry()
andIdf$view()
methods are added to directly create anIdfGeometry
andIdfViewer
object based on currentIdf
object, respectively (#296). -
A
plot.Idf
method is added which is basically a wrappper ofIdf$view()
(#296). -
Now eplusr can utilize the CSV output for report data extraction. Benifiting from the fantastic
data.table::fread
, this approach can be as 3~10X faster compared to the SQLite approach. eplusr will still use the SQLite if the CSV output is not available.
Major changes
-
The algorithm of object/field/value relation extraction has been completed refactored. Now it can correctly detect object recursive-reference and it's faster (#222, #223).
All relation-related methods now have an unified interface:
X$method(which, direction, object = NULL, class = NULL, group = NULL, depth = NULL, keep = FALSE)
Where
which
is a class index or object ID,direction
is the target relation direction to extract. All results can be further constrained via 3 extra arguments, i.e.object
,class
andobject
.object
only applicable toIdf
andIdfObject
. Thedepth
argument is used to control the depth for searching recursive relations. Default value is0L
, which means no recursive relations will be detected, whileNULL
means to search all possible recursive relations.A new
keep
parameter with default valueFALSE
has been added. IfTRUE
, all input fields will be returned, even they may not have any relations. This is the default behavior of v0.12.0 and before. In this version, only fields that have relation with other objects will be returned.With this update, it is possible, for example, to directly know the structure of an air loop by using
idf$object_relation("AnAirLoop", depth = NULL)
Moreover, a new argument
class_ref
can be specified in methods of value-relation extraction. It can be used to specify how to handle class-name-references. Class name references refer to references in like fieldComponent 1 Object Type
inBranch
objects. Their value refers to other many class names of objects, instaed of refering to specific field values. There are 3 options in total, i.e."none"
,"both"
and"all"
, with"both"
being the default."none"
: just ignore class-name-references. It is a reasonable option, as for most cases, class-name-references always come along with field value references. Ignoring class-name-references will not impact the most part of the relation structure."both"
: only include class-name-references if this object also reference field values of the same one. For example, if the value of fieldComponent 1 Object Type
isCoil:Heating:Water
, only the object that is referenced in the next fieldComponent 1 Name
is treated as referenced byComponent 1 Object Type
. This is the default option."all"
: include all class-name-references. For example, if the value of fieldComponent 1 Object Type
isCoil:Heating:Water
, all objects inCoil:Heating:Water
will be treated as referenced by that field. This is the most aggressive option.
-
read_epw()
will proceed parsing for non-standard EPW header format (#236). -
Now
EplusSql$report_data()
will set the year values of day typeSummerDesignDay
andWinterDesignDay
to current year and theday_type
value will be left unchanged (#258). -
Now
read_idf()
will always make sure all necessary fields are added during parsing (#267). -
[[.IdfObject
now only accept standard field names. No underscore-style names are allowed. -
The suffix of automatcially created names in
Idf$dup()
has been changed from_X
toX
. -
The
warning
parameter inread_epw()
,Epw$add()
andEpw$set()
has been deprecated (#298).
Minor changes
EplusJob
,EplusGroupJob
andParametricJob
will not parse input EPW files, but only validate their existences and store the paths (#215)period
parameter inEplusSql$report_data()
now works as expected (#259).run_idf()
andrun_multi()
now return additional element/column calledversion
which contain the versions of EnergyPlus that are called during simulationsformat.Idd()
now returns a single line string in format<EnergyPlus IDD v[Version] (Build) with X classes
.- The column
datasource
returned inEpw$data()
has been renamed todata_source
.
Bug fixes
- Fix the bug caused by
ExpandObjects
exectuable that causesrun_idf
fails when running in parallel (#130) Idf$insert()
now will remove all duplicated objects in input (#219).- Fix the bug in
install_eplus()
on Windows (#230) - Fix the error in
$<-.Idf
when input list ofIdfObject
s are all from the sameIdf
on the LHS (#238). - Now
Idf$insert()
andIdf$load()
can now successfully remove duplicated objects by comparing field values case-insensitively (#243) - Now
Epw$save()
can work with emptyDESIGN CONDITIONS
,TYPICAL/EXTREME PERIODS
andGROUND TEMPERATURES
headers. Thanks @lukas-rokka for the bug report (#263). - Fix output directory creation error in
EplusGroupJob
(#270). - Fix IDF header option parsing (#278).
- Trailing spa...
eplusr v0.12.0
New features
- Now
group_job()
supports single IDF input with multiple EPW inputs (#185). - A new method
Idf$last_job()
has been added to enable getting the last simulation job created usingIdf$run()
(#187). - Provide a workaround to fix the issue of EnergyPlus v9.1 and above installation which fails to extract files into correct directory
/usr/local/EnergyPlus-X-Y-0
, but instead extracting all files directly into/usr/local
(NREL/EnergyPlus#7256) (#193). - A new parameter
group_ext
has been added inIdf$to_table()
andIdfObject$to_table()
, with default value being"none"
. If"group"
, values from extensible fields will be grouped by the extensible group they belong to. For example, coordinate values of each vertex in classBuildingSurface:Detailed
will be put into a list. If"index"
, values from extensible fields will be grouped by the extensible field indices they belong to. For example, coordinate values of all x coordinates will be put into a list (#74).
Bug fixes
- The algorithm of detecting numeric columns in
EplusSql$tabular_data()
has been improved (#190). - Now
EplusSql$tabular_data()
keeps the original column order whenwide
isTRUE
(#186). - Fix EnergyPlus installation on macOS (#193).
- Fix parallel simulations on macOS (#194).
- Now
eplus_config()
will always return the expanded EnergyPlus path (#196). - Now
group_job()
will return more informative error messages when input containsIdf
objects that havn't been saved (#204). - Fix error in
EplusGroupJob$run()
when customdir
is specified (#205).
eplusr v0.11.0
New features
- A new method
$models()
has been added inParametricJob
class. It returns a
list of all parametric models generated after a measure has been applied. If
no measure is applied,NULL
is returned (#59). Thanks @yidan1214 for this
feature request. - A new method
$save()
has been added inParametricJob
class. It saves all
generated parametric models and weather file into specified directory. You can
useseparate
argument to determine whether each model is to be saved in a
separate folder (#58). Thanks @yidan1214 for this feature request. - New arguments
align
andall
have been added to$to_table()
method in
Idf
class. Settingalign
toTRUE
will make sure that all returned object
data per class have the same field number. The number of fields is the same as
the object that have the most fields among those you specified. Settingall
toTRUE
will return all available fields in that class definition in IDD. - Now the
weather
argument in$run()
method inIdf
class can be set to
NULL
. If so, design-day-only simulation is performed. Note that this needs
at least oneSizing:DesignDay
object exists in theIdf
object (#80). - Similar as above, the
epw
argument ineplus_job()
andparam_job()
can
also beNULL
to force a design-day-only simulation. - Now
$status()
inParametricJob
class includes a new member named
job_status
which is data.table containing detailed information on each
simulation job (#70). - Now
$print()
inParametricJob
will give you more informative details on
each simulation job status, especially whenwait
is set toFALSE
in
$run()
. - A new column
index
is added in the returnedRddFile
andMddFile
. It
contains index of each variable. - Two new methods
$read_rdd()
and$read_mdd()
have been added inEplusJob
class.$read_rdd()
and$read_mdd()
which parse the simulation RDD and MDD
file (#84). - Two new function
rdd_to_load()
andmdd_to_load()
have been added, which
formatRddFile
andMddFile
into a data.table in acceptable format for
$load()
method inIdf
class. - Similar as
Output:SQLite
, when$run()
inIdf
object is called, an object
in classOutput:VariableDictionary
is automatically created withKey Field
beingIDF
(#85). - A new argument
echo
has been added in$run()
inIdf
,EplusJob
and
ParametricJob
class. It is only applicable whenwait
isTRUE
. IfFALSE
,
the simulation will be run silently without echoing any message from
EnergyPlus. - A new function
transition()
has been added. Basically it is an
R implementation of IDFVersionUpdater. Currently the lowest version of IDF is
v7.2. It should be much faster than IDFVersionUpdater. - Now the way of find IDD file has been changed to take advantage of IDD files
distributed along with IDFVersionUpdater. This update makes it possible to
directly read IDF of most versions without downloading corresponding IDD. - A new option
autocomplete
with default value beinginteractive()
has been
added. It is used to control whether to turn on autocompletion on class and
field names. Underneath,makeActiveBinding()
is used to add or move active
bindings inIdf
andIdfObject
s to directly return objects in class or
field values. This will make it possible to dynamically show current class
and field names in both RStudio and in the terminal. However, this process
does come in with a penalty on the performance. It can make adding or
modifying large mounts of [Idf] and [IdfObject]s extremely slow. Default value
make sure autocompletion works in interactive mode. - A new syntax
class := list(field = value)
in$set()
has been added. Note
the use of:=
instead of=
. The main difference is that, unlike=
, the
left hand side of:=
should be a valid class name in currentIdf
object.
It will set the field of all objects in specified class to specified value. - A new function
dt_to_load()
has been added, which formats a data.table from
Idf$to_table()
andIdfObject$to_table()
withwide
being toTRUE
into a
data.table in acceptable format forIdf$load()
method andIdf$update()
method. - Now
read_epw()
support EPW files with non-integer timezones fail to load
(#113).$location()
inEpw
class also support setting the timezone to
non-integer one. - A new method
$parent()
has been added inIddObject
andIdfObject
class
to get parentIdd
andIdf
object, respectively (#76). - Simulation status will be updated in the progress message in
run_multi()
and
$run()
method inParametricJob
class, instead of only showingCOMPLETED
(#124, #125). EplusJob
class now will parse and store input IDF and EPW. It will also add
Output:SQLite
andOutput:VariableDictionary
object if necessary. This
change makes sure usingEplusJob
can always have the ability to extract
simulation results instead of totally relying on the input IDF (#118).- As a result of previous change, the
$run()
method inEplusJob
now takes
the same parameters as$run()
method inIdf
, i.e. you can also change the
EPW file to use and output directory usingepw
anddir
argument (#118). - A new class
EplusGroupJob
is added. It can be created using
group_job()
.EplusGroupJob
provides a wrapper ofrun_multi()
to group
multiple EnergyPlus simulations together for running and collecting different
EnergyPlus outputs (#117). - A new parameter named
.empty
has been added in$set()
,$insert()
,
$load()
,$update()
,$paste()
methods inIdf
class and$set()
method
inIdfObject
class (#133). - EnergyPlus v9.2 support has been added (#138).
- Now required objects and unique objects can be deleted in
$del()
when
.force
is set toTRUE
(#149). - Now for Windows and Linux,
install_eplus()
supports to install EnergyPlus to
your home directory or your customized directory without requiring
administrator privileges (#167).Please see# install to your home directory install_eplus(8.8, local = TRUE) # install to custom directory install_eplus(8.8, local = TRUE, dir = "~/MyPrograms")
?install_eplus
for details. - All documentation in R6 classes have been update thanks to roxyten2 R6 support (#156).
- Deprecated methods in each class have all been remove (#156).
- New parameter
case
has been added in
EplusSql$tabular_data()
. Similar likecase
parameter in
EplusSql$report_data()
, it lets you to add acase
column to indicate the
case of simulation. This brings some changes in the returned results of
EplusSql$tabular_data()
. Compared to previous version, there will always be
acase
column, unlesscase
parameter is set toNULL
(#182). - New parameter
wide
andstring_value
have been added in
EplusSql$tabular_data()
andEplusGroupJob$tabular_data()
. Whenwide
is
TRUE
, each table will be converted into the similar format as it is shown in
EnergyPlus HTML output file. And whenstring_value
isFALSE
, values in
possible numeric columns are converted into numbers (#182).
Bug fixes
- Fix the error in
$set()
when$add_unit()
is performed in Epw class (#56). - Now IDF file located in a folder whose name contains spaces can be
successfully simulated (#60). Thanks @yidan1214 for reporting this bug. - Now
$ref_to_object()
and$ref_by_object()
can give correct results when
class
argument is specified. - Now IDD version lower than 8.3 can successfully be downloaded and parsed.
- Now
ErrFile
objects returned from$errors()
inParametricJob
can be
successfully printed. - Now one-line empty objects, e.g.
"Output:Surfaces:List,,;\n"
, can be
successfully parsed (#88). - Fix the error of
$to_table()
when no arguments were provided (#103). - The references of newly added extensible fields are now correctly handled
(#109). $update()
now works for classSchedule:Compact
with type checking on
(#111).- Fix the error in
$ref_to_node()
when no objects in specified class is found
(#110). - Now
leading
andsep_at
argument work as expected inIdf$to_string()
(#160). - Now
Idf$to_table()
matches object names case-insensitively (#157). - One-line-formatted
Version
object with trailing comments can be successfully
parsed, e.g.Version, 8.6; !- ABC
(#170). - Better support for old IDD (#183).
Minor changes
- Describe on how the arguments are matched in
$apply_measure()
(#57). Thanks
@yidan1214 for pointing this out. - Now the
echo
argument inrun_idf()
andrun_multi()
will only take effect
whenwait
isTRUE
. This makes it possible to remove the dependency on the
later package. - All messages can be suppressed by setting the
verbose_info
option to
FALSE
. $delete()
method inEpw
class has been deprecatd in flavor of$del()
to
provide a similar API asIdf
class.- When
all
isTRUE
in$report_data()
inEplusSql
,EplusJob
and
ParametricJob
class, an extra columnenvironment_period_index
is returned
which contains the indices of each run period environment. This helps to
distinguish different run period environment when no name is assigned. param_job()
now gives more informative error message if inputIdf
object
andEpw
object is not created from a local file (#112).param_job()
now preserve parametric model names from argument.names
in
$apply_measure()
instead of callingmake.name()
to convert them into valid
R names (#115).$save()
works if weather was not given during initialization for
ParametricJob
(#120).- Required fields in
IdfObject
are now marked with*
when printing (#135).
eplusr v0.10.4
This is a bug fix release which make sure eplusr is compatible with new version of R6 #164. No new feature is included.
eplusr v0.10.3
New features
- Now you can get autocompletion of class names of
Idd
andIdf
objects, and
field names ofIdfObject
class in RStudio. [[<-.Idf
and$<-.Idf
now can work with unique-object classes as well.- A new method
$update()
is added inIdf
class which makes it possible to
directly modify existing objects using character vectors and data.frames. - A new argument
wide
is added in$to_table()
method inIdf
class,
similar to$to_table()
method inIdfObject
class. - New function
read_rdd()
andread_mdd()
are added to help to directly parse
.rdd
and.mdd
file. - Now
$rename()
will not give an error if input name is the same as the old
one. - Now new method
$version()
is added inEplusJob
andParametricJob
class,
which returns the version of IDF it uses. - A new argument
by_group
is added in$class_index()
,$class_name()
in
Idd
class and$class_name()
inIdf
class. IfTRUE
, a list is returned
which separate class indexes/names by the group they belong to. - Recursive relation support has been added to
$object_relation()
inIdf
class, and$value_relation()
,$ref_to_object()
,$ref_by_object()
in
IdfObject
class. All type of relations can be searched recursively by
setting newly added argumentrecursive
toTRUE
. There is also a new
argument calleddepth
to control how many recursive searching steps should
be performed. - Add Node support into
$value_possible()
inIdfObject
class, i.e. if
specified fields are nodes, all nodes are returned in thesource
component. - Now component node references support has been added. A new option
"node"
has been added to thedirection
argument in$object_relation
,
$objects_in_relation()
inIdf
class and$value_relation()
inIdfObject
class. New methods$ref_to_node()
and$has_ref_node()
have been added in
IdfObject
class. Now$has_ref()
inIdfObject
class will returnFALSE
only when all$has_ref_to()
,$has_ref_by()
and$has_ref_node()
are all
FALSE
.
Bug fixes
- Now all internal data, specifically all
data.table
s are correctly copied
when calling$clone()
inIdf
andEpw
class. $add()
method and other methods that modify field values can correctly
convert field values to numbers if necessary.- Fix the error that holiday header got overwritten (#43).
- Fix EPW date parsing error (#42).
- Fix warnings in parsing
.err
file when there is no warning nor error. - Fix
$errors()
error inParametricJob
class. - The year of returned date time from
$data()
,$abnormal_data()
and
$redundant_data()
now have correct values (#44). - Reset year after checking datetime in
read_epw()
(#44). - Add field name in input before validation in
paste()
(#45). - Fix datetime calculation in
$report_data()
inEplusSql
(#46). - Update doc on EnergyPlus time nodation (#47).
- Fix EPW design condition parsing error when
hours_8_to_4_12.8_20.6
is zero. - Now recurring errors in
.err
file are parsed correctly inErrFile
. - Handle large value references in
get_value_reference_map()
(#50). - Fix the error when extract numeric default values using
$value_possible()
(#51). - Fix the error that
.ref_to
argument in$del()
inIdf
class did not take
effect. - Fix field deletion in
$update()
inIdf
class. - Fix reference parsing error with mixed source types.
- External files used in
Schedule:File
class are now only copied once when
copy_external
isTRUE
in$save()
inIdf
class. - When
.ref_to
or.ref_by
isTRUE
in$del()
inIdf
class, objects
whose class names are referenced by input will not be deleted, except all
objects in referenced class are detected by field value reference or there is
only one object in referenced class. - Objects detected using
.ref_to
and.ref_by
in$del()
inIdf
class can
now be successfully deleted, even if they still have relations with other
objects. - Now invalid input object name is kept as it is, instead of converted to lower
case. - Now
$value_possible()
returns correct source values when fields refer to
class names rather than field values. - Now
$del()
method inIdf
class works correctly with multiple inputs. - Now trailing comments in IDF will be removed in
read_idf()
. - Now
$to_table()
inIdf
class will keep the input object order. - Now
$set()
method inIdfObject
can successfully delete fields when field
values are set toNULL
. - Now
$run()
method inIdf
will use the correct model path to run
simulation.
Minor changes
- Change message types in
$ref_to_object()
and$ref_by_object()
inIdfObject
. - Now
ErrFile
is stored as adata.table
with additional attributes instead
of a list. - Now when argument
.unqiue
isTRUE
in$insert()
,$load()
and$paste()
inIdf
class, object comparison are performed case-insensitively. - A new default value
"."
ofdir
indownload_idd()
is add.
eplusr v0.10.2
This is a patch update mainly to fix CRAN check errors on a strict Latin locale, with a bug fix.
Bug fixes
$report_data()
method in EplusSql class now correctly returns data if even if key_value is not given (#37)
eplusr v0.10.1
This is a patch update mainly to fix CRAN check errors, with few bug fixes.
Bug fixes
$set()
method inIdf
class now does not try to convert all input strings
into numbers (#32)$del()
method inIdf
class now also respects validation settings.
You should be able to delete any object if current validation level does not
include reference checking$del()
method inIdf
class now will only print object relation only if
.ref_to
or.ref_by
isTRUE
- Now
$set()
method inEpw
class will correctly reset leap year flag in the
header (#32) - Now
$save()
method inEpw
class returns the path of saved file invisibly
eplusr v0.10.0
eplusr v0.10.0 introduces dozens of improvements, unfortunately also has some
break changes. Detailed updates per class are as follow:
Idd
Class
-
$object()
now takes a single class name and returns anIddObject
. -
New method
$objects()
is added as the successor of$object()
in previous
versions. -
New method
$object_relation()
and$objects_in_relation()
are added to get
all objects that have relation (one refer to others or one referred by others). -
$object_in_group()
has been deprecated in flavor of$objects_in_group()
. -
New method
$to_table()
and$to_string()
are added to help easily extract
internal IDD data indata.table
format and string format respectively. -
$clone()
method is now deprecated. -
S3 method
str.Idd()
,format.Idd()
are added.
IddObject
Class
-
A constructor
idd_object()
has been added to help directly create
IddObject
. It takes a parent IDD version or anIdd
object and a valid
class name or class index, e.g.idd_object(8.8, "Material")
,
idd_object(use_idd(8.8), "Construction")
-
New method
$version()
is added to extract the version of parent IDD. -
New method
$field_relation()
is added to extract the field relation in
current class with other class fields. -
New method
$has_ref()
,$has_ref_to()
, and$has_ref_by()
are added to
help to detect field relations -
New method
$is_real_field()
is added to detect if specified fields should
have values of real numbers but not integers. -
New method
$has_ref()
,$has_ref_by()
,$has_ref_to()
are added to detect
if specified fields refer to other fields or can be referred by other field in
other classes. -
New method
$to_table()
and$to_string()
are added to help easily extract
internal IDD data indata.table
format and string format respectively. -
field_possible()
now does not needIdfObject
data to run. -
Argument
lower
in$field_name()
has been deprecated. -
$field_reference()
inIddObject
class has been deprecated in flavor of
$field_relation()
. -
A
brief
argument is added in$print()
with default value ofFALSE
. If
TRUE
, only the class name of theIddObject
is printed. -
$clone()
method is now deprecated. -
S3 method
format.IddObject()
,as.character.IddObject()
and
str.IddObject()
are added which calls$to_string()
and$print()
.
Idf
Class
-
An argument
sorted
is added in$class_name()
and$group_name()
to control
whether to sort the returned value according to the occurrence in IDD or not. -
$definition()
now only accepts one class name and returns a single
IddObject
, not a list ofIddObject
. -
$object()
now takes a single object ID or name and returns anIdfObject
. -
New method
$objects()
is added as the successor of$object()
in previous
versions. -
New method
$object_unique()
is added which returns anIdfObject
in
unique-object class, e.g.SimulaSimulationContrl
. This makes it easy to
directly extract and modify those objects, e.g.
model$object_unique("SimulationContrl")$set(...)
. -
$object_in_class()
now is deprecated in flavor of$objects_in_class()
. -
New method
$objects_in_group()
is added to get all objects in specified group. -
$search_object()
,$search_value()
and$replace_value()
now can take same
arguments asbase::grepl()
to further control the way it searches objects. -
$replace_value()
now will perform validations when replacing value. -
Now all methods in
Idf
class that returnIdfObject
s will not convert
object names into valid R names. The former conversion behavior is unnecessary
and a little bit confusing. -
$add_object()
,$set_object()
,$del_object()
,$ins_object()
and
$del_object()
are now all deprecated. Please use$add()
,$set()
,
$del()
andinsert()
instead, which provide much cleaner syntax. -
New method
$rename()
is added which helps to modify only object names. -
New method
$paste()
is added which will parse contents that copied from IDF
Editor using theCopy Obj
button and directly insert them into currentIdf
. -
$validate()
and$is_valid()
now accepts an argumentlevel
. Also, a
helpercustom_validate()
is added to customize what kind of validations to
check. -
$string()
is deprecated in flavor of$to_string()
inIdf
class. -
New method
$to_table()
is added which can extract object data into a
data.table
. -
The default value of
deep
argument in$clone()
method is set toTRUE
. As
in almost all cases, a total cloned object is desired when calling$clone()
. -
plain
argument is deprecated in$print()
in IDF class. Because the same
thing can be achieved using$to_string()
andbase::cat()
. New argument
zoom
andorder
are added, which give more control on how detailed should
the model be printed. -
New method
$object_relation()
and$objects_in_relation()
are added to
extract all objects in relation.
IdfObject
Class
-
New constructor
idf_object()
is added. -
New method
$version()
is added to get the underlying version of IDD. -
$get_comment()
,$get_value()
now have been deprecated in flavor of
$comment()
and$value()
-
$comment()
(former$get_comment()
) now returnsNULL
if the object does
not have any comment. -
$set_value()
now has been deprecated in flavor of$set()
-
$possible_value()
now has been deprecated in flavor of$value_possible()
. -
$ref_from_object()
and$has_ref_from()
now have been deprecated in flavor
of$ref_to_object()
and$has_ref_to()
. -
$has_ref_by()
,$has_ref_to()
and$has_ref()
now return a logical vector
of the same length as field numbers. -
$validate()
and$is_valid()
now accepts an argumentlevel
. Also, a
helpercustom_validate()
is added to customize what kind of validations to
check. -
$string()
and$table()
are now deprecated in flavor of$to_string()
and
$to_table()
. -
$clone()
method is now deprecated. -
S3 methods
format.IdfObject()
,as.character.IdfObject()
and
str.IdfObject()
are added, which calls$to_string()
and$value()
.
Epw
Class
-
Epw
class has been totally rewritten which provides much more
functionalities. Please refer to package documentation for details.
All headers are parsed and can be retrieve inEpw
class. -
The default value of
deep
in$clone()
has been change toTRUE
.
EplusSql
Class
-
New method
$path_idf()
is added to return the parent IDF file path. -
New arguments
period
,month
,day
,hour
,minute
,interval
,
simulation_days
,day_type
andenvironment_name
are added in
$report_data()
which provide extra subsetting on the SQL file. -
New arguments
report_name
,report_for
,table_name
,column_name
and
row_name
are added in$tabular_data()
which provide extra subsetting on
the SQL file. -
$clone()
method is now deprecated.
EplusJob
Class
-
New method
$path()
is added to return the path of IDF and/or EPW file of
the job. -
New method
$list_table()
,$read_table()
are added which provide the same
functionalities as they are inEplusSql
class. -
$clone()
is now deprecated. -
New arguments
period
,month
,day
,hour
,minute
,interval
,
simulation_days
,day_type
andenvironment_name
are added in
$report_data()
which provide extra subsetting on the SQL file. -
New arguments
report_name
,report_for
,table_name
,column_name
and
row_name
are added in$tabular_data()
which provide extra subsetting on
the SQL file. -
$clone()
method is now deprecated.
ParametricJob
Class
-
New arguments
force
andcopy_external
are added in$run()
which have the
same effect as in$run()
method inIdf
class. -
New arguments
period
,month
,day
,hour
,minute
,interval
,
simulation_days
,day_type
andenvironment_name
are added in
$report_data()
which provide extra subsetting on the SQL file. -
New arguments
report_name
,report_for
,table_name
,column_name
and
row_name
are added in$tabular_data()
which provide extra subsetting on
the SQL file. -
$clone()
method is now deprecated.
Miscellaneous
-
Function
read_err()
is added which takes a path of an.err
file, parses it
and returns anErrFile
object. -
Functions
is_eplus_ver()
,is_idd_ver()
,is_eplus_path()
,is_idd()
,
is_idf()
,is_iddobject()
,is_idfobject()
andis_epw()
are now exported. -
Function
custom_validate()
andlevel_checks()
are added to customize
validation. -
Right now, all returned object and field names will remain what they are as in
the IDF, instead of converting them intounderscore
style names in the
returned lists. -
The
num_digits
option has been deprecated as formatting of numeric fields
are now handled by R itself. -
Error will be given instead of warning if there is no build tag or multiple
build tags found in input IDD. -
eplusr_option()
accepts custom validate level using newly-added function
custom_validate()
.
v0.9.4
New features
- Now you can directly download EnergyPus Weather File (.epw) and Design Day
File (.ddy) using new functiondownload_weather()
. It takes a regular
expression as input, searches through EnergyPlus weather data base (stored
in this package), download corresponding files and return the saved paths.
Below are some examples:- Search locations that contains string
"los angeles"
and"tmy"
, return a
menu to select which one(s) to download. Once selected, download both
corresponding weather file(s) and design day file(s):download_weather("los angeles.*tmy", type = "all", ask = TRUE)
- Same as above, expect that all files will be renamed to
la.epw(ddy)
,
la_1.epw(ddy)
,la_2.epw(ddy)
:download_weather("los angeles.*tmy", filename = "la", type = "all", ask = TRUE)
- Search locations that contains string
"beijing"
and"cswd"
. If no more
than 3 results found, directly download all weather files and save them to
temperory directory.download_weather("beijing.*cswd", dir = tempdir(), type = "epw", ask = FALSE, max_match = 3)
- Search locations that contains string
Minor changes
- Now
clean_wd()
is run before every call to EnergyPlus.
Bug fixes
-
$clone()
method has been refactored forIdf
andIdd
class. This fix the
issue that internal shared environments were not cloned in version 0.9.3. -
Fix the error that
$save()
and$string()
inIdf
class did not respect
format
argument. -
Fix the error that
$apply_measure()
inParametricJob
class did not
respect.names
argument.